Step 1: The pom.xml with the checkstyle plugin and properties.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mytutorial</groupId> <artifactId>simpleSpringRestWeb</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>simpleSpringRestWeb</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> //... <javac.src.version>1.7</javac.src.version> <javac.target.version>1.7</javac.target.version> <test.coverage.rate>100</test.coverage.rate> <cobertura.skip>false</cobertura.skip> <checkstyle.failOnError>true</checkstyle.failOnError> <checkstyle.consoleOutput>true</checkstyle.consoleOutput> </properties> //... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> <executions> <execution> <goals> <goal>check</goal> </goals> </execution> </executions> <configuration> <failsOnError>${checkstyle.failOnError}</failsOnError> <consoleOutput>${checkstyle.consoleOutput}</consoleOutput> <configLocation>src/main/resources/checkstyle/myapp-checks.xml</configLocation> <suppressionsLocation>src/main/resources/checkstyle/myapp-suppressions.xml</suppressionsLocation> <suppressionsFileExpression>checkstyle.suppressions.file.tag</suppressionsFileExpression> <propertyExpansion>checkstyle_config_dir=checkstyle</propertyExpansion> <propertyExpansion>checkstyle.suppressions.file=${project.build.directory}/checkstyle-suppressions.xml</propertyExpansion> </configuration> </plugin> </plugins> </build> </project> |
Step 2: The checkstyle files that define the rules.
src/main/resources/checkstyle/myapp-checks.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
<?xml version="1.0"?> <!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="Translation"/> <module name="SuppressionCommentFilter"/> <module name="TreeWalker"> <!-- Check use of Spaces and not TABs (4 spaces) --> <property name="tabWidth" value="4" /> <module name="GenericWhitespace" /> <module name="CyclomaticComplexity"> <property name="max" value="15"/> </module> <module name="ConstantName"/> <module name="LocalFinalVariableName"/> <module name="LocalVariableName"/> <module name="MemberName"> <property name="format" value="(^serial|^[a-z][a-zA-Z0-9]*$)"/> </module> <module name="MethodName"/> <module name="PackageName"/> <module name="ParameterName"/> <module name="StaticVariableName"> <property name="format" value="(^serial|^[a-z][a-zA-Z0-9]*$)"/> </module> <module name="TypeName"/> <module name="MutableException"/> <module name="AvoidStarImport"/> <module name="IllegalImport"/> <module name="RedundantImport"/> <module name="UnusedImports"/> <module name="LineLength"> <property name="max" value="130"/> </module> <module name="ParameterNumber"> <property name="max" value="8"/> </module> <module name="EmptyForIteratorPad"/> <module name="NoWhitespaceAfter"/> <module name="NoWhitespaceBefore"/> <module name="OperatorWrap"/> <module name="ParenPad"/> <module name="TypecastParenPad"/> <module name="WhitespaceAfter"> <property name="tokens" value="COMMA, SEMI"/> </module> <module name="WhitespaceAround"> <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, 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, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN, TYPE_EXTENSION_AND"/> </module> <module name="ModifierOrder"/> <module name="RedundantModifier"/> <module name="AvoidNestedBlocks"/> <module name="EmptyBlock"/> <module name="LeftCurly"/> <module name="NeedBraces"> <property name="tokens" value="LITERAL_DO, LITERAL_FOR, LITERAL_WHILE"/> </module> <module name="RightCurly"/> <!-- This check has been removed from Checkstyle 5.6 --> <!--<module name="DoubleCheckedLocking"/>--> <module name="EmptyStatement"/> <module name="IllegalInstantiation"/> <module name="InnerAssignment"/> <module name="MissingSwitchDefault"/> <!-- RedundantThrows was removed with version 6.2 --> <!--<module name="RedundantThrows"/>--> <module name="SimplifyBooleanExpression"/> <module name="SimplifyBooleanReturn"/> <module name="SuperClone"/> <module name="FinalClass"/> <module name="HideUtilityClassConstructor"/> <module name="InterfaceIsType"/> <module name="VisibilityModifier"> <property name="protectedAllowed" value="true"/> </module> <module name="ArrayTypeStyle"/> <module name="TodoComment"/> <module name="UpperEll"/> <module name="FileContentsHolder"/> <!-- Checks correct indentation of Java Code. --> <module name="Indentation"> <!-- how many spaces to use for new indentation level --> <property name="basicOffset" value="4" /> <!-- how far brace should be indented when on next line --> <property name="braceAdjustment" value="0" /> <!-- how much to indent a case label --> <property name="caseIndent" value="4" /> </module> <!-- Checks for Javadoc comments in public methods/variables only --> <module name="JavadocMethod"> <property name="scope" value="public" /> <property name="allowMissingPropertyJavadoc" value="true" /> </module> <module name="JavadocType"> <property name="scope" value="public" /> <property name="allowUnknownTags" value="true" /> </module> <module name="JavadocVariable"> <property name="scope" value="public" /> </module> <!-- all JavaDoc must have the right style, regardless of the scope --> <module name="JavadocStyle"> <property name="scope" value="public" /> </module> </module> <!-- No TAB characters in the source code --> <module name="FileTabCharacter"> <property name="eachLine" value="true" /> <property name="fileExtensions" value="java,properties,xml,wsdl" /> </module> <module name="RegexpMultiline"> <property name="id" value="consoleOutput" /> <property name="format" value="System\.(out)|(err)\.print(ln)?\(" /> <property name="message" value="Writing to System.out and System.err not allowed - use logger instead" /> </module> <module name="RegexpMultiline"> <property name="format" value="\.printStackTrace\(\s*\)" /> <property name="message" value="Calling printStackTrace on an exception is not allowed - use logger instead" /> </module> <module name="RegexpMultiline"> <property name="format" value="java\.util\.(Date|Calendar)"/> <property name="message" value="DO NOT USE java.util.Date or java.util.Calendar! Use Joda time instead!"/> </module> <module name="RegexpMultiline"> <property name="format" value="(System|Runtime\.getRuntime\(\))\.exit"/> <property name="message" value="Should not exit the JVM."/> </module> </module> |
src/main/resources/checkstyle/myapp-suppressions.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?xml version="1.0"?> <!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <suppressions> <!-- Turn off all checks for Generated and Test code. --> <!-- Suppressions for test code --> <suppress checks="IllegalCatch" files="[/\\]test[/\\]"/> <suppress checks="ImportControl" files="[/\\]test[/\\]"/> <suppress checks="MethodLength" files="[/\\]test[/\\]"/> <suppress checks="MethodName" files="[/\\]test[/\\]"/> <suppress checks="TypeName" files="[/\\]test[/\\]"/> <suppress checks="MagicNumber" files="[/\\]test[/\\]"/> <suppress checks="JavadocMethod" files="[/\\]test[/\\]"/> <suppress checks="JavadocStyle" files="[/\\]test[/\\]"/> <suppress checks="JavadocType" files="[/\\]test[/\\]"/> <suppress checks="JavadocVariable" files="[/\\]test[/\\]"/> <suppress checks="IllegalThrows" files="[/\\]test[/\\]"/> <suppress checks="IllegalInstantiation" files="[/\\]test[/\\]"/> <suppress checks="ParameterNumberCheck" files="[/\\]test[/\\]"/> <suppress id="warningCyclomaticComplexity" files="[/\\]test[/\\]"/> <suppress id="warningFileLength" files="[/\\]test[/\\]"/> <!-- don't check generated code, this to work on Unix (/) and Windows (\) --> <suppress checks="." files="[/\\]generated-sources[/\\]"/> <!-- End of test code suppressions --> </suppressions> |
Step 3: Running via mvn command. This reports any stylying errors.
|
1 |
mvn checkstyle:checkstyle |
