Cs-contrib.unkrig.de: Difference between revisions

From unkrig.de
Jump to navigation Jump to search
Line 24: Line 24:
:Verifies that assignments in expressions are parenthesized.
:Verifies that assignments in expressions are parenthesized.


== Check 'de.unkrig.NameSpelling' ==
;[['de.unkrig.NameSpelling' check|<code><de.unkrig.NameSpelling></code>]]
 
:Verifies that the names of Java elements match, respectively no not match given patterns.
'''Description:'''
 
Checks that the names of Java elements match resp. no not match given patterns.
 
This check makes name checking more powerful, compared with CheckStyle's standard "Naming Conventions" checks:
* Arbitrary sets of required/forbidden modifiers can be specified
* Name patterns can not only be ''enforced'' but also be ''forbidden'' (useful, e.g., to forbid certains styles of hungarian notation)
* Adds the possibility to check the names of annotations, annotation fields, enums and enum constants (which are missing from the standard checks)
 
This check supersedes all of the CheckStyle standard "Naming Conventions" checks:
* Abstract Class Name
* Class Type Parameter Name
* Constant Names
* Local Final Variable Names
* Local Variable Names
* Member Names
* Method Names
* Method Type Parameter Name
* Package Names
* Parameter Names
* Static Variable Names
* Type Names
 
'''Properties:'''
;elements          : Elements to apply this check to (annotation, annotation_field, catch_parameter, class, enum, enum_constant, for_variable, foreach_variable, field, formal_parameter, interface, local_variable, method, package and/or type_parameter)
;requiredModifiers : Apply only to declarations which have these modifiers
;missingModifiers  : Apply only to declarations which do not have these modifiers
;option            : Whether to ''require'' or ''forbid'' that names match
;format            : Pattern to match the name against


== Check 'de.unkrig.ParenPad' ==
== Check 'de.unkrig.ParenPad' ==

Revision as of 08:30, 4 March 2014

Introduction

This project adds custom checks, filters and quickfixes for CheckStyle and Eclipse-CS.

Download

Install the ECLIPSE plug-in from this update site:

    http://cs-contrib.unkrig.de/update

If you're only interested in the checks (and not the ECLIPSE plug-in), you can download the most recent 'de.unkrig.cs-contrib.core_*.jar' file from

    http://cs-contrib.unkrig.de/update/plugins/

and put it on CheckStyle's classpath.

A change log is also available.

Checks and Quickfixes

<de.unkrig.Alignment>
Verifies that Java elements are vertically aligned.
<de.unkrig.CppCommentAlignment>
Verifies that C++ comments ('// ...') are correctly aligned.
<de.unkrig.InnerAssignment>
Verifies that assignments in expressions are parenthesized.
<de.unkrig.NameSpelling>
Verifies that the names of Java elements match, respectively no not match given patterns.

Check 'de.unkrig.ParenPad'

Enhanced version of "ParenPad": NOSPACE now allows '( // ...'.

This check is superseded by 'de.unkrig.Whitespace'.

Properties:

option
Whether space is required or forbidding
tokens
Tokens to check

Check 'de.unkrig.Whitespace'

Checks that tokens are (or are not) preceded with (and/or followed by) whitespace.

This check supersedes all of CheckStyle's whitespace-related checks:

  • Generic Whitespace
  • Empty For Initializer Pad
  • Empty For Iterator Pad
  • No Whitespace After
  • No Whitespace Before
  • Method Parameter Pad
  • Paren Pad
  • Typecast Paren Pad
  • Whitespace After
  • Whitespace Around

, as well as

  • de.unkrig.ParenPad
  • de.unkrig.WhitespaceAround

Properties

whitespaceBefore
The Java elements which must be preceded with whitespace (or a line break)
noWhitespaceBefore
The Java elements which must not be preceded with whitespace (or are preceded with a line break)
whitespaceAfter
The Java elements which must be followed by whitespace (or a line break)
noWhitespaceAfter
The Java elements which must not be followed by whitespace (or are followed by a line break)

Java Elements

The properties described above represent the "Java elements" to which each property applies. "Java elements" correspond roughly with the Java tokens, but some Java tokens can appear in different contexts where they have different meanings. The latter case is represented by multiple Java elements which relate to the same Java token, but to different contexts (see example below).

The list of Java elements is long and mostly self-explanatory; for illustration, the first few Java elements are listed here:

abstract
abstract class MyClass { ... }
abstract myMethod(...) { ... }
and__expr
a & b
and__type_bound
<T extends MyClass & MyInterface>
and_assign
a &= b
assert
assert x == 0;
assert x == 0 : "x not zero";
...

The tokens 'abstract', '&=' and 'assert' can appear in only one context each, while the token '&' has two different meanings. Thus there are two Java elements starting with 'and' and two underscores. (The double underscore separates the token name from the context name.)

Notice that 'and_assign' ('&=') and 'and' ('&') are different tokens which you can recognize by the single underscore in 'and_assign'.

Check 'de.unkrig.WhitespaceAround'

Checks that a token is surrounded by whitespace. Empty constructor bodies, method bodies, catch blocks and type bodies of the form

This check is superseded by 'de.unkrig.Whitespace'.

public MyClass() {}           // empty constructor body

public void func() {}         // empty method body

public void func() {
    new Object() {
        // ...
    }.hashCode();             // No space between '}' and '.' -- always allowed
    try {
        // ...
    } catch {}                // empty catch block
}

interface MyInterface {}      // emtpy type body

may optionally be exempted from the policy using the allowEmptyMethods, allowEmptyConstructors, allowEmptyCatches and allowEmptyTypes properties.

Properties:

allowEmptyConstructors
allow empty constructor bodies
allowEmptyMethods
allow empty method bodies
allowEmptyCatches
allow empty catch blocks
allowEmptyTypes
allow empty class and interface bodies
tokens
Tokens to check

Check 'de.unkrig.WrapAndIndent'

Statements must be uniformly wrapped and indented.

Properties

basicOffset
How many spaces to use for new indentation level

Quickfixes

Wrap line
Wrap this line at the correct position
Join lines
Append this line to the previous
Correct indentation
Correct the indentation of this line

Check 'de.unkrig.ZeroParameterSuperconstructorInvocation'

Checks that no constructor calls the zero-parameter superconstructor.

Quickfixes:

Remove
Remove redundant invocation of zero-parameter superconstructor

Filters

Filter 'de.unkrig.SuppressionLine'

Events (i.e. CheckStyle warnings) are switched off by a 'magic line' ('offCommentFormat') or back on by another 'magic line' ('onCommentFormat').

After the 'off' magic line, events do not show if at least one of the following conditions is true:

  • The 'checkNameFormat' (if set) is found in the check name (e.g. 'de.unkrig.cscontrib.checks.Alignment')
  • The 'messageFormat' (if set) is found in the event message
  • The 'moduleIdFormat' (if set) is found in the ID of the module that generated the event

This filter can only work if a 'FileContentsHolder' module exists in the configuration.

Properties:

offFormat
Line pattern to trigger filter to begin suppression
onFormat
Line pattern to trigger filter to end suppression
checkNameFormat
Check name pattern to suppress
messageFormat
Message pattern to suppress
moduleIdFormat
Module ID pattern to suppress

License

CS-CONTRIB.UNKRIG.DE is published under the "New BSD License".

Source Code

The source code is available through SVN:

   https://svn.code.sf.net/p/loggifier/code