You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2019/11/08 18:51:33 UTC

[commons-numbers] 06/32: Update checkstyle configuration.

This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-numbers.git

commit 397d1a3e040a99a517aad8f4f57c593f02730edc
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Wed Nov 6 22:39:30 2019 +0000

    Update checkstyle configuration.
---
 pom.xml                                            |  22 ++
 .../checkstyle/checkstyle-suppressions.xml         |  28 ++
 src/main/resources/checkstyle/checkstyle.xml       | 291 +++++++++++++--------
 3 files changed, 226 insertions(+), 115 deletions(-)

diff --git a/pom.xml b/pom.xml
index 34a1f04..9958e8c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,7 @@
     <maven.compiler.target>1.8</maven.compiler.target>
     <numbers.pmd.version>3.9.0</numbers.pmd.version>
     <numbers.checkstyle.version>3.0.0</numbers.checkstyle.version>
+    <numbers.checkstyle.dep.version>8.20</numbers.checkstyle.dep.version>
     <numbers.mathjax.version>2.7.2</numbers.mathjax.version>
     <numbers.junit.bom.version>5.4.2</numbers.junit.bom.version>
     <numbers.commons.math3.version>3.6.1</numbers.commons.math3.version>
@@ -231,6 +232,25 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
+        <version>${numbers.checkstyle.version}</version>
+        <dependencies>
+          <dependency>
+            <groupId>com.puppycrawl.tools</groupId>
+            <artifactId>checkstyle</artifactId>
+            <version>${numbers.checkstyle.dep.version}</version>
+          </dependency>
+        </dependencies>
+        <configuration>
+          <includeTestSourceDirectory>true</includeTestSourceDirectory>
+          <configLocation>${numbers.parent.dir}/src/main/resources/checkstyle/checkstyle.xml</configLocation>
+          <headerLocation>${numbers.parent.dir}/src/main/resources/checkstyle/license-header.txt</headerLocation>
+          <suppressionsLocation>${numbers.parent.dir}/src/main/resources/checkstyle/checkstyle-suppressions.xml</suppressionsLocation>
+          <enableRulesSummary>false</enableRulesSummary>
+          <logViolationsToConsole>false</logViolationsToConsole>
+          <failOnViolation>true</failOnViolation>
+          <resourceExcludes>NOTICE.txt,LICENSE.txt,**/maven-archiver/pom.properties,**/resolver-status.properties</resourceExcludes>
+          <excludes>**/generated/**.java</excludes>
+        </configuration>
         <executions>
           <execution>
             <id>validate</id>
@@ -369,8 +389,10 @@
         <configuration>
           <configLocation>${numbers.parent.dir}/src/main/resources/checkstyle/checkstyle.xml</configLocation>
           <headerLocation>${numbers.parent.dir}/src/main/resources/checkstyle/license-header.txt</headerLocation>
+          <suppressionsLocation>${numbers.parent.dir}/src/main/resources/checkstyle/checkstyle-suppressions.xml</suppressionsLocation>
           <enableRulesSummary>false</enableRulesSummary>
           <includeResources>false</includeResources>
+          <excludes>**/generated/**.java</excludes>
         </configuration>
         <reportSets>
           <reportSet>
diff --git a/src/main/resources/checkstyle/checkstyle-suppressions.xml b/src/main/resources/checkstyle/checkstyle-suppressions.xml
new file mode 100644
index 0000000..89acf69
--- /dev/null
+++ b/src/main/resources/checkstyle/checkstyle-suppressions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<!DOCTYPE suppressions PUBLIC
+    "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
+    "https://checkstyle.org/dtds/suppressions_1_2.dtd">
+<suppressions>
+  <!-- Be more lenient on tests. -->
+  <suppress checks="Javadoc" files=".*[/\\]test[/\\].*" />
+  <suppress checks="MultipleStringLiterals" files=".*[/\\]test[/\\].*" />
+  <suppress checks="DesignForExtension" files=".*[/\\]test[/\\].*" />
+  <suppress checks="LineLength" files=".*[/\\]test[/\\].*" />
+  <suppress checks="IllegalCatch" files=".*[/\\]test[/\\].*" />
+</suppressions>
diff --git a/src/main/resources/checkstyle/checkstyle.xml b/src/main/resources/checkstyle/checkstyle.xml
index a138af6..68f301e 100644
--- a/src/main/resources/checkstyle/checkstyle.xml
+++ b/src/main/resources/checkstyle/checkstyle.xml
@@ -17,86 +17,205 @@
    limitations under the License.
   -->
 
-<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.1//EN" "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
-
-<!-- Commons RNG customization of default Checkstyle behavior -->
+<!DOCTYPE module PUBLIC
+          "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
+          "https://checkstyle.org/dtds/configuration_1_3.dtd">
+
+<!-- 
+  Commons RNG customization of default Checkstyle behaviour:
+  https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/sun_checks.xml
+-->
 <module name="Checker">
+  <module name="SuppressionFilter">
+    <!-- Default property set by maven-checkstyle-plugin -->
+    <property name="file" value="${checkstyle.suppressions.file}"/>
+    <property name="optional" value="false"/>
+  </module>
+
   <property name="localeLanguage" value="en"/>
 
-  <module name="TreeWalker">
+  <property name="fileExtensions" value="java, properties, xml" />
 
-    <!-- Operator must be at end of wrapped line -->
-    <module name="OperatorWrap">
-      <property name="option" value="eol"/>
-    </module>
+  <!-- Excludes all 'module-info.java' files -->
+  <!-- See https://checkstyle.org/config_filefilters.html -->
+  <module name="BeforeExecutionExclusionFileFilter">
+    <property name="fileNamePattern" value="module\-info\.java$" />
+  </module>
 
-    <!-- No if/else/do/for/while without braces -->
-    <module name="NeedBraces"/>
+  <!-- Checks that a package-info.java file exists for each package. -->
+  <!-- See http://checkstyle.sourceforge.net/config_javadoc.html#JavadocPackage -->
+  <module name="JavadocPackage" />
+
+  <!-- Checks whether files end with a new line. -->
+  <!-- See http://checkstyle.sourceforge.net/config_misc.html#NewlineAtEndOfFile -->
+  <module name="NewlineAtEndOfFile" />
+
+  <!-- Checks that property files contain the same keys. -->
+  <!-- See http://checkstyle.sourceforge.net/config_misc.html#Translation -->
+  <module name="Translation" />
+
+  <!-- Checks for Size Violations. -->
+  <!-- See http://checkstyle.sourceforge.net/config_sizes.html -->
+  <module name="FileLength" />
+
+  <!-- Checks for whitespace -->
+  <!-- See http://checkstyle.sourceforge.net/config_whitespace.html -->
+  <module name="FileTabCharacter" />
+
+  <!-- Miscellaneous other checks. -->
+  <!-- See http://checkstyle.sourceforge.net/config_misc.html -->
+  <module name="RegexpSingleline">
+    <property name="format" value="\s+$" />
+    <property name="minimum" value="0" />
+    <property name="maximum" value="0" />
+    <property name="message" value="Line has trailing spaces." />
+  </module>
 
-    <!-- Interfaces must be types (not just constants) -->
-    <module name="InterfaceIsType"/>
+  <!-- Checks for Headers -->
+  <!-- See http://checkstyle.sourceforge.net/config_header.html -->
+  <module name="Header">
+    <property name="headerFile" value="${checkstyle.header.file}"/>
+  </module>
 
-    <!-- Must have class / interface header comments -->
-    <module name="JavadocType"/>
+  <module name="TreeWalker">
 
-     <!-- Require method javadocs, allow undeclared RTE -->
+    <!-- Checks for Javadoc comments. -->
+    <!-- See http://checkstyle.sourceforge.net/config_javadoc.html -->
+    <!-- Require method javadocs, allow undeclared RTE -->
     <module name="JavadocMethod">
       <property name="allowUndeclaredRTE" value="true"/>
       <property name="allowThrowsTagsForSubclasses" value="true"/>
       <property name="validateThrows" value="false"/>
     </module>
+    <module name="JavadocType" />
+    <module name="JavadocVariable" />
+    <module name="JavadocStyle" />
+    <!-- <module name="MissingJavadocType"/> -->
 
-    <!-- Require field javadoc -->
-    <module name="JavadocVariable"/>
+    <!-- Checks for Naming Conventions. -->
+    <!-- See http://checkstyle.sourceforge.net/config_naming.html -->
+    <module name="ConstantName" />
+    <module name="LocalFinalVariableName" />
+    <module name="LocalVariableName" />
+    <module name="MemberName" />
+    <module name="MethodName" />
+    <module name="PackageName" />
+    <module name="ParameterName" />
+    <module name="StaticVariableName" />
+    <module name="TypeName" />
+
+    <!-- Checks for imports -->
+    <!-- See http://checkstyle.sourceforge.net/config_import.html -->
+    <module name="AvoidStarImport" />
+    <module name="IllegalImport" /> <!-- defaults to sun.* packages -->
+    <module name="RedundantImport" />
+    <module name="UnusedImports">
+      <property name="processJavadoc" value="false" />
+    </module>
 
-    <!-- No public fields -->
-    <module name="VisibilityModifier">
-       <property name="protectedAllowed" value="true"/>
+    <!-- Checks for Size Violations. -->
+    <!-- See http://checkstyle.sourceforge.net/config_sizes.html -->
+    <module name="LineLength">
+      <!-- Ignore lines that begin with " * ", such as within a Javadoc comment. -->
+      <property name="ignorePattern" value="^ *\* *[^ ]"/>
+      <property name="max" value="120"/>
+    </module>
+    <module name="MethodLength" />
+    <module name="ParameterNumber" />
+
+    <!-- Checks for whitespace -->
+    <!-- See http://checkstyle.sourceforge.net/config_whitespace.html -->
+    <module name="EmptyForIteratorPad" />
+    <module name="GenericWhitespace" />
+    <module name="MethodParamPad" />
+    <module name="NoWhitespaceAfter" />
+    <module name="NoWhitespaceBefore" />
+    <!-- Operator must be at end of wrapped line -->
+    <module name="OperatorWrap">
+      <property name="option" value="eol"/>
+    </module>
+    <module name="ParenPad" />
+    <module name="TypecastParenPad" />
+    <module name="WhitespaceAfter">
+      <property name="tokens" value="COMMA, SEMI, LITERAL_IF, LITERAL_ELSE, LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, DO_WHILE"/>
+    </module>
+    <module name="WhitespaceAround">
+      <property name="allowEmptyConstructors" value="true"/>
+      <property name="allowEmptyTypes" value="true"/>
     </module>
 
-    <!-- Require hash code override when equals is -->
-    <module name="EqualsHashCode"/>
+    <!-- Modifier Checks -->
+    <!-- See http://checkstyle.sourceforge.net/config_modifiers.html -->
+    <module name="ModifierOrder" />
+    <module name="RedundantModifier" />
 
+    <!-- Checks for blocks. You know, those {}'s -->
+    <!-- See http://checkstyle.sourceforge.net/config_blocks.html -->
+    <module name="AvoidNestedBlocks" />
+    <module name="EmptyBlock" />
+    <module name="LeftCurly" />
+    <module name="NeedBraces" />
+    <module name="RightCurly" />
+
+    <!-- Checks for common coding problems -->
+    <!-- See http://checkstyle.sourceforge.net/config_coding.html -->
+    <module name="EmptyStatement" />
+    <module name="EqualsHashCode" />
+    <!-- Method parameters and local variables should not hide fields, except in constructors and setters -->
+    <module name="HiddenField">
+        <property name="ignoreConstructorParameter" value="true" />
+        <property name="ignoreSetter" value="true" />
+    </module>
     <!-- Disallow unnecessary instantiation of Boolean, String -->
     <module name="IllegalInstantiation">
       <property name="classes" value="java.lang.Boolean, java.lang.String"/>
     </module>
+    <!-- Allowed for algorithm implementations. -->
+    <!-- <module name="InnerAssignment" /> -->
+    <!-- <module name="MagicNumber" /> -->
+    <module name="MissingSwitchDefault" />
+    <module name="MultipleVariableDeclarations" />
+    <module name="SimplifyBooleanExpression" />
+    <module name="SimplifyBooleanReturn" />
+
+    <!-- Checks for class design -->
+    <!-- See http://checkstyle.sourceforge.net/config_design.html -->
+    <module name="DesignForExtension" />
+    <module name="FinalClass" />
+    <module name="HideUtilityClassConstructor" />
+    <module name="InterfaceIsType" />
+    <!-- No public fields -->
+    <module name="VisibilityModifier">
+       <property name="protectedAllowed" value="true"/>
+    </module>
 
-    <!-- Required for SuppressionCommentFilter below -->
-    <module name="FileContentsHolder"/>
+    <!-- Miscellaneous other checks. -->
+    <!-- See http://checkstyle.sourceforge.net/config_misc.html -->
+    <module name="ArrayTypeStyle" />
+    <!-- <module name="FinalParameters" />  -->
+    <module name="TodoComment">
+      <property name="severity" value="warning"/>
+    </module>
+    <module name="UpperEll" />
 
-    <!--  Import should be explicit, really needed and only from pure java packages -->
-    <module name="AvoidStarImport" />
-    <module name="UnusedImports" />
-    <module name="IllegalImport" />
+    <!-- Addition to Checkstyle sun_checks.xml  -->
 
-    <!-- Utility class should not be instantiated, they must have a private constructor -->
-    <module name="HideUtilityClassConstructor" />
+    <!-- Indentation of 4 spaces. -->
+    <module name="Indentation">
+      <!-- Indentation style recommended by Oracle -->
+      <property name="caseIndent" value="0"/>
+    </module>
 
-    <!-- Switch statements should be complete and with independent cases -->
+    <!-- Switch statements should have independent cases -->
     <module name="FallThrough" />
-    <module name="MissingSwitchDefault" />
 
     <!-- Constant names should obey the traditional all uppercase naming convention -->
     <module name="ConstantName" />
 
-    <!-- Method parameters and local variables should not hide fields, except in constructors and setters -->
-    <module name="HiddenField">
-        <property name="ignoreConstructorParameter" value="true" />
-        <property name="ignoreSetter" value="true" />
-    </module>
-
-    <!-- No trailing whitespace -->
-    <module name="Regexp">
-      <property name="format" value="[ \t]+$"/>
-      <property name="illegalPattern" value="true"/>
-      <property name="message" value="Trailing whitespace"/>
-    </module>
-
     <!-- No System.out.println() statements -->
     <module name="Regexp">
       <!-- no sysouts -->
-      <property name="format" value="System\.out\.println"/>
+      <property name="format" value="System\.(out|err)\."/>
       <property name="illegalPattern" value="true"/>
     </module>
 
@@ -104,13 +223,9 @@
     <module name="Regexp">
       <property name="format" value="@author"/>
       <property name="illegalPattern" value="true"/>
-      <property name="message" value="developers names should be in pom file"/>
+      <property name="message" value="Developers names should be in pom file"/>
     </module>
 
-    <!-- Use a consistent way to put modifiers -->
-    <module name="RedundantModifier" />
-    <module name="ModifierOrder" />
-
     <!-- Use a consistent way to put declarations -->
     <module name="DeclarationOrder" />
 
@@ -123,9 +238,6 @@
     <!-- Don't use = or != for string comparisons -->
     <module name="StringLiteralEquality" />
 
-   <!-- Don't declare multiple variables in the same statement -->
-    <module name="MultipleVariableDeclarations" />
-
     <!-- String literals more than one character long should not be repeated several times -->
     <!-- the "unchecked" string is also accepted to allow @SuppressWarnings("unchecked") -->
     <module name="MultipleStringLiterals" >
@@ -135,68 +247,17 @@
     <!-- Check if @Override tags are present  -->
     <module name="MissingOverride" />
 
-    <!-- <module name="TodoComment" /> -->
-
-  </module>
+    <!-- Setup special comments to suppress specific checks from source files -->
+    <module name="SuppressionCommentFilter">
+      <property name="offCommentFormat" value="CHECKSTYLE\: stop ([\w\|]+)"/>
+      <property name="onCommentFormat"  value="CHECKSTYLE\: resume ([\w\|]+)"/>
+      <property name="checkFormat"      value="$1"/>
+    </module>
+    <module name="SuppressionCommentFilter">
+      <property name="offCommentFormat" value="CHECKSTYLE\: stop all"/>
+      <property name="onCommentFormat"  value="CHECKSTYLE\: resume all"/>
+    </module>
 
-  <!-- Verify that EVERY source file has the appropriate license -->
-  <module name="Header">
-    <property name="headerFile" value="${checkstyle.header.file}"/>
   </module>
 
-  <!-- No tabs allowed! -->
-  <module name="FileTabCharacter"/>
-
-  <!-- Require files to end with newline characters -->
-  <module name="NewlineAtEndOfFile"/>
-
-  <!-- Require package javadoc -->
-  <module name="JavadocPackage"/>
-
-  <!-- Setup special comments to suppress specific checks from source files -->
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop JavadocVariable"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume JavadocVariable"/>
-    <property name="checkFormat"      value="JavadocVariable"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop JavadocMethodCheck"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume JavadocMethodCheck"/>
-    <property name="checkFormat"      value="JavadocMethodCheck"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop ConstantName"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume ConstantName"/>
-    <property name="checkFormat"      value="ConstantName"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop HideUtilityClassConstructor"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume HideUtilityClassConstructor"/>
-    <property name="checkFormat"      value="HideUtilityClassConstructor"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop MultipleVariableDeclarations"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume MultipleVariableDeclarations"/>
-    <property name="checkFormat"      value="MultipleVariableDeclarations"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop IllegalCatch"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume IllegalCatch"/>
-    <property name="checkFormat"      value="IllegalCatch"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop DeclarationOrder"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume DeclarationOrder"/>
-    <property name="checkFormat"      value="DeclarationOrder"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop RedundantModifier"/>
-    <property name="onCommentFormat"  value="CHECKSTYLE\: resume RedundantModifier"/>
-    <property name="checkFormat"      value="RedundantModifier"/>
-  </module>
-  <module name="SuppressionCommentFilter">
-    <property name="offCommentFormat" value="CHECKSTYLE\: stop all"/>
-    <property name="onCommentFormat" value="CHECKSTYLE\: resume all"/>
-  </module>
 </module>
-