CheckStyle: Difference between revisions

From HaFrWiki42
Jump to navigation Jump to search
Line 127: Line 127:
|-
|-
|
|
{|border="1" style="width:950px;font-size:8pt;height:80%;" cellpadding="1" cellspacing="0" align="left"  
{|border="1" style="width:1250px;font-size:8pt;height:80%;" cellpadding="1" cellspacing="0" align="left"  
|-
|-
! style="width:12%" bgcolor="#cfcfcf" align="left"   |CheckStyle
! style="width:12%" bgcolor="#cfcfcf" align="left"     | CheckStyle
! style="width:08%" bgcolor="#cfcfcf" align="center" |HTML-Size<br>Kb
! style="width:08%" bgcolor="#cfcfcf" align="center" | HTML-Size<br>Kb
! style="width:08%" bgcolor="#cfcfcf" align="center" |HTML<br>Reduction %
! style="width:08%" bgcolor="#cfcfcf" align="center" | HTML<br>Reduction %
! style="width:08%" bgcolor="#cfcfcf" align="center" |HTML-Lines<br>K
! style="width:08%" bgcolor="#cfcfcf" align="center" | HTML-Lines<br>K
! style="width:08%" bgcolor="#cfcfcf" align="center" |Line<br>Reduction %
! style="width:08%" bgcolor="#cfcfcf" align="center" | Line<br>Reduction %
! style="width:56%" bgcolor="#cfcfcf" align="left"   |Description
! style="width:56%" bgcolor="#cfcfcf" align="left"     | Description
|-
|-
|valign="top"    |All
|valign="top"    |All
Line 162: Line 162:
| align="center" |37,378
| align="center" |37,378
| align="center" |0.05%
| align="center" |0.05%
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.MethodParamPadCheck''<br>tokens: CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF, SUPER_CTOR_CALL
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.MethodParamPadCheck''<br>Tokens: CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF, SUPER_CTOR_CALL
|-
|-
|valign="top"    |No whitespace After  
|valign="top"    |No whitespace After  
Line 169: Line 169:
| align="center" | 36,795
| align="center" | 36,795
| align="center" | 0.62%
| align="center" | 0.62%
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck''<br>tokens: ARRAY_INIT, BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck''<br>Tokens: ARRAY_INIT, BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS
|-
|-
|valign="top" |No whitespace Before  
|valign="top" |No whitespace Before  
Line 176: Line 176:
| align="center" |36.773
| align="center" |36.773
| align="center" |0.03%
| align="center" |0.03%
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck''<br>tokens: SEMI, POST_DEC, POST_INC
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck''<br>Tokens: SEMI, POST_DEC, POST_INC
|-
|-
|valign="top"    |No whitespace After  
|valign="top"    |No whitespace After  
Line 183: Line 183:
| align="center" |25,286
| align="center" |25,286
| align="center" |12.32%
| align="center" |12.32%
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck''<br>tokens: COMMA, SEMI, TYPECAST
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck''<br>Tokens: COMMA, SEMI, TYPECAST


|-
|-
Line 191: Line 191:
| align="center" |15,276
| align="center" |15,276
| align="center" | 10.69%
| align="center" | 10.69%
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck'' <br>tokens: ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN
| No ''com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck'' <br>Tokens: ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN
|}
|}
|}
|}

Revision as of 16:41, 15 August 2015

Checkstyle is a tool for checking Code Standards Violations. It can be used different environments:

  • Standalone (not covered here)
  • Ant
  • Maven
  • IDE

Installation in Ant

