net.kemitix.checkstyle.xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kemitix-checkstyle-ruleset
Show all versions of kemitix-checkstyle-ruleset
Checkstyle Ruleset for use by packages derived from kemitix-parent
<?xml version="1.0"?> <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"> <!-- Template checkstyle rules primarily intented for use with projects based on the kemitix-parent POM --> <!-- --> <!-- See http://checkstyle.sourceforge.net/checks.html for documentation on each rule. --> <module name="Checker"> <module name="JavadocPackage"/> <!-- package-info.java must exist --> <module name="NewlineAtEndOfFile"> <property name="lineSeparator" value="lf"/> <!-- must use unix line endings --> </module> <module name="FileLength"/> <!-- files must be less than 2000 lines --> <module name="FileTabCharacter"/> <!-- tabs not allowed --> <module name="Header"> <!-- All java source files start with the contents of LICENSE.txt --> <property name="headerFile" value="LICENSE.txt"/> <property name="fileExtensions" value="java"/> </module> <module name="RegexpSingleline"> <property name="format" value="\s+$"/> <property name="message" value="Line has trailing spaces."/> </module> <module name="SuppressWarningsFilter"/> <!-- enable @SuppressWarnings for checkstyle rules --> <module name="Translation"/> <!-- Checks that messages files have the same keys --> <module name="UniqueProperties"/> <!-- checks for duplicate keys in properties files --> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <!-- enforce proper CamelCase --> </module> <module name="AbstractClassName"/> <!-- enforce Abstract.* in abstract class names --> <module name="AnnotationLocation"/> <!-- annotations should be on line by themselves --> <module name="AnnotationUseStyle"/> <!-- annotations should only use () and named attributes when needed --> <module name="AnonInnerLength"/> <!-- limits anonymous inner classes to 20 lines --> <module name="ArrayTypeStyle"/> <!-- enforce Java style arrays --> <module name="AtclauseOrder"> <!-- enforce standard order for javadoc elements - matches IntelliJ's order --> <property name="tagOrder" value="@param, @author, @version, @serial, @return, @throws, @exception, @serialData, @serialField, @see, @since, @deprecated"/> </module> <module name="AvoidEscapedUnicodeCharacters"> <!-- prevent use of obscure escape codes --> <property name="allowEscapesForControlCharacters" value="true"/> <!-- unless non-printable controls --> </module> <module name="AvoidInlineConditionals"/> <!-- detects ?: usage --> <module name="AvoidNestedBlocks"/> <!-- avoid unnecessary blocks {} --> <module name="AvoidStarImport"/> <!-- import package.* is not allowed --> <module name="AvoidStaticImport"> <!-- import static ... is not allowed --> <property name="excludes" value="org.assertj.core.api.Assertions.assertThat,org.mockito.BDDMockito.given,org.mockito.Mockito.*,org.mockito.Matchers.*,org.mockito.Mockito.*"/> <!-- unless selected testing shorthands --> </module> <module name="BooleanExpressionComplexity"> <!-- restrict number of &&, ||, &, | and ^ expressions --> <property name="max" value="2"/> </module> <module name="CatchParameterName"/> <!-- restrict parameter names when catching an Exception --> <module name="ClassDataAbstractionCoupling"/> <!-- restrict number of classes instantiated per class to 7 --> <module name="ClassFanOutComplexity"/> <!-- restrict class dependencies to 20 --> <module name="ClassTypeParameterName"/> <!-- restrict class type parameters (i.e. generics) to ^[A-Z]$ --> <module name="ConstantName"/> <!-- force all uppercase for static final fields --> <module name="CommentsIndentation"/> <!-- enforce comment indentation to match surrounding code --> <module name="CovariantEquals"/> <!-- ensure correct version of equals() is implemented --> <module name="CyclomaticComplexity"> <!-- limit complexity score --> <property name="max" value="5"/> </module> <module name="DeclarationOrder"/> <!-- enforce order: static variables, variables, constructors, methods --> <module name="DefaultComesLast"/> <!-- enforce default as last option in switch statement --> <module name="DesignForExtension"/> <!-- protect against bad subclassing - use interfaces for mocking in unit tests --> <module name="EmptyBlock"/> <!-- checks for empty blocks --> <module name="EmptyCatchBlock"> <!-- checks the catch blocks contain comment --> <property name="commentFormat" value="expected|ignore"/> </module> <module name="EmptyForInitializerPad"/> <!-- empty for loop initializer must have no spaces --> <module name="EmptyForIteratorPad"/> <!-- empty for loop iterator muse have have no spaces --> <module name="EmptyLineSeparator"/> <!-- enforce blank lines after header, fields, constructors, methods, etc --> <module name="EmptyStatement"/> <!-- prevent standalone ";" semicolons --> <module name="EqualsAvoidNull"/> <!-- prevents v = null; v.equals("..") --> <module name="EqualsHashCode"/> <!-- if equals() is overridden then so must hashCode() be --> <module name="ExecutableStatementCount"/> <!-- limit executable statements to 30 per method --> <module name="ExplicitInitialization"/> <!-- avoid initializing a field twice to the same value --> <module name="FallThrough"/> <!-- checks that each switch case fall-through is commented as such --> <module name="FinalClass"/> <!-- class which has only private constructors is declared as final --> <module name="FinalParameters"/> <!-- parameters that never change must be declared final --> <module name="GenericWhitespace"/> <!-- generic tokens are spaced correctly --> <module name="HiddenField"> <property name="ignoreConstructorParameter" value="true"/> <property name="ignoreSetter" value="true"/> </module> <module name="HideUtilityClassConstructor"/> <!-- suppress for class with public static void main(...) --> <module name="IllegalCatch"/> <!-- prevent generic catches (i.e. Exception, Throwable, RuntimeException) --> <module name="IllegalImport"/> <!-- prevent imports from the sun.* package --> <module name="IllegalThrows"/> <!-- prevent generic throws (i.e. Exception, Throwable, RuntimeException) --> <module name="IllegalToken"/> <!-- prevents use of labels --> <module name="IllegalType"> <!-- prevents variables, returns or parameters of non-interface Collections classes --> <property name="illegalClassNames" value="java.util.ArrayDeque, java.util.ArrayList, java.util.EnumMap, java.util.EnumSet, java.util.HashMap, java.util.HashSet, java.util.IdentityHashMap, java.util.LinkedHashMap, java.util.LinkedHashSet, java.util.LinkedList, java.util.PriorityQueue, java.util.TreeMap, java.util.TreeSet"/> </module> <module name="InnerAssignment"/> <!-- prevent assignments in subexpressions (i.e. while((line = read()){}) --> <module name="InnerTypeLast"/> <!-- inner classes appear after methods and fields --> <module name="InterfaceIsType"/> <!-- interface must define method not just constants --> <module name="InterfaceTypeParameterName"/> <!-- interface generic type is a single uppercase letter --> <module name="JavadocMethod"> <!-- methods should have javadoc block --> <property name="scope" value="package"/> <!-- if they are public, protected or package --> <property name="validateThrows" value="true"/> <!-- warn about unused @throws tags --> <property name="allowMissingPropertyJavadoc" value="true"/> <!-- skip basic setters and getters --> </module> <module name="JavadocParagraph"/> <!-- javadoc paragraphs have opening <p> elements --> <module name="JavadocStyle"/> <!-- javadoc comments are well formed --> <module name="JavadocType"> <!-- javadoc is present for classes, interfaces and enums --> <property name="authorFormat" value="^.+ (\S+@[\S.]+)$"/> <!-- name followed by email in brackets --> </module> <module name="JavaNCSS"> <!-- Non-Commenting Source Statements complexity analysis --> <property name="methodMaximum" value="40"/> <!-- lines per methods --> <property name="classMaximum" value="1200"/> <!-- lines per class --> <property name="fileMaximum" value="1600"/> <!-- lines per file --> </module> <module name="LeftCurly"/> <!-- placement of left curly braces ('{') for code blocks at end of line --> <module name="LineLength"> <!-- lines can't be longer the 120 --> <property name="max" value="120"/> </module> <module name="LocalFinalVariableName"/> <!-- validates identifiers for local, final variables, including catch parameters --> <module name="LocalVariableName"/> <!-- validates non-final identifiers --> <module name="MagicNumber"/> <!-- checks for magic numbers --> <module name="MemberName"/> <!-- instance variable names conform to ^[a-z][a-zA-Z0-9]*$ --> <module name="MethodCount"> <!-- restrict the number of methods in a class --> <property name="maxTotal" value="30"/> </module> <module name="MethodLength"> <!-- restrict the number of lines in a method --> <property name="max" value="40"/> </module> <module name="MethodName"/> <!-- method names conform to ^[a-z][a-zA-Z0-9]*$ --> <module name="MethodParamPad"/> <!-- verifies padding around method parameters --> <module name="MethodTypeParameterName"/> <!-- restrict method type parameters (i.e. generics) to ^[A-Z]$ --> <module name="MissingDeprecated"/> <!-- @Deprecated annotation must be accompanied by javadoc @deprecated --> <module name="MissingSwitchDefault"/> <!-- switch must have a default --> <module name="ModifiedControlVariable"> <!-- prevent for loop control being modified inside loop --> <property name="skipEnhancedForLoopVariable" value="true"/> <!-- doesn't apply to for(String line : lines) {} --> </module> <module name="ModifierOrder"/> <!-- enforce order: public protected private abstract static final transient volatile synchronized native strictfp --> <module name="MultipleStringLiterals"/> <!-- merge string literals --> <module name="MultipleVariableDeclarations"/> <!-- declare variables separately --> <module name="MutableException"/> <!-- prevent changing an exception once created --> <module name="NeedBraces"/> <!-- braces around code blocks --> <module name="NestedForDepth"/> <!-- prevent nested for loops --> <module name="NestedIfDepth"/> <!-- prevent nested if-else blocks --> <module name="NestedTryDepth"> <!-- prevent nested try blocks --> <property name="max" value="0"/> </module> <module name="NoClone"/> <!-- prevent overriding Object.clone() --> <module name="NoFinalizer"/> <!-- prevent overriding Object.finalize() --> <module name="NoLineWrap"/> <!-- prevent line wrapping package and import statements --> <module name="NonEmptyAtclauseDescription"/> <!-- javadoc tags have descriptions --> <module name="NoWhitespaceAfter"/> <!-- prevent white space after tokens --> <module name="NoWhitespaceAfter"> <!-- prevent white space and line breaks after . separator--> <property name="tokens" value="DOT"/> <property name="allowLineBreaks" value="false"/> </module> <module name="NoWhitespaceBefore"/> <!-- prevent white space before tokens --> <module name="NPathComplexity"> <!-- restrict method complexity --> <property name="max" value="5"/> </module> <module name="OneStatementPerLine"/> <!-- only one statement per line --> <module name="OneTopLevelClass"/> <!-- one top-level class per file --> <module name="OperatorWrap"/> <!-- when line wrapping on an operator, the operator is on the new line --> <module name="OuterTypeFilename"/> <!-- class name and filename must match --> <module name="OverloadMethodsDeclarationOrder"/> <!-- group overloaded methods together --> <module name="PackageAnnotation"/> <!-- package level annotations appear in package-info.java --> <module name="PackageDeclaration"/> <!-- class must have package and it must match the directory --> <module name="PackageName"> <!-- validate package name format --> <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]+)*$"/> <!-- only lowercase letters, no initial numbers or underscores --> </module> <module name="ParameterName"/> <!-- validate parameter name format --> <module name="ParameterNumber"> <!-- limits the number of parameters to 7 --> <property name="ignoreOverriddenMethods" value="true"/> <!-- don't apply to @Overridden --> </module> <module name="ParenPad"/> <!-- parentheses should have no padding spaces --> <module name="RedundantModifier"/> <!-- checks for redundant modifies (e.g. public methods in an interface) --> <module name="RequireThis"> <!-- references to instance fields where parameter name overlaps use this. --> <property name="checkMethods" value="false"/> </module> <module name="ReturnCount"/> <!-- Restricts return statements to 2 per method (1 if return type is void) --> <module name="RightCurly"/> <!-- placement of right curly braces ('}') for code blocks at end of line --> <module name="SeparatorWrap"> <!-- checks line wrapping on separators (,) have separator at the end of the line --> <property name="tokens" value="COMMA"/> <property name="option" value="eol"/> </module> <module name="SeparatorWrap"> <!-- checks line wrapping on separators (.) have separator on the new line --> <property name="tokens" value="DOT"/> <property name="option" value="nl"/> </module> <module name="SimplifyBooleanExpression"/> <!-- finds code like if (b == true), b || true, !false, etc. --> <module name="SimplifyBooleanReturn"/> <!-- overly complicated boolean return statements. --> <module name="SingleSpaceSeparator"/> <!-- Checks that non-whitespace characters are separated by only 1 character --> <module name="StaticVariableName"/> <!-- Static non-finals should be formatted like normal identifiers --> <module name="StringLiteralEquality"/> <!-- use .equals(...) when comparing strings for equality --> <module name="SuppressWarnings"> <property name="format" value="^constantname|covariantequals|equalshashcode|noclone|onetoplevelclass|outertypefilename|packagedeclaration|typename|visibilitymodifier$"/> </module> <module name="SuppressWarningsHolder"/> <!-- holds all @SuppressWarnings found for SuppressWarningsFilter --> <module name="ThrowsCount"/> <!-- Restricts throws statements to 4 --> <module name="TodoComment"> <!-- no to do or fix me comments --> <property name="format" value="^(\s*\*).*((TODO)|(FIXME))"/> </module> <module name="TrailingComment"/> <!-- no end-line comments (the irony!) --> <module name="TypecastParenPad"/> <!-- no spaces in type casting parentheses --> <module name="TypeName"/> <!-- validates class, interface, enum and annotation names --> <module name="UncommentedMain"> <!-- checks for stray public static void main() methods --> <!-- allowed in classes that end in Main or Application--> <property name="excludedClasses" value="(Main|Application)$"/> </module> <module name="UnnecessaryParentheses"/> <!-- unnecessary parentheses --> <module name="UnusedImports"/> <!-- checks for import that aren't used --> <module name="UpperEll"/> <!-- long constants have an 'L' suffix --> <module name="VariableDeclarationUsageDistance"/> <!-- distance between declaration of variable and first usage --> <module name="VisibilityModifier"/> <!-- visibility of class members --> <module name="WhitespaceAfter"/> <!-- comma, semicolon, and type cast are followed by a space --> <module name="WhitespaceAround"/> <!-- selected token are surrounded by a space --> <!-- Sevntu checks --> <!-- sevntu/coding --> <module name="AvoidConstantAsFirstOperandInConditionCheck"/> <!-- avoid code like if(12 == value){...} --> <module name="AvoidHidingCauseExceptionCheck"/> <!-- ensure exceptions are propagated as cause in subsequent exceptions --> <module name="AvoidNotShortCircuitOperatorsForBooleanCheck"/> <!-- limits using of not short-circuit operators --> <module name="ConfusingConditionCheck"/> <!-- prevents negation within an "if" expression if "else" is present --> <module name="DiamondOperatorForVariableDefinitionCheck"/> <!-- use the diamond operator --> <module name="EitherLogOrThrowCheck"/> <!-- log or throw an exception - don't do both --> <module name="EitherLogOrThrowCheck"> <!-- log or throw an exception - don't do both --> <property name="loggerFullyQualifiedClassName" value="java.util.logging.Logger"/> <property name="loggingMethodNames" value="log, severe, warning, info, config, fine, finer, finest, "/> </module> <module name="ForbidCCommentsInMethodsCheck"/> <!-- prevent /* C-style */ comments inside methods --> <module name="ForbidReturnInFinallyBlockCheck"/> <!-- returns in finally override returns elsewhere in method --> <module name="LogicConditionNeedOptimizationCheck"/> <!-- prevent placement of local variables and fields after call to method in logical conditionals --> <module name="MapIterationInForEachLoopCheck"/> <!-- warns of unoptimised map iteration --> <module name="NameConventionForJunit4TestClassesCheck"/> <!-- checks names of test classes --> <module name="NoNullForCollectionReturnCheck"/> <!-- don't return null when should be an empty collection --> <module name="NumericLiteralNeedsUnderscoreCheck"/> <!-- long numeric literals have underscore spacers --> <module name="OverridableMethodInConstructorCheck"/> <!-- don't call overridable method from constructor --> <module name="RedundantReturnCheck"/> <!-- returns at end of void methods is pointless --> <module name="ReturnBooleanFromTernaryCheck"/> <!-- use value inside condition --> <module name="ReturnNullInsteadOfBooleanCheck"/> <!-- Boolean is NOT a ternary state object --> <module name="SimpleAccessorNameNotationCheck"/> <!-- setters and getters must match to the field of the same name and type --> <module name="SingleBreakOrContinueCheck"/> <!-- avoid complicated flow control --> <module name="TernaryPerExpressionCountCheck"/> <!-- prevent nested ternary expressions --> <module name="UselessSingleCatchCheck"/> <!-- prevent single catch blocks that just rethrow the original exception --> <module name="UselessSuperCtorCallCheck"/> <!-- detects calls to super() when not needed --> <!-- sevntu/design --> <!--<module name="ChildBlockLengthCheck"/> <!– broken in sevntu 1.20 - limit child blocks to 80% of parent block –>--> <module name="ConstructorWithoutParamsCheck"/> <!-- Exception classes must take parameters --> <module name="ForbidWildcardAsReturnTypeCheck"/> <!-- forbid <? extends|super Object> generics as return types on public, protected and package methods --> <module name="NestedSwitchCheck"/> <!-- prevent nested switch statements --> <module name="NoMainMethodInAbstractClassCheck"/> <!-- Forbids main methods in abstract classes --> <module name="PublicReferenceToPrivateTypeCheck"/> <!-- prevent attempt to expose private type --> <!-- sevntu/naming --> <module name="EnumValueNameCheck"/> <!-- validate enum value format --> <module name="UniformEnumConstantNameCheck"/> <!-- forces enum names to all follow the same pattern as each other --> </module> </module>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy