Cs-contrib.unkrig.de: Difference between revisions

From unkrig.de
Jump to navigation Jump to search
 
(48 intermediate revisions by the same user not shown)
Line 1: Line 1:
<meta name="keywords" content="checkstyle, checks, filters, quickfixes"></meta>
<meta name="description" content="Custom checks, filters and quickfixes for checkstyle and eclipse-cs"></meta>
= Introduction =
= Introduction =
This project adds custom checks, filters and for [http://checkstyle.sourceforge.net/ CheckStyle] and [http://eclipse-cs.sourceforge.net/ Eclipse-CS].
This project adds custom checks, filters and quickfixes for [http://checkstyle.sourceforge.net/ CheckStyle] and [http://eclipse-cs.sourceforge.net/ Eclipse-CS].


Install the ECLIPSE plug-in from this update site:
This project uses the [[Cs-doclet|CS doclet]] (internally) to generate its CheckStyle and eclipse-cs metadata files.
    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/ here] and put it onto CheckStyle's classpath.
Cs-contrib 1.2.21+ requires the CheckStyle core version 8.21+, because there was an (accidential) breaking change in that version.


The [http://cs-contrib.unkrig.de/CHANGELOG.txt change log] is also available.
= Download =


= Checks =
Install the ECLIPSE plug-in from this update site:
 
     http://cs-contrib.unkrig.de/update
== Check 'de.unkrig.Alignment' ==
Checks that Java elements are vertically aligned in immediately consecutive lines (and only there!).
 
public class Main {
    int    <font color="red">x</font> = 7;
    double <font color="red">xxx</font> = 7.0;              // Aligned field names
    int y      <font color="red">=</font> 7;
    double yyy <font color="red">=</font> 7.0;              // Aligned field initializers
    public static void meth1(
        String[] <font color="red">p1</font>,
        int      <font color="red">p2</font>                // Aligned parameter names
    ) {
        int    <font color="red">x</font> = 7;\n\
        double <font color="red">xxx</font> = 7.0;          // Aligned local variable names
        int y      <font color="red">=</font> 7;\n\
        double yyy <font color="red">=</font> 7.0;          // Aligned local variable initializers
        y  <font color="red">=</font> 8;
        yyy <font color="red">=</font> 8.0;                // Aligned assignments
        switch (x) {
        case 1: <font color="red">break;</font>
        default: <font color="red">x++;</font> return;     // Aligned case groups statements
        }
    }
    public static void <font color="red">meth2</font>()  <font color="red">{}</font>
    public void        <font color="red">meth33</font>() <font color="red">{}</font> // Aligned method names and bodies
}
 
'''Properties:'''
;applyToFieldName                : Check alignment of field names in declarations.
;applyToFieldInitializer        : Check alignment of '=' in field declarations.
;applyToLocalVariableName        : Check alignment of local variable names in declarations.
;applyToLocalVariableInitializer : Check alignment of '=' in local variable declarations.
;applyToParameterName            : Check alignment of constructor and method parameter names.
;applyToMethodName              : Check alignment of method (and constructor) names in declarations.
;applyToMethodBody              : Check alignment of '{' in method (and constructor) declarations.
;applyToCaseGroupStatements      : Check alignment of first statement in case groups.
;applyToAssignments              : Check alignment of '=' in assignments.
 
== Check 'de.unkrig.InnerAssignment' ==
Assignments in expressions must be parenthesized.
 
'''Quickfixes:'''
;Parenthesize assignment : Parenthesize assignment to indicate that it is intentional
 
== Check 'de.unkrig.NameSpelling' ==
Checks that the names of Java elements match a given pattern.
 
'''Properties:'''
;elements          : Elements to apply this check to
;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' ==
Enhanced version of "ParenPad": NOSPACE now allows '( // ...'.
 
<span style="color: red">'''This check is superseded by 'de.unkrig.Whitespace'.'''</span>
 
'''Properties:'''
;option : Whether space is required or forbidding
;tokens : Tokens to check
 
== 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
 
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 <code>allowEmptyMethods</code>, <code>allowEmptyConstructors</code>, <code>allowEmptyCatches</code> and <code>allowEmptyTypes</code> properties.
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.


'''Properties:'''
A [http://cs-contrib.unkrig.de/CHANGELOG.txt change log] is also available.
;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' ==
= Documentation =
Statements must be uniformly wrapped and indented.


'''Properties:'''
The [http://cs-contrib.unkrig.de/csdoc/ documentation for the cs-contrib checks, filters and quickfixes] was generated by the [http://doclet.unkrig.de CS doclet]
;basicOffset : How many spaces to use for new indentation level


'''Quickfixes:'''
= License =
;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' ==
CS-CONTRIB.UNKRIG.DE is published under the "[[New BSD License]]".
Checks that no constructor calls the zero-parameter superconstructor.


'''Quickfixes:'''
= Source Code =
;Remove : Remove redundant invocation of zero-parameter superconstructor


= Filters =
The source code of <code>cs-contrib</code> (the CheckStyle extension) is on GITHUB:


== Filter 'de.unkrig.SuppressionLine' ==
    https://github.com/aunkrig/cs-contrib/
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 source code of the Eclipse plugin (<code>.core</code>, <code>.branding</code>, <code>.feature</code>, <code>.updatesite</code>) is also on GITHUB:
* 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:'''
    https://github.com/aunkrig/cs-contrib.branding
;offFormat      : Line pattern to trigger filter to begin suppression
    https://github.com/aunkrig/cs-contrib.core
;onFormat        : Line pattern to trigger filter to end suppression
    https://github.com/aunkrig/cs-contrib.core_test
;checkNameFormat : Check name pattern to suppress
    https://github.com/aunkrig/cs-contrib.feature
;messageFormat  : Message pattern to suppress
    https://github.com/aunkrig/cs-contrib.updatesite
;moduleIdFormat  : Module ID pattern to suppress
    https://github.com/aunkrig/cs-contrib_dist

Latest revision as of 12:25, 19 January 2022

<meta name="keywords" content="checkstyle, checks, filters, quickfixes"></meta> <meta name="description" content="Custom checks, filters and quickfixes for checkstyle and eclipse-cs"></meta>

Introduction[edit]

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

This project uses the CS doclet (internally) to generate its CheckStyle and eclipse-cs metadata files.

Cs-contrib 1.2.21+ requires the CheckStyle core version 8.21+, because there was an (accidential) breaking change in that version.

Download[edit]

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.

Documentation[edit]

The documentation for the cs-contrib checks, filters and quickfixes was generated by the CS doclet

License[edit]

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

Source Code[edit]

The source code of cs-contrib (the CheckStyle extension) is on GITHUB:

   https://github.com/aunkrig/cs-contrib/

The source code of the Eclipse plugin (.core, .branding, .feature, .updatesite) is also on GITHUB:

   https://github.com/aunkrig/cs-contrib.branding
   https://github.com/aunkrig/cs-contrib.core
   https://github.com/aunkrig/cs-contrib.core_test
   https://github.com/aunkrig/cs-contrib.feature
   https://github.com/aunkrig/cs-contrib.updatesite
   https://github.com/aunkrig/cs-contrib_dist