To set CheckStyle in Ant add the following line of code to the build.xml. <syntaxhighlight lang="xml" line>

  <property name = "checkstyle.home.dir" location = "." />
  ...
  <taskdef resource  = "com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" classpath = "checkstyle-6.8.1-all.jar" />
  ...
  <property name="checkstyle.sourcepath"    value="src"                      />
  <property name="checkstyle.report.path"   value="."                        />
  <property name="checkstyle.report.style"  value="checkstyle-simple.xsl"    />
  <property name="checkstyle.report.xml"    value="checkstyle-report.xml"    />
  <property name="checkstyle.report.html"   value="checkstyle-report.html"   />
  ...
  <target name        = "check"
          description = "Generates a report of code convention violations.">
     <mkdir dir   = "${checkstyle.report.path}" />
     <checkstyle config          = "${checkstyle.report.config}"
                 failureProperty = "checkstyle.failure"
                 failOnViolation = "false">
        <formatter type   = "xml"
                   tofile = "${checkstyle.report.xml}"/>
        <fileset dir      = "${checkstyle.sourcepath}"
                 includes = "**/*.java, **/*.xml, **/*.properties"
                 excludes = "checkstyle/" />
     </checkstyle>
     <xslt basedir = "${checkstyle.report.path}"
           destdir = "${checkstyle.report.path}"
           style   = "${checkstyle.report.style}" />
  </target>

</syntaxhighlight>

Line Description Default Global
1-2 Property for the location of all the checkstyle-jar files. It must contain checkstyle-6.8.1-all.jar (See below). Current Directory /usr/local/bin/checkstyle-6.8.1
4-5 Reference to the checkstyle resource checkstyle-6.8.1-all.jar
7-12 References to the checkstyle properties.
14-36 Ant-Target definition, creating the report path, running checkstyle and formats the resulting xml-report to HTML using XSLT.

Installation in Maven

To set CheckStyle in Maven or Maven 2 add the following lines of code to the settings of the project.xml, project.properties.

Project.xml

<syntaxhighlight lang="xml">

 <reports>
    ...
    <report>maven-checkstyle-plugin</report>
    ...
 </reports>

</syntaxhighlight>


Project.properties

Add the name of the file containing the checkstyle settings: <syntaxhighlight lang="bash">

  1. Checkstyle settings #

maven.checkstyle.excludes=**/*generated*/** maven.checkstyle.properties=${basedir}/AAB_checks.xml </syntaxhighlight>


Configuration

The default CheckStyle is highly configurable. The installation come with sample configuration files:

  • Apache Avalon (avalon_checks.xml)
  • Sun coding conventions (sun_checks.xml)
  • Apache Turbine Framework (turbine_checks.xml), this is the base of Frame

The AAB uses its own CheckStyle convention (AAB_checks.xml), which is configured for each project separately. The format of the configuration file: <syntaxhighlight lang="xml"> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.1//EN" "http://www.puppycrawl.com/dtds/configuration_1_1.dtd"> <module name="Checker">

   <module name="TreeWalker">
       <module name="com.puppycrawl.tools.checkstyle.checks.GenericIllegalRegexpCheck">
           <property name="format" value="System.err"/>
           <property name="ignoreCase" value="false"/>
           <property name="ignoreComments" value="false"/>
           <property name="message" value="Do not use System.err"/>
           <property name="severity" value="warning"/>
       </module>
       ...
       <module name="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck">
           <property name="ignorePattern" value="^$"/>
           <property name="max" value="110"/>
           <property name="severity" value="warning"/>
           <property name="tabWidth" value="4"/>
       </module>
       ...
  </module>

</module> </syntaxhighlight>


Problem

The CheckStyle report becomes very long and difficult to handel. There are a few checks which delivers very much lines of report lines. A comparison of the size of checkstyle-report.html file for the different checkstyles

CheckStyle HTML-Size
Kb
HTML
Reduction %
HTML-Lines
K
Line
Reduction %
Description
All 3,881  0 90,142 0,00% Default checks
No LineLength 3,545  336 82,104 8.66% No com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck (AAB_1_checks.xml)
No indentation 1,563 1,982 37,411 51.07% No com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck (AAB_1_checks.xml)
No whitespace Param Pad 1,561  2 37,378 0.05% No com.puppycrawl.tools.checkstyle.checks.whitespace.MethodParamPadCheck
Tokens: CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF, SUPER_CTOR_CALL
No whitespace After 1,537  24 36,795 0.62% No com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck
Tokens: ARRAY_INIT, BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS, UNARY_PLUS
No whitespace Before 1,536  1 36.773 0.03% No com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck
Tokens: SEMI, POST_DEC, POST_INC
No whitespace After 1,058 478 25,286 12.32% No com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck
Tokens: COMMA, SEMI, TYPECAST
No whitespace Around 643 415 15,276 10.69% No com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck
Tokens: ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN