<rules>
<!-- Checkstyle 5.0 -->
- <rule key="com.puppycrawl.tools.checkstyle.checks.header.HeaderCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.header.HeaderCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Header]]></name>
<configKey><![CDATA[Checker/Header]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.header.RegexpHeaderCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.header.RegexpHeaderCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Regexp Header]]></name>
<configKey><![CDATA[Checker/RegexpHeader]]></configKey>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationUseStyleCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.AnnotationUseStyleCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Annotation Use Style]]></name>
<configKey><![CDATA[Checker/TreeWalker/AnnotationUseStyle]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.MissingDeprecatedCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.MissingDeprecatedCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Missing Deprecated]]></name>
<configKey><![CDATA[Checker/TreeWalker/MissingDeprecated]]></configKey>
<![CDATA[Verifies that both the java.lang.Deprecated annotation is present and the @deprecated Javadoc tag is present when either is present.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.MissingOverrideCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.MissingOverrideCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Missing Override]]></name>
<configKey><![CDATA[Checker/TreeWalker/MissingOverride]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.PackageAnnotationCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.PackageAnnotationCheck">
+<priority>MINOR</priority>
<name><![CDATA[Package Annotation]]></name>
<configKey><![CDATA[Checker/TreeWalker/PackageAnnotation]]></configKey>
<p>The JLS does not enforce the placement of package annotations. This placement may vary based on implementation. The JLS does highly recommend that all package annotations are placed in the package-info.java file. See <a href="http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html">Java Language specification, sections 7.4.1.1</a>.</p>]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.SuppressWarningsCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.annotation.SuppressWarningsCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Suppress Warnings]]></name>
<configKey><![CDATA[Checker/TreeWalker/SuppressWarnings]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.EqualsAvoidNullCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.EqualsAvoidNullCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Equals Avoid Null]]></name>
<configKey><![CDATA[Checker/TreeWalker/EqualsAvoidNull]]></configKey>
</rule>
-<rule key="com.puppycrawl.tools.checkstyle.checks.coding.NoCloneCheck" priority="MAJOR">
+<rule key="com.puppycrawl.tools.checkstyle.checks.coding.NoCloneCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[No Clone Check]]></name>
<configKey><![CDATA[Checker/TreeWalker/NoCloneCheck]]></configKey>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.NoFinalizerCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.NoFinalizerCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[No Finalizer]]></name>
<configKey><![CDATA[Checker/TreeWalker/NoFinalizer]]></configKey>
<description><![CDATA[<p>Verifies there are no finalize() methods defined in a class.</p>]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.imports.AvoidStaticImportCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.imports.AvoidStaticImportCheck">
+<priority>MINOR</priority>
<name><![CDATA[Avoid Static Import]]></name>
<configKey><![CDATA[Checker/TreeWalker/AvoidStaticImport]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck">
+<priority>MINOR</priority>
<name><![CDATA[Javadoc Package]]></name>
<configKey><![CDATA[Checker/JavadocPackage]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpMultilineCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpMultilineCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Regexp Multiline]]></name>
<configKey><![CDATA[Checker/RegexpMultiline]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Regexp Singleline]]></name>
<configKey><![CDATA[Checker/RegexpSingleline]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineJavaCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineJavaCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Regexp Singleline Java]]></name>
<configKey><![CDATA[Checker/TreeWalker/RegexpSinglelineJava]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.OuterTypeNumberCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.OuterTypeNumberCheck">
+<priority>MINOR</priority>
<name><![CDATA[Outer Type Number]]></name>
<configKey><![CDATA[Checker/TreeWalker/OuterTypeNumber]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.FileTabCharacterCheck">
+<priority>MINOR</priority>
<name><![CDATA[File Tab Character]]></name>
<configKey><![CDATA[Checker/FileTabCharacter]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck">
+<priority>MINOR</priority>
<name><![CDATA[Generic Whitespace]]></name>
<configKey><![CDATA[Checker/TreeWalker/GenericWhitespace]]></configKey>
<!-- Checkstyle 4.4 and less -->
- <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.JavaNCSSCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.JavaNCSSCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[JavaNCSS]]></name>
<configKey><![CDATA[Checker/TreeWalker/JavaNCSS]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.imports.RedundantImportCheck">
+<priority>MINOR</priority>
<name><![CDATA[Redundant import]]></name>
<configKey><![CDATA[Checker/TreeWalker/RedundantImport]]></configKey>
]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.AbstractClassNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.AbstractClassNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Abstract Class Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/AbstractClassName]]></configKey>
<![CDATA[Validates identifiers for abstract classes. Default is ^Abstract.*$|^.*Factory$]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.AnonInnerLengthCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.AnonInnerLengthCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Anon Inner Length]]></name>
<configKey><![CDATA[Checker/TreeWalker/AnonInnerLength]]></configKey>
<description><![CDATA[maximum allowable number of lines. Default is 20.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ArrayTrailingCommaCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ArrayTrailingCommaCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Array Trailing Comma]]></name>
<configKey><![CDATA[Checker/TreeWalker/ArrayTrailingComma]]></configKey>
<description><![CDATA[Checks if array initialization contains optional trailing comma.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.ArrayTypeStyleCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.ArrayTypeStyleCheck">
+<priority>MINOR</priority>
<name><![CDATA[Array Type Style]]></name>
<configKey><![CDATA[Checker/TreeWalker/ArrayTypeStyle]]></configKey>
<![CDATA[Controls whether to enforce Java style (true) or C style (false). Default is true.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.AvoidInlineConditionalsCheck">
+<priority>MINOR</priority>
<name><![CDATA[Avoid Inline Conditionals]]></name>
<configKey><![CDATA[Checker/TreeWalker/AvoidInlineConditionals]]></configKey>
<description><![CDATA[Detects inline conditionals.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.AvoidNestedBlocksCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.AvoidNestedBlocksCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Nested Blocks]]></name>
<configKey><![CDATA[Checker/TreeWalker/AvoidNestedBlocks]]></configKey>
<description><![CDATA[Allow nested blocks in case statements. Default is false.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.imports.AvoidStarImportCheck">
+<priority>MINOR</priority>
<name><![CDATA[Avoid Star Import]]></name>
<configKey><![CDATA[Checker/TreeWalker/AvoidStarImport]]></configKey>
<![CDATA[packages where star imports are allowed. Note that this property is not recursive, subpackages of excluded packages are not automatically excluded.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.BooleanExpressionComplexityCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.BooleanExpressionComplexityCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Boolean Expression Complexity]]></name>
<configKey><![CDATA[Checker/TreeWalker/BooleanExpressionComplexity]]></configKey>
<description><![CDATA[tokens to check. Default is LAND,BAND,LOR,BOR,BXOR.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Class Data Abstraction Coupling]]></name>
<configKey><![CDATA[Checker/TreeWalker/ClassDataAbstractionCoupling]]></configKey>
<description><![CDATA[the maximum threshold allowed. Default is 7.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.ClassFanOutComplexityCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.ClassFanOutComplexityCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Class Fan Out Complexity]]></name>
<configKey><![CDATA[Checker/TreeWalker/ClassFanOutComplexity]]></configKey>
<description><![CDATA[the maximum threshold allowed. Default is 20.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.ConstantNameCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.ConstantNameCheck">
+<priority>MINOR</priority>
<name><![CDATA[Constant Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/ConstantName]]></configKey>
<![CDATA[Validates identifiers for constants (static, final fields). Default is ^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.CovariantEqualsCheck" priority="CRITICAL">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.CovariantEqualsCheck">
+<priority>CRITICAL</priority>
<name><![CDATA[Covariant Equals]]></name>
<configKey><![CDATA[Checker/TreeWalker/CovariantEquals]]></configKey>
<description>
<![CDATA[Checks that if a class defines a covariant method equals, then it defines method equals(java.lang.Object).]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.CyclomaticComplexityCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.CyclomaticComplexityCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Cyclomatic Complexity]]></name>
<configKey><![CDATA[Checker/TreeWalker/CyclomaticComplexity]]></configKey>
<description><![CDATA[the maximum threshold allowed. Default is 10.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.DeclarationOrderCheck" priority="INFO">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.DeclarationOrderCheck">
+<priority>INFO</priority>
<name><![CDATA[Declaration Order]]></name>
<configKey><![CDATA[Checker/TreeWalker/DeclarationOrder]]></configKey>
<description>
<![CDATA[Checks that the parts of a class or interface declaration appear in the order suggested by the Code Convention for the Java Programming Language : <ul><li>Class (static) variables. First the public class variables, then the protected, then package level (no access modifier), and then the private.</li><li>Instance variables. First the public class variables, then the protected, then package level (no access modifier), and then the private.</li><li>Constructors</li><li>Methods</li></ul>]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.DefaultComesLastCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.DefaultComesLastCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Default Comes Last]]></name>
<configKey><![CDATA[Checker/TreeWalker/DefaultComesLast]]></configKey>
<description><![CDATA[Check that the default is after all the cases in a switch statement.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck">
+<priority>MINOR</priority>
<name><![CDATA[Design For Extension]]></name>
<configKey><![CDATA[Checker/TreeWalker/DesignForExtension]]></configKey>
<description><![CDATA[Checks that classes are designed for inheritance.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.DoubleCheckedLockingCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.DoubleCheckedLockingCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Double Checked Locking]]></name>
<configKey><![CDATA[Checker/TreeWalker/DoubleCheckedLocking]]></configKey>
<description>
<![CDATA[Detect the double-checked locking idiom, a technique that tries to avoid synchronization overhead but is incorrect because of subtle artifacts of the java memory model.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.EmptyBlockCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.EmptyBlockCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Empty Block]]></name>
<configKey><![CDATA[Checker/TreeWalker/EmptyBlock]]></configKey>
<description><![CDATA[blocks to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.EmptyForInitializerPadCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.EmptyForInitializerPadCheck">
+<priority>MINOR</priority>
<name><![CDATA[Empty For Initializer Pad]]></name>
<configKey><![CDATA[Checker/TreeWalker/EmptyForInitializerPad]]></configKey>
<description><![CDATA[policy on how to pad an empty for iterator]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.EmptyForIteratorPadCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.EmptyForIteratorPadCheck">
+<priority>MINOR</priority>
<name><![CDATA[Empty For Iterator Pad]]></name>
<configKey><![CDATA[Checker/TreeWalker/EmptyForIteratorPad]]></configKey>
<description><![CDATA[policy on how to pad an empty for iterator]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.EmptyStatementCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.EmptyStatementCheck">
+<priority>MINOR</priority>
<name><![CDATA[Empty Statement]]></name>
<configKey><![CDATA[Checker/TreeWalker/EmptyStatement]]></configKey>
<description><![CDATA[Detects empty statements (standalone ';').]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheck" priority="CRITICAL">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheck">
+<priority>CRITICAL</priority>
<name><![CDATA[Equals Hash Code]]></name>
<configKey><![CDATA[Checker/TreeWalker/EqualsHashCode]]></configKey>
<description><![CDATA[Checks that classes that override equals() also override hashCode().]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.ExecutableStatementCountCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.ExecutableStatementCountCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Executable Statement Count]]></name>
<configKey><![CDATA[Checker/TreeWalker/ExecutableStatementCount]]></configKey>
<description><![CDATA[members to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ExplicitInitializationCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ExplicitInitializationCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Explicit Initialization]]></name>
<configKey><![CDATA[Checker/TreeWalker/ExplicitInitialization]]></configKey>
<description>
<![CDATA[Checks if any class or object member explicitly initialized to default for its type value (null for object references, zero for numeric types and char and false for boolean.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Fall Through]]></name>
<configKey><![CDATA[Checker/TreeWalker/FallThrough]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.FileLengthCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.FileLengthCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[File Length]]></name>
<configKey><![CDATA[Checker/FileLength]]></configKey>
<description><![CDATA[maximum allowable number of lines. Default is 2000.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.design.FinalClassCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.design.FinalClassCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Final Class]]></name>
<configKey><![CDATA[Checker/TreeWalker/FinalClass]]></configKey>
<description><![CDATA[Checks that class which has only private constructors is declared as final.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck">
+<priority>MINOR</priority>
<name><![CDATA[Final Local Variable]]></name>
<configKey><![CDATA[Checker/TreeWalker/FinalLocalVariable]]></configKey>
<description><![CDATA[tokens to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.FinalParametersCheck">
+<priority>MINOR</priority>
<name><![CDATA[Final Parameters]]></name>
<configKey><![CDATA[Checker/TreeWalker/FinalParameters]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.HiddenFieldCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.HiddenFieldCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Hidden Field]]></name>
<configKey><![CDATA[Checker/TreeWalker/HiddenField]]></configKey>
<![CDATA[Controls whether to ignore parameters of abstract methods. Default is false.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.design.HideUtilityClassConstructorCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.design.HideUtilityClassConstructorCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Hide Utility Class Constructor]]></name>
<configKey><![CDATA[Checker/TreeWalker/HideUtilityClassConstructor]]></configKey>
<description>
<![CDATA[Make sure that utility classes (classes that contain only static methods) do not have a public constructor.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Illegal Catch]]></name>
<configKey><![CDATA[Checker/TreeWalker/IllegalCatch]]></configKey>
<description><![CDATA[exception class names to reject]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.imports.IllegalImportCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.imports.IllegalImportCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Illegal Import]]></name>
<configKey><![CDATA[Checker/TreeWalker/IllegalImport]]></configKey>
<description><![CDATA[packages to reject]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalInstantiationCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalInstantiationCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Illegal Instantiation]]></name>
<configKey><![CDATA[Checker/TreeWalker/IllegalInstantiation]]></configKey>
<description><![CDATA[classes that should not be instantiated]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalThrowsCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalThrowsCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Illegal Throws]]></name>
<configKey><![CDATA[Checker/TreeWalker/IllegalThrows]]></configKey>
<description><![CDATA[throw class names to reject]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Illegal Token]]></name>
<configKey><![CDATA[Checker/TreeWalker/IllegalToken]]></configKey>
<description><![CDATA[tokens to check. Default value is LITERAL_SWITCH, POST_INC, POST_DEC.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenTextCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenTextCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Illegal Token Text]]></name>
<configKey><![CDATA[Checker/TreeWalker/IllegalTokenText]]></configKey>
<![CDATA[Message which is used to notify about violations; if empty then the default message is used.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalTypeCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.IllegalTypeCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Illegal Type]]></name>
<configKey><![CDATA[Checker/TreeWalker/IllegalType]]></configKey>
<description><![CDATA[pattern for illegal class name]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.imports.ImportOrderCheck">
+<priority>MINOR</priority>
<name><![CDATA[Import Order]]></name>
<configKey><![CDATA[Checker/TreeWalker/ImportOrder]]></configKey>
<![CDATA[whether string comparision should be case sensitive or not. Default is true.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.indentation.IndentationCheck">
+<priority>MINOR</priority>
<name><![CDATA[Indentation]]></name>
<configKey><![CDATA[Checker/TreeWalker/Indentation]]></configKey>
<description><![CDATA[how much to indent a case label. Default is 4.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.InnerAssignmentCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.InnerAssignmentCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Inner Assignment]]></name>
<configKey><![CDATA[Checker/TreeWalker/InnerAssignment]]></configKey>
<description><![CDATA[assignments to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.design.InterfaceIsTypeCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.design.InterfaceIsTypeCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Interface Is Type]]></name>
<configKey><![CDATA[Checker/TreeWalker/InterfaceIsType]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Javadoc Method]]></name>
<configKey><![CDATA[Checker/TreeWalker/JavadocMethod]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocStyleCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocStyleCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Javadoc Style]]></name>
<configKey><![CDATA[Checker/TreeWalker/JavadocStyle]]></configKey>
<description><![CDATA[definitions to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocTypeCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Javadoc Type]]></name>
<configKey><![CDATA[Checker/TreeWalker/JavadocType]]></configKey>
<description><![CDATA[definitions to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocVariableCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Javadoc Variable]]></name>
<configKey><![CDATA[Checker/TreeWalker/JavadocVariable]]></configKey>
<description><![CDATA[visibility scope where Javadoc comments are not checked]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.LeftCurlyCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.LeftCurlyCheck">
+<priority>MINOR</priority>
<name><![CDATA[Left Curly]]></name>
<configKey><![CDATA[Checker/TreeWalker/LeftCurly]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Line Length]]></name>
<configKey><![CDATA[Checker/TreeWalker/LineLength]]></configKey>
<description><![CDATA[number of expanded spaces for a tab character. Default is 8.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.LocalFinalVariableNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.LocalFinalVariableNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Local Final Variable Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/LocalFinalVariableName]]></configKey>
<![CDATA[Validates identifiers for local, final variables, including catch parameters]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Local Variable Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/LocalVariableName]]></configKey>
<![CDATA[Controls whether the check applies to variable declarations or catch clause parameters]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MagicNumberCheck">
+<priority>MINOR</priority>
<name><![CDATA[Magic Number]]></name>
<configKey><![CDATA[Checker/TreeWalker/MagicNumber]]></configKey>
<description><![CDATA[non-magic numbers. Default is -1,0,1,2.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.MemberNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.MemberNameCheck" >
+<priority>MAJOR</priority>
+ <cardinality>MULTIPLE</cardinality>
<name><![CDATA[Member Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/MemberName]]></configKey>
<description><![CDATA[Controls whether to apply the check to private member. Default is true.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.MethodLengthCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.MethodLengthCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Method Length]]></name>
<configKey><![CDATA[Checker/TreeWalker/MethodLength]]></configKey>
<description><![CDATA[blocks to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.MethodNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.MethodNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Method Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/MethodName]]></configKey>
<description><![CDATA[Validates identifiers for methods]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.MethodParamPadCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.MethodParamPadCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Method Param Pad]]></name>
<configKey><![CDATA[Checker/TreeWalker/MethodParamPad]]></configKey>
<description><![CDATA[tokens to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MissingCtorCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MissingCtorCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Missing Constructor]]></name>
<configKey><![CDATA[Checker/TreeWalker/MissingCtor]]></configKey>
<description>
<![CDATA[Checks that classes (except abstract one) define a constructor and don't rely on the default one.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MissingSwitchDefaultCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MissingSwitchDefaultCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Missing Switch Default]]></name>
<configKey><![CDATA[Checker/TreeWalker/MissingSwitchDefault]]></configKey>
<description><![CDATA[Checks that switch statement has default clause.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ModifiedControlVariableCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Modified Control Variable]]></name>
<configKey><![CDATA[Checker/TreeWalker/ModifiedControlVariable]]></configKey>
<description>
<![CDATA[Check for ensuring that for loop control variables are not modified inside the for block.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.modifier.ModifierOrderCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.modifier.ModifierOrderCheck">
+<priority>MINOR</priority>
<name><![CDATA[Modifier Order]]></name>
<configKey><![CDATA[Checker/TreeWalker/ModifierOrder]]></configKey>
<description>
<![CDATA[Checks that the order of modifiers conforms to the suggestions in the Java Language specification, sections 8.1.1, 8.3.1 and 8.4.3. The correct order is : public, protected, private, abstract, static, final, transient, volatile, synchronized, native, strictfp.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MultipleStringLiteralsCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MultipleStringLiteralsCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Multiple String Literals]]></name>
<configKey><![CDATA[Checker/TreeWalker/MultipleStringLiterals]]></configKey>
<cardinality>MULTIPLE</cardinality>
<![CDATA[Token type names where duplicate strings are ignored even if they don't match ignoredStringsRegexp. This allows you to exclude syntactical contexts like Annotations or static initializers from the check.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MultipleVariableDeclarationsCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.MultipleVariableDeclarationsCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Multiple Variable Declarations]]></name>
<configKey><![CDATA[Checker/TreeWalker/MultipleVariableDeclarations]]></configKey>
<description>
<![CDATA[Checks that each variable declaration is in its own statement and on its own line.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.design.MutableExceptionCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.design.MutableExceptionCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Mutable Exception]]></name>
<configKey><![CDATA[Checker/TreeWalker/MutableException]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.NPathComplexityCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.metrics.NPathComplexityCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[NPath Complexity]]></name>
<configKey><![CDATA[Checker/TreeWalker/NPathComplexity]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck">
+<priority>MINOR</priority>
<name><![CDATA[Need Braces]]></name>
<configKey><![CDATA[Checker/TreeWalker/NeedBraces]]></configKey>
<description><![CDATA[blocks to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.NestedIfDepthCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.NestedIfDepthCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Nested If Depth]]></name>
<configKey><![CDATA[Checker/TreeWalker/NestedIfDepth]]></configKey>
<description><![CDATA[allowed nesting depth. Default is 1.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.NestedTryDepthCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.NestedTryDepthCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Nested Try Depth]]></name>
<configKey><![CDATA[Checker/TreeWalker/NestedTryDepth]]></configKey>
<description><![CDATA[allowed nesting depth. Default is 1.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.NewlineAtEndOfFileCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.NewlineAtEndOfFileCheck">
+<priority>MINOR</priority>
<name><![CDATA[Newline At End Of File]]></name>
<configKey><![CDATA[Checker/NewlineAtEndOfFile]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceAfterCheck">
+<priority>MINOR</priority>
<name><![CDATA[No Whitespace After]]></name>
<configKey><![CDATA[Checker/TreeWalker/NoWhitespaceAfter]]></configKey>
<description><![CDATA[tokens to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceBeforeCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.NoWhitespaceBeforeCheck">
+<priority>MINOR</priority>
<name><![CDATA[No Whitespace Before]]></name>
<configKey><![CDATA[Checker/TreeWalker/NoWhitespaceBefore]]></configKey>
<description><![CDATA[tokens to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.OperatorWrapCheck">
+<priority>MINOR</priority>
<name><![CDATA[Operator Wrap]]></name>
<configKey><![CDATA[Checker/TreeWalker/OperatorWrap]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.PackageDeclarationCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.PackageDeclarationCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Package Declaration]]></name>
<configKey><![CDATA[Checker/TreeWalker/PackageDeclaration]]></configKey>
<description><![CDATA[Ensures there is a package declaration.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.PackageNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.PackageNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Package Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/PackageName]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ParameterAssignmentCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ParameterAssignmentCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Parameter Assignment]]></name>
<configKey><![CDATA[Checker/TreeWalker/ParameterAssignment]]></configKey>
<description><![CDATA[Disallow assignment of parameters.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.ParameterNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.ParameterNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Parameter Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/ParameterName]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.ParameterNumberCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.sizes.ParameterNumberCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Parameter Number]]></name>
<configKey><![CDATA[Checker/TreeWalker/ParameterNumber]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.ParenPadCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.ParenPadCheck">
+<priority>MINOR</priority>
<name><![CDATA[Paren Pad]]></name>
<configKey><![CDATA[Checker/TreeWalker/ParenPad]]></configKey>
<description><![CDATA[tokens to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.modifier.RedundantModifierCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.modifier.RedundantModifierCheck">
+<priority>MINOR</priority>
<name><![CDATA[Redundant Modifier]]></name>
<configKey><![CDATA[Checker/TreeWalker/RedundantModifier]]></configKey>
<description><![CDATA[tokens to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.RedundantThrowsCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.RedundantThrowsCheck">
+<priority>MINOR</priority>
<name><![CDATA[Redundant Throws]]></name>
<configKey><![CDATA[Checker/TreeWalker/RedundantThrows]]></configKey>
<![CDATA[whether subclass of another declared exception is allowed in throws clause. Default is false.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.RegexpCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.RegexpCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Regexp]]></name>
<configKey><![CDATA[Checker/TreeWalker/Regexp]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.RequireThisCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Require This]]></name>
<configKey><![CDATA[Checker/TreeWalker/RequireThis]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ReturnCountCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.ReturnCountCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Return Count]]></name>
<configKey><![CDATA[Checker/TreeWalker/ReturnCount]]></configKey>
<description><![CDATA[method names to ingone]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck">
+<priority>MINOR</priority>
<name><![CDATA[Right Curly]]></name>
<configKey><![CDATA[Checker/TreeWalker/RightCurly]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanExpressionCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanExpressionCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Simplify Boolean Expression]]></name>
<configKey><![CDATA[Checker/TreeWalker/SimplifyBooleanExpression]]></configKey>
<description><![CDATA[Checks for overly complicated boolean expressions.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanReturnCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SimplifyBooleanReturnCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Simplify Boolean Return]]></name>
<configKey><![CDATA[Checker/TreeWalker/SimplifyBooleanReturn]]></configKey>
<description><![CDATA[Checks for overly complicated boolean return statements.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.StaticVariableNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.StaticVariableNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Static Variable Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/StaticVariableName]]></configKey>
<description><![CDATA[Validates identifiers for static, non-final fields]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.duplicates.StrictDuplicateCodeCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.duplicates.StrictDuplicateCodeCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Strict Duplicate Code]]></name>
<configKey><![CDATA[Checker/StrictDuplicateCode]]></configKey>
<description><![CDATA[name of the file charset]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.StringLiteralEqualityCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.StringLiteralEqualityCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[String Literal Equality]]></name>
<configKey><![CDATA[Checker/TreeWalker/StringLiteralEquality]]></configKey>
<description><![CDATA[Checks that string literals are not used with == or !=.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SuperCloneCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SuperCloneCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Super Clone]]></name>
<configKey><![CDATA[Checker/TreeWalker/SuperClone]]></configKey>
<description><![CDATA[Checks that an overriding clone() method invokes super.clone().]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SuperFinalizeCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.SuperFinalizeCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Super Finalize]]></name>
<configKey><![CDATA[Checker/TreeWalker/SuperFinalize]]></configKey>
<description><![CDATA[Checks that an overriding finalize() method invokes super.finalize().]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.design.ThrowsCountCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.design.ThrowsCountCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Throws Count]]></name>
<configKey><![CDATA[Checker/TreeWalker/ThrowsCount]]></configKey>
<description><![CDATA[maximum allowed number of throws statments]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.TodoCommentCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.TodoCommentCheck">
+<priority>MINOR</priority>
<name><![CDATA[Comment pattern matcher]]></name>
<configKey><![CDATA[Checker/TreeWalker/TodoComment]]></configKey>
<description><![CDATA[Regular expression pattern to check. Default is TODO:]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.indentation.TrailingCommentCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.indentation.TrailingCommentCheck">
+<priority>MINOR</priority>
<name><![CDATA[Trailing Comment]]></name>
<configKey><![CDATA[Checker/TreeWalker/TrailingComment]]></configKey>
<!--
Deactivated. See http://jira.codehaus.org/browse/SONAR-1698
- <rule key="com.puppycrawl.tools.checkstyle.checks.TranslationCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.TranslationCheck">
+<priority>MINOR</priority>
<name><![CDATA[Translation]]></name>
<configKey><![CDATA[Checker/Translation]]></configKey>
</param>
</rule>-->
- <rule key="com.puppycrawl.tools.checkstyle.checks.naming.TypeNameCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.naming.TypeNameCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Type Name]]></name>
<configKey><![CDATA[Checker/TreeWalker/TypeName]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.TypecastParenPadCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.TypecastParenPadCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Typecast Paren Pad]]></name>
<configKey><![CDATA[Checker/TreeWalker/TypecastParenPad]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.UncommentedMainCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.UncommentedMainCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Uncommented Main]]></name>
<configKey><![CDATA[Checker/TreeWalker/UncommentedMain]]></configKey>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.coding.UnnecessaryParenthesesCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.coding.UnnecessaryParenthesesCheck">
+<priority>MINOR</priority>
<name><![CDATA[Unnecessary Parentheses]]></name>
<configKey><![CDATA[Checker/TreeWalker/UnnecessaryParentheses]]></configKey>
<description><![CDATA[Checks if unnecessary parentheses are used in a statement or expression.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.imports.UnusedImportsCheck" priority="INFO">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.imports.UnusedImportsCheck">
+<priority>INFO</priority>
<name><![CDATA[Unused Imports]]></name>
<configKey><![CDATA[Checker/TreeWalker/UnusedImports]]></configKey>
<description><![CDATA[Checks for unused import statements.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.UpperEllCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.UpperEllCheck">
+<priority>MINOR</priority>
<name><![CDATA[Upper Ell]]></name>
<configKey><![CDATA[Checker/TreeWalker/UpperEll]]></configKey>
<description><![CDATA[Checks that long constants are defined with an upper ell. That is ' L' and not 'l'.
This is in accordance to the Java Language Specification, <a href="http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#48282">Section 3.10.1</a>.]]></description>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.design.VisibilityModifierCheck" priority="MAJOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.design.VisibilityModifierCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Visibility Modifier]]></name>
<configKey><![CDATA[Checker/TreeWalker/VisibilityModifier]]></configKey>
<![CDATA[pattern for public members that should be ignored. Default is ^serialVersionUID$.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAfterCheck">
+<priority>MINOR</priority>
<name><![CDATA[Whitespace After]]></name>
<configKey><![CDATA[Checker/TreeWalker/WhitespaceAfter]]></configKey>
<description><![CDATA[tokens to check]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.whitespace.WhitespaceAroundCheck">
+<priority>MINOR</priority>
<name><![CDATA[Whitespace Around]]></name>
<configKey><![CDATA[Checker/TreeWalker/WhitespaceAround]]></configKey>
<description><![CDATA[allow empty method bodies. Default is false.]]></description>
</param>
</rule>
- <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.WriteTagCheck" priority="MINOR">
+ <rule key="com.puppycrawl.tools.checkstyle.checks.javadoc.WriteTagCheck">
+<priority>MINOR</priority>
<name><![CDATA[Write Tag]]></name>
<configKey><![CDATA[Checker/TreeWalker/WriteTag]]></configKey>
<rules>
<!-- Findbugs 1.3.9 -->
- <rule key="BC_IMPOSSIBLE_DOWNCAST" priority="BLOCKER">
+ <rule key="BC_IMPOSSIBLE_DOWNCAST">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - Impossible downcast]]></name>
<configKey><![CDATA[BC_IMPOSSIBLE_DOWNCAST]]></configKey>
<description>
<![CDATA[This cast will always throw a ClassCastException. The analysis believes it knows the precise type of the value being cast, and the attempt to downcast it to a subtype will always fail by throwing a ClassCastException.]]></description>
</rule>
- <rule key="BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY" priority="BLOCKER">
+ <rule key="BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - Impossible downcast of toArray() result]]></name>
<configKey><![CDATA[BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY]]></configKey>
<p>The correct way to do get an array of a specific type from a collection is to use <code>c.toArray(new String[]);</code> or <code>c.toArray(new String[c.size()]);</code> (the latter is slightly more efficient).</p>
<p>There is one common/known exception exception to this. The toArray() method of lists returned by Arrays.asList(...) will return a covariantly typed array. For example, <code>Arrays.asArray(new String[] { "a" }).toArray()</code> will return a String []. FindBugs attempts to detect and suppress such cases, but may miss some.</p>]]></description>
</rule>
- <rule key="EC_INCOMPATIBLE_ARRAY_COMPARE" priority="BLOCKER">
+ <rule key="EC_INCOMPATIBLE_ARRAY_COMPARE">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - equals(...) used to compare incompatible arrays]]></name>
<configKey><![CDATA[EC_INCOMPATIBLE_ARRAY_COMPARE]]></configKey>
<description>
<![CDATA[This method invokes the .equals(Object o) to compare two arrays, but the arrays of of incompatible types (e.g., String[] and StringBuffer[], or String[] and int[]). They will never be equal. In addition, when equals(...) is used to compare arrays it only checks to see if they are the same array, and ignores the contents of the arrays.]]></description>
</rule>
- <rule key="EC_INCOMPATIBLE_ARRAY_COMPARE" priority="BLOCKER">
+ <rule key="EC_INCOMPATIBLE_ARRAY_COMPARE">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - equals(...) used to compare incompatible arrays]]></name>
<configKey><![CDATA[EC_INCOMPATIBLE_ARRAY_COMPARE]]></configKey>
<description>
<![CDATA[This method invokes the .equals(Object o) to compare two arrays, but the arrays of of incompatible types (e.g., String[] and StringBuffer[], or String[] and int[]). They will never be equal. In addition, when equals(...) is used to compare arrays it only checks to see if they are the same array, and ignores the contents of the arrays.]]></description>
</rule>
- <rule key="LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE" priority="MAJOR">
+ <rule key="LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Potential lost logger changes due to weak reference in OpenJDK ]]></name>
<configKey><![CDATA[LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE]]></configKey>
]]></description>
</rule>
- <rule key="NP_CLOSING_NULL" priority="BLOCKER">
+ <rule key="NP_CLOSING_NULL">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - close() invoked on a value that is always null]]></name>
<configKey><![CDATA[NP_CLOSING_NULL]]></configKey>
<![CDATA[close() is being invoked on a value that is always null. If this statement is executed, a null pointer exception will occur. But the big risk here you never close something that should be closed.]]></description>
</rule>
- <rule key="RC_REF_COMPARISON_BAD_PRACTICE" priority="MAJOR">
+ <rule key="RC_REF_COMPARISON_BAD_PRACTICE">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Suspicious reference comparison to constant]]></name>
<configKey><![CDATA[RC_REF_COMPARISON_BAD_PRACTICE]]></configKey>
<![CDATA[This method compares a reference value to a constant using the == or != operator, where the correct way to compare instances of this type is generally with the equals() method. It is possible to create distinct instances that are equal but do not compare as == since they are different objects. Examples of classes which should generally not be compared by reference are java.lang.Integer, java.lang.Float, etc.]]></description>
</rule>
- <rule key="RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN" priority="MAJOR">
+ <rule key="RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Suspicious reference comparison of Boolean values]]></name>
<configKey><![CDATA[RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN]]></configKey>
<![CDATA[This method compares two Boolean values using the == or != operator. Normally, there are only two Boolean values (Boolean.TRUE and Boolean.FALSE), but it is possible to create other Boolean objects using the new Boolean(b) constructor. It is best to avoid such objects, but if they do exist, then checking Boolean objects for equality using == or != will give results than are different than you would get using .equals(...)]]></description>
</rule>
- <rule key="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED" priority="MAJOR">
+ <rule key="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Return value of putIfAbsent ignored, value passed to putIfAbsent reused ]]></name>
<configKey><![CDATA[RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED]]></configKey>
<![CDATA[The putIfAbsent method is typically used to ensure that a single value is associated with a given key (the first value for which put if absent succeeds). If you ignore the return value and retain a reference to the value passed in, you run the risk of retaining a value that is not the one that is associated with the key in the map. If it matters which one you use and you use the one that isn't stored in the map, your program will behave incorrectly.]]></description>
</rule>
- <rule key="SIC_THREADLOCAL_DEADLY_EMBRACE" priority="MAJOR">
+ <rule key="SIC_THREADLOCAL_DEADLY_EMBRACE">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Deadly embrace of non-static inner class and thread local]]></name>
<configKey><![CDATA[SIC_THREADLOCAL_DEADLY_EMBRACE]]></configKey>
<![CDATA[This class is an inner class, but should probably be a static inner class. As it is, there is a serious danger of a deadly embrace between the inner class and the thread local in the outer class. Because the inner class isn't static, it retains a reference to the outer class. If the thread local contains a reference to an instance of the inner class, the inner and outer instance will both be reachable and not eligible for garbage collection.]]></description>
</rule>
- <rule key="UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR" priority="MAJOR">
+ <rule key="UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Uninitialized read of field method called from constructor of superclass]]></name>
<configKey><![CDATA[UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR]]></configKey>
<p>When a B is constructed, the constructor for the A class is invoked before the constructor for B sets value. Thus, when the constructor for A invokes getValue, an uninitialized value is read for value.</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED" priority="MAJOR">
+ <rule key="VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - MessageFormat supplied where printf style format expected ]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED]]></configKey>
<!-- Before Findbugs 1.3.9 -->
- <rule key="UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR" priority="MINOR">
+ <rule key="UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">
+<priority>MINOR</priority>
<name><![CDATA[Correctness - Field not initialized in constructor]]></name>
<configKey><![CDATA[UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR]]></configKey>
<description><![CDATA[<p>This field is never initialized within any constructor, and is therefore could be null after the object is constructed. This could be a either an error or a questionable design, since it means a null pointer exception will be generated if that field is dereferenced before being initialized.</p>]]></description>
</rule>
- <rule key="NP_UNWRITTEN_FIELD" priority="MAJOR">
+ <rule key="NP_UNWRITTEN_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Read of unwritten field]]></name>
<configKey><![CDATA[NP_UNWRITTEN_FIELD]]></configKey>
<description><![CDATA[<p>The program is dereferencing a field that does not seem to ever have a non-null value written to it. Dereferencing this value will generate a null pointer exception.</p>]]></description>
</rule>
- <rule key="UWF_UNWRITTEN_FIELD" priority="MINOR">
+ <rule key="UWF_UNWRITTEN_FIELD">
+<priority>MINOR</priority>
<name><![CDATA[Correctness - Unwritten field]]></name>
<configKey><![CDATA[UWF_UNWRITTEN_FIELD]]></configKey>
<description><![CDATA[<p>This field is never written. All reads of it will return the default value. Check for errors (should it have been initialized?), or remove it if it is useless.</p>]]></description>
</rule>
- <rule key="SKIPPED_CLASS_TOO_BIG" priority="MINOR">
+ <rule key="SKIPPED_CLASS_TOO_BIG">
+<priority>MINOR</priority>
<name><![CDATA[Dodgy - Class too big for analysis]]></name>
<configKey><![CDATA[SKIPPED_CLASS_TOO_BIG]]></configKey>
<description><![CDATA[<p>This class is bigger than can be effectively handled, and was not fully analyzed for errors.
</p>]]></description>
</rule>
- <rule key="DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS" priority="MINOR">
+ <rule key="DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS">
+<priority>MINOR</priority>
<name><![CDATA[Correctness - Creation of ScheduledThreadPoolExecutor with zero core threads]]></name>
<configKey><![CDATA[DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS]]></configKey>
A ScheduledThreadPoolExecutor with zero core threads will never execute anything; changes to the max pool size are ignored.
</p>]]></description>
</rule>
- <rule key="DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR" priority="MINOR">
+ <rule key="DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR">
+<priority>MINOR</priority>
<name><![CDATA[Correctness - Futile attempt to change max pool size of ScheduledThreadPoolExecutor]]></name>
<configKey><![CDATA[DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR]]></configKey>
While ScheduledThreadPoolExecutor inherits from ThreadPoolExecutor, a few of the inherited tuning methods are not useful for it. In particular, because it acts as a fixed-sized pool using corePoolSize threads and an unbounded queue, adjustments to maximumPoolSize have no useful effect.
</p>]]></description>
</rule>
- <rule key="DMI_UNSUPPORTED_METHOD" priority="MAJOR">
+ <rule key="DMI_UNSUPPORTED_METHOD">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Call to unsupported method]]></name>
<configKey><![CDATA[DMI_UNSUPPORTED_METHOD]]></configKey>
<description><![CDATA[<p>All targets of this method invocation throw an UnsupportedOperationException.
</p>]]></description>
</rule>
- <rule key="DMI_EMPTY_DB_PASSWORD" priority="CRITICAL">
+ <rule key="DMI_EMPTY_DB_PASSWORD">
+<priority>CRITICAL</priority>
<name><![CDATA[Security - Empty database password]]></name>
<configKey><![CDATA[DMI_EMPTY_DB_PASSWORD]]></configKey>
<description><![CDATA[<p>This code creates a database connect using a blank or empty password. This indicates that the database is not protected by a password.
</p>]]></description>
</rule>
- <rule key="DMI_CONSTANT_DB_PASSWORD" priority="BLOCKER">
+ <rule key="DMI_CONSTANT_DB_PASSWORD">
+<priority>BLOCKER</priority>
<name><![CDATA[Security - Hardcoded constant database password]]></name>
<configKey><![CDATA[DMI_CONSTANT_DB_PASSWORD]]></configKey>
easily learn the password.
</p>]]></description>
</rule>
- <rule key="HRS_REQUEST_PARAMETER_TO_COOKIE" priority="MAJOR">
+ <rule key="HRS_REQUEST_PARAMETER_TO_COOKIE">
+<priority>MAJOR</priority>
<name><![CDATA[Security - HTTP cookie formed from untrusted input]]></name>
<configKey><![CDATA[HRS_REQUEST_PARAMETER_TO_COOKIE]]></configKey>
consider using a commercial static analysis or pen-testing tool.
</p>]]></description>
</rule>
- <rule key="HRS_REQUEST_PARAMETER_TO_HTTP_HEADER" priority="MAJOR">
+ <rule key="HRS_REQUEST_PARAMETER_TO_HTTP_HEADER">
+<priority>MAJOR</priority>
<name><![CDATA[Security - HTTP Response splitting vulnerability]]></name>
<configKey><![CDATA[HRS_REQUEST_PARAMETER_TO_HTTP_HEADER]]></configKey>
consider using a commercial static analysis or pen-testing tool.
</p>]]></description>
</rule>
- <rule key="XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER" priority="CRITICAL">
+ <rule key="XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER">
+<priority>CRITICAL</priority>
<name><![CDATA[Security - Servlet reflected cross site scripting vulnerability]]></name>
<configKey><![CDATA[XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER]]></configKey>
consider using a commercial static analysis or pen-testing tool.
</p>]]></description>
</rule>
- <rule key="XSS_REQUEST_PARAMETER_TO_SEND_ERROR" priority="CRITICAL">
+ <rule key="XSS_REQUEST_PARAMETER_TO_SEND_ERROR">
+<priority>CRITICAL</priority>
<name><![CDATA[Security - Servlet reflected cross site scripting vulnerability]]></name>
<configKey><![CDATA[XSS_REQUEST_PARAMETER_TO_SEND_ERROR]]></configKey>
consider using a commercial static analysis or pen-testing tool.
</p>]]></description>
</rule>
- <rule key="XSS_REQUEST_PARAMETER_TO_JSP_WRITER" priority="CRITICAL">
+ <rule key="XSS_REQUEST_PARAMETER_TO_JSP_WRITER">
+<priority>CRITICAL</priority>
<name><![CDATA[Security - JSP reflected cross site scripting vulnerability]]></name>
<configKey><![CDATA[XSS_REQUEST_PARAMETER_TO_JSP_WRITER]]></configKey>
consider using a commercial static analysis or pen-testing tool.
</p>]]></description>
</rule>
- <rule key="SW_SWING_METHODS_INVOKED_IN_SWING_THREAD" priority="MAJOR">
+ <rule key="SW_SWING_METHODS_INVOKED_IN_SWING_THREAD">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Certain swing methods needs to be invoked in Swing thread]]></name>
<configKey><![CDATA[SW_SWING_METHODS_INVOKED_IN_SWING_THREAD]]></configKey>
components to be realized. As they are being realized (that is, not necessarily
visible), they could trigger listener notification on the event dispatch thread.</p>]]></description>
</rule>
- <rule key="IL_INFINITE_LOOP" priority="CRITICAL">
+ <rule key="IL_INFINITE_LOOP">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - An apparent infinite loop]]></name>
<configKey><![CDATA[IL_INFINITE_LOOP]]></configKey>
<description><![CDATA[<p>This loop doesn't seem to have a way to terminate (other than by perhaps
throwing an exception).</p>]]></description>
</rule>
- <rule key="IL_INFINITE_RECURSIVE_LOOP" priority="CRITICAL">
+ <rule key="IL_INFINITE_RECURSIVE_LOOP">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - An apparent infinite recursive loop]]></name>
<configKey><![CDATA[IL_INFINITE_RECURSIVE_LOOP]]></configKey>
<description><![CDATA[<p>This method unconditionally invokes itself. This would seem to indicate
an infinite recursive loop that will result in a stack overflow.</p>]]></description>
</rule>
- <rule key="IL_CONTAINER_ADDED_TO_ITSELF" priority="CRITICAL">
+ <rule key="IL_CONTAINER_ADDED_TO_ITSELF">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - A collection is added to itself]]></name>
<configKey><![CDATA[IL_CONTAINER_ADDED_TO_ITSELF]]></configKey>
set will throw a StackOverflowException.
</p>]]></description>
</rule>
- <rule key="VO_VOLATILE_REFERENCE_TO_ARRAY" priority="MAJOR">
+ <rule key="VO_VOLATILE_REFERENCE_TO_ARRAY">
+<priority>MAJOR</priority>
<name>
<![CDATA[Multithreaded correctness - A volatile reference to an array doesn't treat the array elements as volatile]]></name>
<configKey><![CDATA[VO_VOLATILE_REFERENCE_TO_ARRAY]]></configKey>
one of the atomic array classes in java.util.concurrent (provided
in Java 5.0).</p>]]></description>
</rule>
- <rule key="UI_INHERITANCE_UNSAFE_GETRESOURCE" priority="MAJOR">
+ <rule key="UI_INHERITANCE_UNSAFE_GETRESOURCE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Usage of GetResource may be unsafe if class is extended]]></name>
<configKey><![CDATA[UI_INHERITANCE_UNSAFE_GETRESOURCE]]></configKey>
results other than expected if this class is extended by a class in
another package.</p>]]></description>
</rule>
- <rule key="NP_BOOLEAN_RETURN_NULL" priority="MAJOR">
+ <rule key="NP_BOOLEAN_RETURN_NULL">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method with Boolean return type returns explicit null]]></name>
<configKey><![CDATA[NP_BOOLEAN_RETURN_NULL]]></configKey>
this will result in a NullPointerException.
</p>]]></description>
</rule>
- <rule key="NP_SYNC_AND_NULL_CHECK_FIELD" priority="MAJOR">
+ <rule key="NP_SYNC_AND_NULL_CHECK_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Synchronize and null check on the same field.]]></name>
<configKey><![CDATA[NP_SYNC_AND_NULL_CHECK_FIELD]]></configKey>
thrown and the check would be pointless. Better to synchronize on
another field.</p>]]></description>
</rule>
- <rule key="RpC_REPEATED_CONDITIONAL_TEST" priority="MAJOR">
+ <rule key="RpC_REPEATED_CONDITIONAL_TEST">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Repeated conditional tests]]></name>
<configKey><![CDATA[RpC_REPEATED_CONDITIONAL_TEST]]></configKey>
(e.g., <code>x == 0 || y == 0</code>).
</p>]]></description>
</rule>
- <rule key="AM_CREATES_EMPTY_ZIP_FILE_ENTRY" priority="MAJOR">
+ <rule key="AM_CREATES_EMPTY_ZIP_FILE_ENTRY">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Creates an empty zip file entry]]></name>
<configKey><![CDATA[AM_CREATES_EMPTY_ZIP_FILE_ENTRY]]></configKey>
<code>putNextEntry()</code> and
<code>closeEntry()</code>.</p>]]></description>
</rule>
- <rule key="AM_CREATES_EMPTY_JAR_FILE_ENTRY" priority="MAJOR">
+ <rule key="AM_CREATES_EMPTY_JAR_FILE_ENTRY">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Creates an empty jar file entry]]></name>
<configKey><![CDATA[AM_CREATES_EMPTY_JAR_FILE_ENTRY]]></configKey>
<code>putNextEntry()</code> and
<code>closeEntry()</code>.</p>]]></description>
</rule>
- <rule key="IMSE_DONT_CATCH_IMSE" priority="MAJOR">
+ <rule key="IMSE_DONT_CATCH_IMSE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Dubious catching of IllegalMonitorStateException]]></name>
<configKey><![CDATA[IMSE_DONT_CATCH_IMSE]]></configKey>
thrown in case of a design flaw in your code (calling wait or
notify on an object you do not hold a lock on).</p>]]></description>
</rule>
- <rule key="FL_MATH_USING_FLOAT_PRECISION" priority="CRITICAL">
+ <rule key="FL_MATH_USING_FLOAT_PRECISION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method performs math using floating point precision]]></name>
<configKey><![CDATA[FL_MATH_USING_FLOAT_PRECISION]]></configKey>
Floating point precision is very imprecise. For example,
16777216.0f + 1.0f = 16777216.0f. Consider using double math instead.</p>]]></description>
</rule>
- <rule key="CN_IDIOM" priority="MAJOR">
+ <rule key="CN_IDIOM">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class implements Cloneable but does not define or use clone method]]></name>
<configKey><![CDATA[CN_IDIOM]]></configKey>
Class implements Cloneable but does not define or
use the clone method.</p>]]></description>
</rule>
- <rule key="CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE" priority="MAJOR">
+ <rule key="CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class defines clone() but doesn't implement Cloneable]]></name>
<configKey><![CDATA[CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE]]></configKey>
can clone themselves), but just make sure that this is what you intended.
</p>]]></description>
</rule>
- <rule key="CN_IDIOM_NO_SUPER_CALL" priority="MAJOR">
+ <rule key="CN_IDIOM_NO_SUPER_CALL">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - clone method does not call super.clone()]]></name>
<configKey><![CDATA[CN_IDIOM_NO_SUPER_CALL]]></configKey>
<p> If all clone() methods call super.clone(), then they are guaranteed
to use Object.clone(), which always returns an object of the correct type.</p>]]></description>
</rule>
- <rule key="NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER" priority="MAJOR">
+ <rule key="NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Use of identifier that is a keyword in later versions of Java]]></name>
<configKey><![CDATA[NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER]]></configKey>
<description><![CDATA[<p>The identifier is a word that is reserved as a keyword in later versions of Java, and your code will need to be changed
in order to compile it in later versions of Java.</p>]]></description>
</rule>
- <rule key="NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER" priority="MAJOR">
+ <rule key="NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Use of identifier that is a keyword in later versions of Java]]></name>
<configKey><![CDATA[NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER]]></configKey>
any code that references this API,
will need to be changed in order to compile it in later versions of Java.</p>]]></description>
</rule>
- <rule key="DE_MIGHT_DROP" priority="MAJOR">
+ <rule key="DE_MIGHT_DROP">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method might drop exception]]></name>
<configKey><![CDATA[DE_MIGHT_DROP]]></configKey>
should be handled or reported in some way, or they should be thrown
out of the method.</p>]]></description>
</rule>
- <rule key="DE_MIGHT_IGNORE" priority="MAJOR">
+ <rule key="DE_MIGHT_IGNORE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method might ignore exception]]></name>
<configKey><![CDATA[DE_MIGHT_IGNORE]]></configKey>
should be handled or reported in some way, or they should be thrown
out of the method.</p>]]></description>
</rule>
- <rule key="DP_DO_INSIDE_DO_PRIVILEGED" priority="MAJOR">
+ <rule key="DP_DO_INSIDE_DO_PRIVILEGED">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method invoked that should be only be invoked inside a doPrivileged block]]></name>
<configKey><![CDATA[DP_DO_INSIDE_DO_PRIVILEGED]]></configKey>
If this code will be granted security permissions, but might be invoked by code that does not
have security permissions, then the invocation needs to occur inside a doPrivileged block.</p>]]></description>
</rule>
- <rule key="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED" priority="MAJOR">
+ <rule key="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Classloaders should only be created inside doPrivileged block]]></name>
<configKey><![CDATA[DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED]]></configKey>
If this code will be granted security permissions, but might be invoked by code that does not
have security permissions, then the classloader creation needs to occur inside a doPrivileged block.</p>]]></description>
</rule>
- <rule key="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS" priority="MINOR">
+ <rule key="JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS">
+<priority>MINOR</priority>
<name><![CDATA[Bad practice - Fields of immutable classes should be final]]></name>
<configKey><![CDATA[JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS]]></configKey>
that all fields are final.
.</p>]]></description>
</rule>
- <rule key="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED" priority="MAJOR">
+ <rule key="DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Thread passed where Runnable expected]]></name>
<configKey><![CDATA[DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED]]></configKey>
or cause unexpected behavior.
</p>]]></description>
</rule>
- <rule key="DMI_COLLECTION_OF_URLS" priority="BLOCKER">
+ <rule key="DMI_COLLECTION_OF_URLS">
+<priority>BLOCKER</priority>
<name><![CDATA[Performance - Maps and sets of URLs can be performance hogs]]></name>
<configKey><![CDATA[DMI_COLLECTION_OF_URLS]]></configKey>
Consider using <code>java.net.URI</code> instead.
</p>]]></description>
</rule>
- <rule key="DMI_BLOCKING_METHODS_ON_URL" priority="BLOCKER">
+ <rule key="DMI_BLOCKING_METHODS_ON_URL">
+<priority>BLOCKER</priority>
<name><![CDATA[Performance - The equals and hashCode methods of URL are blocking]]></name>
<configKey><![CDATA[DMI_BLOCKING_METHODS_ON_URL]]></configKey>
Consider using <code>java.net.URI</code> instead.
</p>]]></description>
</rule>
- <rule key="DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION" priority="MAJOR">
+ <rule key="DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION">
+<priority>MAJOR</priority>
<name>
<![CDATA[Correctness - Can't use reflection to check for presence of annotation without runtime retention]]></name>
<configKey><![CDATA[DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION]]></configKey>
(e.g., by using the isAnnotationPresent method).
.</p>]]></description>
</rule>
- <rule key="DM_EXIT" priority="MAJOR">
+ <rule key="DM_EXIT">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method invokes System.exit(...)]]></name>
<configKey><![CDATA[DM_EXIT]]></configKey>
hard or impossible for your code to be invoked by other code.
Consider throwing a RuntimeException instead.</p>]]></description>
</rule>
- <rule key="DM_RUN_FINALIZERS_ON_EXIT" priority="MAJOR">
+ <rule key="DM_RUN_FINALIZERS_ON_EXIT">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method invokes dangerous method runFinalizersOnExit]]></name>
<configKey><![CDATA[DM_RUN_FINALIZERS_ON_EXIT]]></configKey>
or Runtime.runFinalizersOnExit for any reason: they are among the most
dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></description>
</rule>
- <rule key="DM_STRING_CTOR" priority="MAJOR">
+ <rule key="DM_STRING_CTOR">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Method invokes inefficient new String(String) constructor]]></name>
<configKey><![CDATA[DM_STRING_CTOR]]></configKey>
from the <code>String</code> passed as a parameter. Just use the
argument <code>String</code> directly.</p>]]></description>
</rule>
- <rule key="DM_STRING_VOID_CTOR" priority="MAJOR">
+ <rule key="DM_STRING_VOID_CTOR">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Method invokes inefficient new String() constructor]]></name>
<configKey><![CDATA[DM_STRING_VOID_CTOR]]></configKey>
will be represented by the same <code>String</code> object. Therefore,
you should just use the empty string constant directly.</p>]]></description>
</rule>
- <rule key="DM_STRING_TOSTRING" priority="INFO">
+ <rule key="DM_STRING_TOSTRING">
+<priority>INFO</priority>
<name><![CDATA[Performance - Method invokes toString() method on a String]]></name>
<configKey><![CDATA[DM_STRING_TOSTRING]]></configKey>
<description><![CDATA[<p> Calling <code>String.toString()</code> is just a redundant operation.
Just use the String.</p>]]></description>
</rule>
- <rule key="DM_GC" priority="MAJOR">
+ <rule key="DM_GC">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Explicit garbage collection; extremely dubious except in benchmarking code]]></name>
<configKey><![CDATA[DM_GC]]></configKey>
can be expensive. Any situation that forces hundreds or thousands
of garbage collections will bring the machine to a crawl.</p>]]></description>
</rule>
- <rule key="DM_BOOLEAN_CTOR" priority="MAJOR">
+ <rule key="DM_BOOLEAN_CTOR">
+<priority>MAJOR</priority>
<name>
<![CDATA[Performance - Method invokes inefficient Boolean constructor; use Boolean.valueOf(...) instead]]></name>
<configKey><![CDATA[DM_BOOLEAN_CTOR]]></configKey>
only two useful values of this type. Use the <code>Boolean.valueOf()</code>
method (or Java 1.5 autoboxing) to create <code>Boolean</code> objects instead.</p>]]></description>
</rule>
- <rule key="DM_NUMBER_CTOR" priority="CRITICAL">
+ <rule key="DM_NUMBER_CTOR">
+<priority>CRITICAL</priority>
<name><![CDATA[Performance - Method invokes inefficient Number constructor; use static valueOf instead]]></name>
<configKey><![CDATA[DM_NUMBER_CTOR]]></configKey>
<code>Long</code>, <code>Integer</code>, <code>Short</code>, <code>Character</code>, and <code>Byte</code>.
</p>]]></description>
</rule>
- <rule key="DM_FP_NUMBER_CTOR" priority="MAJOR">
+ <rule key="DM_FP_NUMBER_CTOR">
+<priority>MAJOR</priority>
<name>
<![CDATA[Performance - Method invokes inefficient floating-point Number constructor; use static valueOf instead]]></name>
<configKey><![CDATA[DM_FP_NUMBER_CTOR]]></configKey>
use either autoboxing or the <code>valueOf()</code> method when creating instances of <code>Double</code> and <code>Float</code>.
</p>]]></description>
</rule>
- <rule key="DM_CONVERT_CASE" priority="INFO">
+ <rule key="DM_CONVERT_CASE">
+<priority>INFO</priority>
<name><![CDATA[Internationalization - Consider using Locale parameterized version of invoked method]]></name>
<configKey><![CDATA[DM_CONVERT_CASE]]></configKey>
<table><tr><td>String.toUpperCase( Locale l )</td></tr><tr><td>String.toLowerCase( Locale l )</td></tr></table>
<p>versions instead.</p>]]></description>
</rule>
- <rule key="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR" priority="MAJOR">
+ <rule key="BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Primitive value is unboxed and coerced for ternary operator]]></name>
<configKey><![CDATA[BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR]]></configKey>
converted to a floating point value, and boxed. See JLS Section 15.25.
</p>]]></description>
</rule>
- <rule key="BX_BOXING_IMMEDIATELY_UNBOXED" priority="MAJOR">
+ <rule key="BX_BOXING_IMMEDIATELY_UNBOXED">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Primitive value is boxed and then immediately unboxed]]></name>
<configKey><![CDATA[BX_BOXING_IMMEDIATELY_UNBOXED]]></configKey>
to immediately undo the work of the boxing.
</p>]]></description>
</rule>
- <rule key="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION" priority="MAJOR">
+ <rule key="BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Primitive value is boxed then unboxed to perform primitive coercion]]></name>
<configKey><![CDATA[BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION]]></configKey>
<description><![CDATA[<p>A primitive boxed value constructed and then immediately converted into a different primitive type
(e.g., <code>new Double(d).intValue()</code>). Just perform direct primitive coercion (e.g., <code>(int) d</code>).</p>]]></description>
</rule>
- <rule key="DM_BOXED_PRIMITIVE_TOSTRING" priority="MAJOR">
+ <rule key="DM_BOXED_PRIMITIVE_TOSTRING">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Method allocates a boxed primitive just to call toString]]></name>
<configKey><![CDATA[DM_BOXED_PRIMITIVE_TOSTRING]]></configKey>
<tr><td>new Boolean(true).toString()</td><td>Boolean.toString(true)</td></tr>
</table>]]></description>
</rule>
- <rule key="DM_NEW_FOR_GETCLASS" priority="MAJOR">
+ <rule key="DM_NEW_FOR_GETCLASS">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Method allocates an object, only to get the class object]]></name>
<configKey><![CDATA[DM_NEW_FOR_GETCLASS]]></configKey>
<description><![CDATA[<p>This method allocates an object just to call getClass() on it, in order to
retrieve the Class object for it. It is simpler to just access the .class property of the class.</p>]]></description>
</rule>
- <rule key="DM_MONITOR_WAIT_ON_CONDITION" priority="MAJOR">
+ <rule key="DM_MONITOR_WAIT_ON_CONDITION">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Monitor wait() called on Condition]]></name>
<configKey><![CDATA[DM_MONITOR_WAIT_ON_CONDITION]]></configKey>
methods defined by the <code>Condition</code> interface.
</p>]]></description>
</rule>
- <rule key="RV_01_TO_INT" priority="MAJOR">
+ <rule key="RV_01_TO_INT">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Random value from 0 to 1 is coerced to the integer 0]]></name>
<configKey><![CDATA[RV_01_TO_INT]]></configKey>
want to multiple the random value by something else before coercing it to an integer, or use the <code>Random.nextInt(n)</code> method.
</p>]]></description>
</rule>
- <rule key="DM_NEXTINT_VIA_NEXTDOUBLE" priority="MAJOR">
+ <rule key="DM_NEXTINT_VIA_NEXTDOUBLE">
+<priority>MAJOR</priority>
<name>
<![CDATA[Performance - Use the nextInt method of Random rather than nextDouble to generate a random integer]]></name>
<configKey><![CDATA[DM_NEXTINT_VIA_NEXTDOUBLE]]></configKey>
using <code>r.nextInt(n)</code>, rather than using <code>(int)(r.nextDouble() * n)</code>.
</p>]]></description>
</rule>
- <rule key="SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE" priority="CRITICAL">
+ <rule key="SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE">
+<priority>CRITICAL</priority>
<name><![CDATA[Security - Nonconstant string passed to execute method on an SQL statement]]></name>
<configKey><![CDATA[SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE]]></configKey>
SQL injection attacks.
</p>]]></description>
</rule>
- <rule key="SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING" priority="CRITICAL">
+ <rule key="SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING">
+<priority>CRITICAL</priority>
<name><![CDATA[Security - A prepared statement is generated from a nonconstant String]]></name>
<configKey><![CDATA[SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING]]></configKey>
be used to make the prepared statement do something unexpected and undesirable.
</p>]]></description>
</rule>
- <rule key="DM_USELESS_THREAD" priority="MAJOR">
+ <rule key="DM_USELESS_THREAD">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - A thread was created using the default empty run method]]></name>
<configKey><![CDATA[DM_USELESS_THREAD]]></configKey>
by passing a Runnable object. This thread, then, does nothing but waste time.
</p>]]></description>
</rule>
- <rule key="DC_DOUBLECHECK" priority="MAJOR">
+ <rule key="DC_DOUBLECHECK">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Possible double check of field]]></name>
<configKey><![CDATA[DC_DOUBLECHECK]]></configKey>
<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html"
>http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html</a>.</p>]]></description>
</rule>
- <rule key="FI_FINALIZER_NULLS_FIELDS" priority="MAJOR">
+ <rule key="FI_FINALIZER_NULLS_FIELDS">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Finalizer nulls fields]]></name>
<configKey><![CDATA[FI_FINALIZER_NULLS_FIELDS]]></configKey>
<description><![CDATA[<p> This finalizer nulls out fields. This is usually an error, as it does not aid garbage collection,
and the object is going to be garbage collected anyway.]]></description>
</rule>
- <rule key="FI_FINALIZER_ONLY_NULLS_FIELDS" priority="MAJOR">
+ <rule key="FI_FINALIZER_ONLY_NULLS_FIELDS">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Finalizer only nulls fields]]></name>
<configKey><![CDATA[FI_FINALIZER_ONLY_NULLS_FIELDS]]></configKey>
the object be garbage collected, finalized, and then garbage collected again. You should just remove the finalize
method.]]></description>
</rule>
- <rule key="FI_PUBLIC_SHOULD_BE_PROTECTED" priority="MAJOR">
+ <rule key="FI_PUBLIC_SHOULD_BE_PROTECTED">
+<priority>MAJOR</priority>
<name><![CDATA[Malicious code vulnerability - Finalizer should be protected, not public]]></name>
<configKey><![CDATA[FI_PUBLIC_SHOULD_BE_PROTECTED]]></configKey>
<description><![CDATA[<p> A class's <code>finalize()</code> method should have protected access,
not public.</p>]]></description>
</rule>
- <rule key="FI_EMPTY" priority="MAJOR">
+ <rule key="FI_EMPTY">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Empty finalizer should be deleted]]></name>
<configKey><![CDATA[FI_EMPTY]]></configKey>
<description><![CDATA[<p> Empty <code>finalize()</code> methods are useless, so they should
be deleted.</p>]]></description>
</rule>
- <rule key="FI_NULLIFY_SUPER" priority="CRITICAL">
+ <rule key="FI_NULLIFY_SUPER">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Finalizer nullifies superclass finalizer]]></name>
<configKey><![CDATA[FI_NULLIFY_SUPER]]></configKey>
actions defined for the superclass will not be performed.
Unless this is intended, delete this method.</p>]]></description>
</rule>
- <rule key="FI_USELESS" priority="MINOR">
+ <rule key="FI_USELESS">
+<priority>MINOR</priority>
<name><![CDATA[Bad practice - Finalizer does nothing but call superclass finalizer]]></name>
<configKey><![CDATA[FI_USELESS]]></configKey>
the superclass's <code>finalize()</code> method, making it
redundant. Delete it.</p>]]></description>
</rule>
- <rule key="FI_MISSING_SUPER_CALL" priority="MAJOR">
+ <rule key="FI_MISSING_SUPER_CALL">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Finalizer does not call superclass finalizer]]></name>
<configKey><![CDATA[FI_MISSING_SUPER_CALL]]></configKey>
actions defined for the superclass will not be performed.
Add a call to <code>super.finalize()</code>.</p>]]></description>
</rule>
- <rule key="FI_EXPLICIT_INVOCATION" priority="MAJOR">
+ <rule key="FI_EXPLICIT_INVOCATION">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Explicit invocation of finalizer]]></name>
<configKey><![CDATA[FI_EXPLICIT_INVOCATION]]></configKey>
Thus, it is a particularly bad idea, in the finalize method for a class X, invoke finalize
on objects referenced by X, because they may already be getting finalized in a separate thread.]]></description>
</rule>
- <rule key="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS" priority="MAJOR">
+ <rule key="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Equals checks for noncompatible operand]]></name>
<configKey><![CDATA[EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS]]></configKey>
is symmetric and transitive. Without those properties, very unexpected behavoirs are possible.
</p>]]></description>
</rule>
- <rule key="EQ_DONT_DEFINE_EQUALS_FOR_ENUM" priority="MAJOR">
+ <rule key="EQ_DONT_DEFINE_EQUALS_FOR_ENUM">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Covariant equals() method defined for enum]]></name>
<configKey><![CDATA[EQ_DONT_DEFINE_EQUALS_FOR_ENUM]]></configKey>
Don't do it.
</p>]]></description>
</rule>
- <rule key="EQ_SELF_USE_OBJECT" priority="MAJOR">
+ <rule key="EQ_SELF_USE_OBJECT">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Covariant equals() method defined, Object.equals(Object) inherited]]></name>
<configKey><![CDATA[EQ_SELF_USE_OBJECT]]></configKey>
The class should probably define a <code>boolean equals(Object)</code> method.
</p>]]></description>
</rule>
- <rule key="EQ_OTHER_USE_OBJECT" priority="MAJOR">
+ <rule key="EQ_OTHER_USE_OBJECT">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - equals() method defined that doesn't override Object.equals(Object)]]></name>
<configKey><![CDATA[EQ_OTHER_USE_OBJECT]]></configKey>
The class should probably define a <code>boolean equals(Object)</code> method.
</p>]]></description>
</rule>
- <rule key="EQ_OTHER_NO_OBJECT" priority="MAJOR">
+ <rule key="EQ_OTHER_NO_OBJECT">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - equals() method defined that doesn't override equals(Object)]]></name>
<configKey><![CDATA[EQ_OTHER_NO_OBJECT]]></configKey>
invoking super.equals(o).
</p>]]></description>
</rule>
- <rule key="EQ_SELF_NO_OBJECT" priority="MAJOR">
+ <rule key="EQ_SELF_NO_OBJECT">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Covariant equals() method defined]]></name>
<configKey><![CDATA[EQ_SELF_NO_OBJECT]]></configKey>
<code>java.lang.Object</code>, the parameter of <code>equals()</code>
must have type <code>java.lang.Object</code>.</p>]]></description>
</rule>
- <rule key="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC" priority="MAJOR">
+ <rule key="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - equals method overrides equals in superclass and may not be symmetric]]></name>
<configKey><![CDATA[EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC]]></configKey>
methods is not symmetric.
</p>]]></description>
</rule>
- <rule key="EQ_GETCLASS_AND_CLASS_CONSTANT" priority="CRITICAL">
+ <rule key="EQ_GETCLASS_AND_CLASS_CONSTANT">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - equals method fails for subtypes]]></name>
<configKey><![CDATA[EQ_GETCLASS_AND_CLASS_CONSTANT]]></configKey>
It is better to check if <code>this.getClass() == o.getClass()</code>.
</p>]]></description>
</rule>
- <rule key="EQ_UNUSUAL" priority="MINOR">
+ <rule key="EQ_UNUSUAL">
+<priority>MINOR</priority>
<name><![CDATA[Dodgy - Unusual equals method ]]></name>
<configKey><![CDATA[EQ_UNUSUAL]]></configKey>
this code, but it is worth reviewing.
</p>]]></description>
</rule>
- <rule key="EQ_COMPARING_CLASS_NAMES" priority="MAJOR">
+ <rule key="EQ_COMPARING_CLASS_NAMES">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - equals method compares class names rather than class objects]]></name>
<configKey><![CDATA[EQ_COMPARING_CLASS_NAMES]]></configKey>
different class loaders. Just check to see if the class objects are the same.
</p>]]></description>
</rule>
- <rule key="EQ_ALWAYS_TRUE" priority="BLOCKER">
+ <rule key="EQ_ALWAYS_TRUE">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - equals method always returns true]]></name>
<configKey><![CDATA[EQ_ALWAYS_TRUE]]></configKey>
Plus, it means that the equals method is not symmetric.
</p>]]></description>
</rule>
- <rule key="EQ_ALWAYS_FALSE" priority="BLOCKER">
+ <rule key="EQ_ALWAYS_FALSE">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - equals method always returns false]]></name>
<configKey><![CDATA[EQ_ALWAYS_FALSE]]></configKey>
</pre>
</p>]]></description>
</rule>
- <rule key="HSC_HUGE_SHARED_STRING_CONSTANT" priority="CRITICAL">
+ <rule key="HSC_HUGE_SHARED_STRING_CONSTANT">
+<priority>CRITICAL</priority>
<name><![CDATA[Performance - Huge string constants is duplicated across multiple class files]]></name>
<configKey><![CDATA[HSC_HUGE_SHARED_STRING_CONSTANT]]></configKey>
the size of the JDK by 1 megabyte.
</p>]]></description>
</rule>
- <rule key="NP_ARGUMENT_MIGHT_BE_NULL" priority="MAJOR">
+ <rule key="NP_ARGUMENT_MIGHT_BE_NULL">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Method does not check for null argument]]></name>
<configKey><![CDATA[NP_ARGUMENT_MIGHT_BE_NULL]]></configKey>
without a preceding null check.
</p>]]></description>
</rule>
- <rule key="NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT" priority="CRITICAL">
+ <rule key="NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - equals() method does not check for null argument]]></name>
<configKey><![CDATA[NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT]]></configKey>
false if passed a null value.
</p>]]></description>
</rule>
- <rule key="CO_SELF_NO_OBJECT" priority="MAJOR">
+ <rule key="CO_SELF_NO_OBJECT">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Covariant compareTo() method defined]]></name>
<configKey><![CDATA[CO_SELF_NO_OBJECT]]></configKey>
<code>Comparable</code> interface, the parameter of <code>compareTo()</code>
must have type <code>java.lang.Object</code>.</p>]]></description>
</rule>
- <rule key="HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS" priority="CRITICAL">
+ <rule key="HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Signature declares use of unhashable class in hashed construct]]></name>
<configKey><![CDATA[HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS]]></configKey>
equal objects have equal hashCodes.
</p>]]></description>
</rule>
- <rule key="HE_USE_OF_UNHASHABLE_CLASS" priority="CRITICAL">
+ <rule key="HE_USE_OF_UNHASHABLE_CLASS">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Use of class without a hashCode() method in a hashed data structure]]></name>
<configKey><![CDATA[HE_USE_OF_UNHASHABLE_CLASS]]></configKey>
An instance of this class is used in a hash data structure, making the need to
fix this problem of highest importance.]]></description>
</rule>
- <rule key="HE_HASHCODE_USE_OBJECT_EQUALS" priority="CRITICAL">
+ <rule key="HE_HASHCODE_USE_OBJECT_EQUALS">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Class defines hashCode() and uses Object.equals()]]></name>
<configKey><![CDATA[HE_HASHCODE_USE_OBJECT_EQUALS]]></configKey>
return 42; // any arbitrary constant will do
}</pre></p>]]></description>
</rule>
- <rule key="EQ_COMPARETO_USE_OBJECT_EQUALS" priority="CRITICAL">
+ <rule key="EQ_COMPARETO_USE_OBJECT_EQUALS">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Class defines compareTo(...) and uses Object.equals()]]></name>
<configKey><![CDATA[EQ_COMPARETO_USE_OBJECT_EQUALS]]></configKey>
is "Note: this class has a natural ordering that is inconsistent with equals."
</blockquote>]]></description>
</rule>
- <rule key="HE_HASHCODE_NO_EQUALS" priority="CRITICAL">
+ <rule key="HE_HASHCODE_NO_EQUALS">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Class defines hashCode() but not equals()]]></name>
<configKey><![CDATA[HE_HASHCODE_NO_EQUALS]]></configKey>
<code>equals()</code> method. Therefore, the class may
violate the invariant that equal objects must have equal hashcodes.</p>]]></description>
</rule>
- <rule key="HE_EQUALS_USE_HASHCODE" priority="CRITICAL">
+ <rule key="HE_EQUALS_USE_HASHCODE">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Class defines equals() and uses Object.hashCode()]]></name>
<configKey><![CDATA[HE_EQUALS_USE_HASHCODE]]></configKey>
return 42; // any arbitrary constant will do
}</pre>]]></description>
</rule>
- <rule key="HE_INHERITS_EQUALS_USE_HASHCODE" priority="CRITICAL">
+ <rule key="HE_INHERITS_EQUALS_USE_HASHCODE">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Class inherits equals() and uses Object.hashCode()]]></name>
<configKey><![CDATA[HE_INHERITS_EQUALS_USE_HASHCODE]]></configKey>
define the <code>hashCode()</code> method
to throw <code>UnsupportedOperationException</code>.</p>]]></description>
</rule>
- <rule key="HE_EQUALS_NO_HASHCODE" priority="MAJOR">
+ <rule key="HE_EQUALS_NO_HASHCODE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class defines equals() but not hashCode()]]></name>
<configKey><![CDATA[HE_EQUALS_NO_HASHCODE]]></configKey>
override <code>hashCode()</code>. Therefore, the class may violate the
invariant that equal objects must have equal hashcodes.</p>]]></description>
</rule>
- <rule key="EQ_ABSTRACT_SELF" priority="MAJOR">
+ <rule key="EQ_ABSTRACT_SELF">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Abstract class defines covariant equals() method]]></name>
<configKey><![CDATA[EQ_ABSTRACT_SELF]]></configKey>
<code>java.lang.Object</code>, the parameter of <code>equals()</code>
must have type <code>java.lang.Object</code>.</p>]]></description>
</rule>
- <rule key="ES_COMPARING_STRINGS_WITH_EQ" priority="MAJOR">
+ <rule key="ES_COMPARING_STRINGS_WITH_EQ">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Comparison of String objects using == or !=]]></name>
<configKey><![CDATA[ES_COMPARING_STRINGS_WITH_EQ]]></configKey>
value may be represented by two different String objects. Consider
using the <code>equals(Object)</code> method instead.</p>]]></description>
</rule>
- <rule key="ES_COMPARING_PARAMETER_STRING_WITH_EQ" priority="MAJOR">
+ <rule key="ES_COMPARING_PARAMETER_STRING_WITH_EQ">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Comparison of String parameter using == or !=]]></name>
<configKey><![CDATA[ES_COMPARING_PARAMETER_STRING_WITH_EQ]]></configKey>
fragile, and rarely leads to measurable performance gains. Consider
using the <code>equals(Object)</code> method instead.</p>]]></description>
</rule>
- <rule key="CO_ABSTRACT_SELF" priority="MAJOR">
+ <rule key="CO_ABSTRACT_SELF">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Abstract class defines covariant compareTo() method]]></name>
<configKey><![CDATA[CO_ABSTRACT_SELF]]></configKey>
<code>Comparable</code> interface, the parameter of <code>compareTo()</code>
must have type <code>java.lang.Object</code>.</p>]]></description>
</rule>
- <rule key="IS_FIELD_NOT_GUARDED" priority="CRITICAL">
+ <rule key="IS_FIELD_NOT_GUARDED">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Field not guarded against concurrent access]]></name>
<configKey><![CDATA[IS_FIELD_NOT_GUARDED]]></configKey>
<description><![CDATA[<p> This field is annotated with net.jcip.annotations.GuardedBy,
but can be accessed in a way that seems to violate the annotation.</p>]]></description>
</rule>
- <rule key="MSF_MUTABLE_SERVLET_FIELD" priority="MAJOR">
+ <rule key="MSF_MUTABLE_SERVLET_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Mutable servlet field]]></name>
<configKey><![CDATA[MSF_MUTABLE_SERVLET_FIELD]]></configKey>
simultaneous requests.
Thus, having a mutable instance field generally creates race conditions.]]></description>
</rule>
- <rule key="IS2_INCONSISTENT_SYNC" priority="CRITICAL">
+ <rule key="IS2_INCONSISTENT_SYNC">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Inconsistent synchronization]]></name>
<configKey><![CDATA[IS2_INCONSISTENT_SYNC]]></configKey>
distinguishing locked vs. unlocked accesses, the code in question may still
be correct.</p>]]></description>
</rule>
- <rule key="NN_NAKED_NOTIFY" priority="CRITICAL">
+ <rule key="NN_NAKED_NOTIFY">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Naked notify]]></name>
<configKey><![CDATA[NN_NAKED_NOTIFY]]></configKey>
mutable object state may have taken place in a method which then called
the method containing the notification.</p>]]></description>
</rule>
- <rule key="MS_EXPOSE_REP" priority="CRITICAL">
+ <rule key="MS_EXPOSE_REP">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Malicious code vulnerability - Public static method may expose internal representation by returning array]]></name>
<configKey><![CDATA[MS_EXPOSE_REP]]></configKey>
the underlying array.
One fix is to return a copy of the array.</p>]]></description>
</rule>
- <rule key="EI_EXPOSE_REP" priority="MAJOR">
+ <rule key="EI_EXPOSE_REP">
+<priority>MAJOR</priority>
<name>
<![CDATA[Malicious code vulnerability - May expose internal representation by returning reference to mutable object]]></name>
<configKey><![CDATA[EI_EXPOSE_REP]]></configKey>
important properties, you will need to do something different.
Returning a new copy of the object is better approach in many situations.</p>]]></description>
</rule>
- <rule key="EI_EXPOSE_REP2" priority="MAJOR">
+ <rule key="EI_EXPOSE_REP2">
+<priority>MAJOR</priority>
<name>
<![CDATA[Malicious code vulnerability - May expose internal representation by incorporating reference to mutable object]]></name>
<configKey><![CDATA[EI_EXPOSE_REP2]]></configKey>
important properties, you will need to do something different.
Storing a copy of the object is better approach in many situations.</p>]]></description>
</rule>
- <rule key="EI_EXPOSE_STATIC_REP2" priority="MAJOR">
+ <rule key="EI_EXPOSE_STATIC_REP2">
+<priority>MAJOR</priority>
<name>
<![CDATA[Malicious code vulnerability - May expose internal static state by storing a mutable object into a static field]]></name>
<configKey><![CDATA[EI_EXPOSE_STATIC_REP2]]></configKey>
important properties, you will need to do something different.
Storing a copy of the object is better approach in many situations.</p>]]></description>
</rule>
- <rule key="RU_INVOKE_RUN" priority="MAJOR">
+ <rule key="RU_INVOKE_RUN">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Invokes run on a thread (did you mean to start it instead?)]]></name>
<configKey><![CDATA[RU_INVOKE_RUN]]></configKey>
they are going to have their <code>run()</code> method invoked in a new thread,
in which case <code>Thread.start()</code> is the right method to call.</p>]]></description>
</rule>
- <rule key="SP_SPIN_ON_FIELD" priority="MAJOR">
+ <rule key="SP_SPIN_ON_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Method spins on field]]></name>
<configKey><![CDATA[SP_SPIN_ON_FIELD]]></configKey>
infinite loop. The class should be changed so it uses proper
synchronization (including wait and notify calls).</p>]]></description>
</rule>
- <rule key="NS_DANGEROUS_NON_SHORT_CIRCUIT" priority="CRITICAL">
+ <rule key="NS_DANGEROUS_NON_SHORT_CIRCUIT">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Potentially dangerous use of non-short-circuit logic]]></name>
<configKey><![CDATA[NS_DANGEROUS_NON_SHORT_CIRCUIT]]></configKey>
</p>]]></description>
</rule>
- <rule key="NS_NON_SHORT_CIRCUIT" priority="MAJOR">
+ <rule key="NS_NON_SHORT_CIRCUIT">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Questionable use of non-short-circuit logic]]></name>
<configKey><![CDATA[NS_NON_SHORT_CIRCUIT]]></configKey>
</p>]]></description>
</rule>
- <rule key="TLW_TWO_LOCK_WAIT" priority="MAJOR">
+ <rule key="TLW_TWO_LOCK_WAIT">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Wait with two locks held]]></name>
<configKey><![CDATA[TLW_TWO_LOCK_WAIT]]></configKey>
This not necessarily a bug, but is worth examining
closely.</p>]]></description>
</rule>
- <rule key="UW_UNCOND_WAIT" priority="MAJOR">
+ <rule key="UW_UNCOND_WAIT">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Unconditional wait]]></name>
<configKey><![CDATA[UW_UNCOND_WAIT]]></configKey>
before calling wait; any previous notifications will be ignored.
</p>]]></description>
</rule>
- <rule key="UR_UNINIT_READ" priority="MAJOR">
+ <rule key="UR_UNINIT_READ">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Uninitialized read of field in constructor]]></name>
<configKey><![CDATA[UR_UNINIT_READ]]></configKey>
This is often caused when the programmer mistakenly uses the field instead
of one of the constructor's parameters.</p>]]></description>
</rule>
- <rule key="UG_SYNC_SET_UNSYNC_GET" priority="MAJOR">
+ <rule key="UG_SYNC_SET_UNSYNC_GET">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Unsynchronized get method, synchronized set method]]></name>
<configKey><![CDATA[UG_SYNC_SET_UNSYNC_GET]]></configKey>
method will not necessarily see a consistent state for the object.
The get method should be made synchronized.</p>]]></description>
</rule>
- <rule key="IC_INIT_CIRCULARITY" priority="CRITICAL">
+ <rule key="IC_INIT_CIRCULARITY">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Initialization circularity]]></name>
<configKey><![CDATA[IC_INIT_CIRCULARITY]]></configKey>
classes referenced by the bug instance. Many kinds of unexpected
behavior may arise from such circularity.</p>]]></description>
</rule>
- <rule key="IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION" priority="MAJOR">
+ <rule key="IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Superclass uses subclass during initialization]]></name>
<configKey><![CDATA[IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="IT_NO_SUCH_ELEMENT" priority="MINOR">
+ <rule key="IT_NO_SUCH_ELEMENT">
+<priority>MINOR</priority>
<name><![CDATA[Bad practice - Iterator next() method can't throw NoSuchElementException]]></name>
<configKey><![CDATA[IT_NO_SUCH_ELEMENT]]></configKey>
method should be changed so it throws <code>NoSuchElementException</code>
if is called when there are no more elements to return.</p>]]></description>
</rule>
- <rule key="DL_SYNCHRONIZATION_ON_SHARED_CONSTANT" priority="CRITICAL">
+ <rule key="DL_SYNCHRONIZATION_ON_SHARED_CONSTANT">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Synchronization on interned String could lead to deadlock]]></name>
<configKey><![CDATA[DL_SYNCHRONIZATION_ON_SHARED_CONSTANT]]></configKey>
blocking and deadlock behavior. See <a href="http://www.javalobby.org/java/forums/t96352.html">http://www.javalobby.org/java/forums/t96352.html</a> and <a href="http://jira.codehaus.org/browse/JETTY-352">http://jira.codehaus.org/browse/JETTY-352</a>.
</p>]]></description>
</rule>
- <rule key="DL_SYNCHRONIZATION_ON_BOOLEAN" priority="CRITICAL">
+ <rule key="DL_SYNCHRONIZATION_ON_BOOLEAN">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Synchronization on Boolean could lead to deadlock]]></name>
<configKey><![CDATA[DL_SYNCHRONIZATION_ON_BOOLEAN]]></configKey>
<p>Since there normally exist only two Boolean objects, this code could be synchronizing on the same object as other, unrelated code, leading to unresponsiveness
and possible deadlock</p>]]></description>
</rule>
- <rule key="DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE" priority="CRITICAL">
+ <rule key="DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Synchronization on boxed primitive values]]></name>
<configKey><![CDATA[DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE]]></configKey>
throughout the JVM, leading to very confusing behavior and potential deadlock.
</p>]]></description>
</rule>
- <rule key="DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE" priority="CRITICAL">
+ <rule key="DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Synchronization on boxed primitive could lead to deadlock]]></name>
<configKey><![CDATA[DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE]]></configKey>
this code could be synchronizing on the same object as other, unrelated code, leading to unresponsiveness
and possible deadlock</p>]]></description>
</rule>
- <rule key="ESync_EMPTY_SYNC" priority="MAJOR">
+ <rule key="ESync_EMPTY_SYNC">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Empty synchronized block]]></name>
<configKey><![CDATA[ESync_EMPTY_SYNC]]></configKey>
than less contrived solutions.
</p>]]></description>
</rule>
- <rule key="IS_INCONSISTENT_SYNC" priority="MAJOR">
+ <rule key="IS_INCONSISTENT_SYNC">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Inconsistent synchronization]]></name>
<configKey><![CDATA[IS_INCONSISTENT_SYNC]]></configKey>
distinguishing locked vs. unlocked accesses, the code in question may still
be correct.</p>]]></description>
</rule>
- <rule key="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD" priority="MAJOR">
+ <rule key="ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Synchronization on field in futile attempt to guard that field]]></name>
<configKey><![CDATA[ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD]]></configKey>
</p>]]></description>
</rule>
- <rule key="ML_SYNC_ON_UPDATED_FIELD" priority="MAJOR">
+ <rule key="ML_SYNC_ON_UPDATED_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Multithreaded correctness - Method synchronizes on an updated field]]></name>
<configKey><![CDATA[ML_SYNC_ON_UPDATED_FIELD]]></configKey>
This is unlikely to have useful semantics, since different
threads may be synchronizing on different objects.</p>]]></description>
</rule>
- <rule key="MS_OOI_PKGPROTECT" priority="MAJOR">
+ <rule key="MS_OOI_PKGPROTECT">
+<priority>MAJOR</priority>
<name>
<![CDATA[Malicious code vulnerability - Field should be moved out of an interface and made package protected]]></name>
<configKey><![CDATA[MS_OOI_PKGPROTECT]]></configKey>
to avoid
this vulnerability.</p>]]></description>
</rule>
- <rule key="MS_FINAL_PKGPROTECT" priority="MAJOR">
+ <rule key="MS_FINAL_PKGPROTECT">
+<priority>MAJOR</priority>
<name><![CDATA[Malicious code vulnerability - Field should be both final and package protected]]></name>
<configKey><![CDATA[MS_FINAL_PKGPROTECT]]></configKey>
to avoid
this vulnerability.</p>]]></description>
</rule>
- <rule key="MS_SHOULD_BE_FINAL" priority="MAJOR">
+ <rule key="MS_SHOULD_BE_FINAL">
+<priority>MAJOR</priority>
<name><![CDATA[Malicious code vulnerability - Field isn't final but should be]]></name>
<configKey><![CDATA[MS_SHOULD_BE_FINAL]]></configKey>
The field could be made final to avoid
this vulnerability.</p>]]></description>
</rule>
- <rule key="MS_PKGPROTECT" priority="MAJOR">
+ <rule key="MS_PKGPROTECT">
+<priority>MAJOR</priority>
<name><![CDATA[Malicious code vulnerability - Field should be package protected]]></name>
<configKey><![CDATA[MS_PKGPROTECT]]></configKey>
The field could be made package protected to avoid
this vulnerability.</p>]]></description>
</rule>
- <rule key="MS_MUTABLE_HASHTABLE" priority="MAJOR">
+ <rule key="MS_MUTABLE_HASHTABLE">
+<priority>MAJOR</priority>
<name><![CDATA[Malicious code vulnerability - Field is a mutable Hashtable]]></name>
<configKey><![CDATA[MS_MUTABLE_HASHTABLE]]></configKey>
by accident from another package.
This code can freely modify the contents of the Hashtable.</p>]]></description>
</rule>
- <rule key="MS_MUTABLE_ARRAY" priority="MAJOR">
+ <rule key="MS_MUTABLE_ARRAY">
+<priority>MAJOR</priority>
<name><![CDATA[Malicious code vulnerability - Field is a mutable array]]></name>
<configKey><![CDATA[MS_MUTABLE_ARRAY]]></configKey>
by accident from another package.
This code can freely modify the contents of the array.</p>]]></description>
</rule>
- <rule key="MS_CANNOT_BE_FINAL" priority="MAJOR">
+ <rule key="MS_CANNOT_BE_FINAL">
+<priority>MAJOR</priority>
<name><![CDATA[Malicious code vulnerability - Field isn't final and can't be protected from malicious code]]></name>
<configKey><![CDATA[MS_CANNOT_BE_FINAL]]></configKey>
Unfortunately, the way the field is used doesn't allow
any easy fix to this problem.</p>]]></description>
</rule>
- <rule key="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD" priority="MAJOR">
+ <rule key="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Ambiguous invocation of either an inherited or outer method]]></name>
<configKey><![CDATA[IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD]]></configKey>
that you want to invoke the inherited method, not the method in the outer class.
</p>]]></description>
</rule>
- <rule key="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS" priority="MAJOR">
+ <rule key="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class names shouldn't shadow simple name of superclass]]></name>
<configKey><![CDATA[NM_SAME_SIMPLE_NAME_AS_SUPERCLASS]]></configKey>
opportunities to accidently define methods that do not override methods in their superclasses.
</p>]]></description>
</rule>
- <rule key="NM_SAME_SIMPLE_NAME_AS_INTERFACE" priority="MAJOR">
+ <rule key="NM_SAME_SIMPLE_NAME_AS_INTERFACE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class names shouldn't shadow simple name of implemented interface]]></name>
<configKey><![CDATA[NM_SAME_SIMPLE_NAME_AS_INTERFACE]]></configKey>
opportunities to accidently define methods that do not override methods in their superclasses.
</p>]]></description>
</rule>
- <rule key="NM_VERY_CONFUSING" priority="MAJOR">
+ <rule key="NM_VERY_CONFUSING">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Very confusing method names]]></name>
<configKey><![CDATA[NM_VERY_CONFUSING]]></configKey>
identical then one of the methods would override the other.
</p>]]></description>
</rule>
- <rule key="NM_VERY_CONFUSING_INTENTIONAL" priority="MAJOR">
+ <rule key="NM_VERY_CONFUSING_INTENTIONAL">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Very confusing method names (but perhaps intentional)]]></name>
<configKey><![CDATA[NM_VERY_CONFUSING_INTENTIONAL]]></configKey>
You should try hard to eliminate one of them, unless you are forced to have both due to frozen APIs.
</p>]]></description>
</rule>
- <rule key="NM_WRONG_PACKAGE" priority="MAJOR">
+ <rule key="NM_WRONG_PACKAGE">
+<priority>MAJOR</priority>
<name>
<![CDATA[Correctness - Method doesn't override method in superclass due to wrong package for parameter]]></name>
<configKey><![CDATA[NM_WRONG_PACKAGE]]></configKey>
types are <code>Foo</code>'s from different packages.
</p>]]></description>
</rule>
- <rule key="NM_WRONG_PACKAGE_INTENTIONAL" priority="MAJOR">
+ <rule key="NM_WRONG_PACKAGE_INTENTIONAL">
+<priority>MAJOR</priority>
<name>
<![CDATA[Bad practice - Method doesn't override method in superclass due to wrong package for parameter]]></name>
<configKey><![CDATA[NM_WRONG_PACKAGE_INTENTIONAL]]></configKey>
removing or deprecating the method with the similar but not identical signature.
</p>]]></description>
</rule>
- <rule key="NM_CONFUSING" priority="MAJOR">
+ <rule key="NM_CONFUSING">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Confusing method names]]></name>
<configKey><![CDATA[NM_CONFUSING]]></configKey>
<description><![CDATA[<p> The referenced methods have names that differ only by capitalization.</p>]]></description>
</rule>
- <rule key="NM_METHOD_CONSTRUCTOR_CONFUSION" priority="MAJOR">
+ <rule key="NM_METHOD_CONSTRUCTOR_CONFUSION">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Apparent method/constructor confusion]]></name>
<configKey><![CDATA[NM_METHOD_CONSTRUCTOR_CONFUSION]]></configKey>
but can't get rid of this method due to backwards compatibility, deprecate the method.
</p>]]></description>
</rule>
- <rule key="NM_CLASS_NOT_EXCEPTION" priority="MAJOR">
+ <rule key="NM_CLASS_NOT_EXCEPTION">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class is not derived from an Exception, even though it is named as such]]></name>
<configKey><![CDATA[NM_CLASS_NOT_EXCEPTION]]></configKey>
<description><![CDATA[<p> This class is not derived from another exception, but ends with 'Exception'. This will
be confusing to users of this class.</p>]]></description>
</rule>
- <rule key="RR_NOT_CHECKED" priority="MAJOR">
+ <rule key="RR_NOT_CHECKED">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method ignores results of InputStream.read()]]></name>
<configKey><![CDATA[RR_NOT_CHECKED]]></configKey>
reads from input streams usually do read the full amount of data requested,
causing the program to fail only sporadically.</p>]]></description>
</rule>
- <rule key="SR_NOT_CHECKED" priority="MAJOR">
+ <rule key="SR_NOT_CHECKED">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method ignores results of InputStream.skip()]]></name>
<configKey><![CDATA[SR_NOT_CHECKED]]></configKey>
skip() will only skip data in the buffer, and will routinely fail to skip the
requested number of bytes.</p>]]></description>
</rule>
- <rule key="SE_READ_RESOLVE_IS_STATIC" priority="MAJOR">
+ <rule key="SE_READ_RESOLVE_IS_STATIC">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - The readResolve method must not be declared as a static method. ]]></name>
<configKey><![CDATA[SE_READ_RESOLVE_IS_STATIC]]></configKey>
mechanism, it must not be declared as a static method.
</p>]]></description>
</rule>
- <rule key="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED" priority="MAJOR">
+ <rule key="SE_PRIVATE_READ_RESOLVE_NOT_INHERITED">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - private readResolve method not inherited by subclasses]]></name>
<configKey><![CDATA[SE_PRIVATE_READ_RESOLVE_NOT_INHERITED]]></configKey>
This might be intentional and OK, but should be reviewed to ensure it is what is intended.
</p>]]></description>
</rule>
- <rule key="SE_READ_RESOLVE_MUST_RETURN_OBJECT" priority="MAJOR">
+ <rule key="SE_READ_RESOLVE_MUST_RETURN_OBJECT">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - The readResolve method must be declared with a return type of Object. ]]></name>
<configKey><![CDATA[SE_READ_RESOLVE_MUST_RETURN_OBJECT]]></configKey>
mechanism, it must be declared to have a return type of Object.
</p>]]></description>
</rule>
- <rule key="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS" priority="MAJOR">
+ <rule key="SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Transient field of class that isn't Serializable. ]]></name>
<configKey><![CDATA[SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS]]></configKey>
it may indicate a misunderstanding of how serialization works.
</p>]]></description>
</rule>
- <rule key="SE_TRANSIENT_FIELD_NOT_RESTORED" priority="MAJOR">
+ <rule key="SE_TRANSIENT_FIELD_NOT_RESTORED">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Transient field that isn't set by deserialization. ]]></name>
<configKey><![CDATA[SE_TRANSIENT_FIELD_NOT_RESTORED]]></configKey>
deserialized instance of the class.
</p>]]></description>
</rule>
- <rule key="SE_METHOD_MUST_BE_PRIVATE" priority="MAJOR">
+ <rule key="SE_METHOD_MUST_BE_PRIVATE">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Method must be private in order for serialization to work]]></name>
<configKey><![CDATA[SE_METHOD_MUST_BE_PRIVATE]]></configKey>
for custom serialization/deserialization. But since that method isn't declared private,
it will be silently ignored by the serialization/deserialization API.</p>]]></description>
</rule>
- <rule key="SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION" priority="MAJOR">
+ <rule key="SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class is Externalizable but doesn't define a void constructor]]></name>
<configKey><![CDATA[SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION]]></configKey>
constructor. Since this class does not have one,
serialization and deserialization will fail at runtime.</p>]]></description>
</rule>
- <rule key="SE_NO_SUITABLE_CONSTRUCTOR" priority="MAJOR">
+ <rule key="SE_NO_SUITABLE_CONSTRUCTOR">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class is Serializable but its superclass doesn't define a void constructor]]></name>
<configKey><![CDATA[SE_NO_SUITABLE_CONSTRUCTOR]]></configKey>
Since the superclass does not have one,
serialization and deserialization will fail at runtime.</p>]]></description>
</rule>
- <rule key="SE_NO_SERIALVERSIONID" priority="MAJOR">
+ <rule key="SE_NO_SERIALVERSIONID">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Class is Serializable, but doesn't define serialVersionUID]]></name>
<configKey><![CDATA[SE_NO_SERIALVERSIONID]]></configKey>
To ensure interoperability of Serializable across versions,
consider adding an explicit serialVersionUID.</p>]]></description>
</rule>
- <rule key="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" priority="MAJOR">
+ <rule key="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Comparator doesn't implement Serializable]]></name>
<configKey><![CDATA[SE_COMPARATOR_SHOULD_BE_SERIALIZABLE]]></configKey>
is generally easy and good defensive programming.
</p>]]></description>
</rule>
- <rule key="WS_WRITEOBJECT_SYNC" priority="CRITICAL">
+ <rule key="WS_WRITEOBJECT_SYNC">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Multithreaded correctness - Class's writeObject() method is synchronized but nothing else is]]></name>
<configKey><![CDATA[WS_WRITEOBJECT_SYNC]]></configKey>
<description><![CDATA[<p> This class has a <code>writeObject()</code> method which is synchronized;
however, no other method of the class is synchronized.</p>]]></description>
</rule>
- <rule key="RS_READOBJECT_SYNC" priority="CRITICAL">
+ <rule key="RS_READOBJECT_SYNC">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Class's readObject() method is synchronized]]></name>
<configKey><![CDATA[RS_READOBJECT_SYNC]]></configKey>
method itself is causing the object to become visible to another thread,
that is an example of very dubious coding style.</p>]]></description>
</rule>
- <rule key="SE_NONSTATIC_SERIALVERSIONID" priority="MAJOR">
+ <rule key="SE_NONSTATIC_SERIALVERSIONID">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - serialVersionUID isn't static]]></name>
<configKey><![CDATA[SE_NONSTATIC_SERIALVERSIONID]]></configKey>
if it is intended to specify
the version UID for purposes of serialization.</p>]]></description>
</rule>
- <rule key="SE_NONFINAL_SERIALVERSIONID" priority="CRITICAL">
+ <rule key="SE_NONFINAL_SERIALVERSIONID">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - serialVersionUID isn't final]]></name>
<configKey><![CDATA[SE_NONFINAL_SERIALVERSIONID]]></configKey>
if it is intended to specify
the version UID for purposes of serialization.</p>]]></description>
</rule>
- <rule key="SE_NONLONG_SERIALVERSIONID" priority="MAJOR">
+ <rule key="SE_NONLONG_SERIALVERSIONID">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - serialVersionUID isn't long]]></name>
<configKey><![CDATA[SE_NONLONG_SERIALVERSIONID]]></configKey>
if it is intended to specify
the version UID for purposes of serialization.</p>]]></description>
</rule>
- <rule key="SE_BAD_FIELD_INNER_CLASS" priority="MINOR">
+ <rule key="SE_BAD_FIELD_INNER_CLASS">
+<priority>MINOR</priority>
<name><![CDATA[Bad practice - Non-serializable class has a serializable inner class]]></name>
<configKey><![CDATA[SE_BAD_FIELD_INNER_CLASS]]></configKey>
mean serializing an instance of the inner class would always also serialize the instance
of the outer class, which it often not what you really want.]]></description>
</rule>
- <rule key="SE_INNER_CLASS" priority="MAJOR">
+ <rule key="SE_INNER_CLASS">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Serializable inner class]]></name>
<configKey><![CDATA[SE_INNER_CLASS]]></configKey>
If possible, making the inner class a static inner class (also known as a nested class) should solve the
problem.]]></description>
</rule>
- <rule key="SE_BAD_FIELD_STORE" priority="CRITICAL">
+ <rule key="SE_BAD_FIELD_STORE">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Non-serializable value stored into instance field of a serializable class]]></name>
<configKey><![CDATA[SE_BAD_FIELD_STORE]]></configKey>
<description><![CDATA[<p> A non-serializable value is stored into a non-transient field
of a serializable class.</p>]]></description>
</rule>
- <rule key="SC_START_IN_CTOR" priority="CRITICAL">
+ <rule key="SC_START_IN_CTOR">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Constructor invokes Thread.start()]]></name>
<configKey><![CDATA[SC_START_IN_CTOR]]></configKey>
the class is ever extended/subclassed, since the thread will be started
before the subclass constructor is started.</p>]]></description>
</rule>
- <rule key="SS_SHOULD_BE_STATIC" priority="MAJOR">
+ <rule key="SS_SHOULD_BE_STATIC">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Unread field: should this field be static?]]></name>
<configKey><![CDATA[SS_SHOULD_BE_STATIC]]></configKey>
is initialized to a compile-time static value.
Consider making the field static.</p>]]></description>
</rule>
- <rule key="UUF_UNUSED_FIELD" priority="MAJOR">
+ <rule key="UUF_UNUSED_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Unused field]]></name>
<configKey><![CDATA[UUF_UNUSED_FIELD]]></configKey>
<description><![CDATA[<p> This field is never used. Consider removing it from the class.</p>]]></description>
</rule>
- <rule key="URF_UNREAD_FIELD" priority="MAJOR">
+ <rule key="URF_UNREAD_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Unread field]]></name>
<configKey><![CDATA[URF_UNREAD_FIELD]]></configKey>
<description><![CDATA[<p> This field is never read. Consider removing it from the class.</p>]]></description>
</rule>
- <rule key="QF_QUESTIONABLE_FOR_LOOP" priority="CRITICAL">
+ <rule key="QF_QUESTIONABLE_FOR_LOOP">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Complicated, subtle or wrong increment in for-loop ]]></name>
<configKey><![CDATA[QF_QUESTIONABLE_FOR_LOOP]]></configKey>
by the for loop.
</p>]]></description>
</rule>
- <rule key="UWF_NULL_FIELD" priority="CRITICAL">
+ <rule key="UWF_NULL_FIELD">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Field only ever set to null]]></name>
<configKey><![CDATA[UWF_NULL_FIELD]]></configKey>
all reads of the field will return null.
Check for errors, or remove it if it is useless.</p>]]></description>
</rule>
- <rule key="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" priority="CRITICAL">
+ <rule key="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Write to static field from instance method]]></name>
<configKey><![CDATA[ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD]]></configKey>
and generally bad practice.
</p>]]></description>
</rule>
- <rule key="NP_LOAD_OF_KNOWN_NULL_VALUE" priority="CRITICAL">
+ <rule key="NP_LOAD_OF_KNOWN_NULL_VALUE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Load of known null value]]></name>
<configKey><![CDATA[NP_LOAD_OF_KNOWN_NULL_VALUE]]></configKey>
variable is null should have been a check to see if it was nonnull).
</p>]]></description>
</rule>
- <rule key="NP_DEREFERENCE_OF_READLINE_VALUE" priority="CRITICAL">
+ <rule key="NP_DEREFERENCE_OF_READLINE_VALUE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Dereference of the result of readLine() without nullcheck]]></name>
<configKey><![CDATA[NP_DEREFERENCE_OF_READLINE_VALUE]]></configKey>
to read, readLine() will return null and dereferencing that will generate a null pointer exception.
</p>]]></description>
</rule>
- <rule key="NP_IMMEDIATE_DEREFERENCE_OF_READLINE" priority="CRITICAL">
+ <rule key="NP_IMMEDIATE_DEREFERENCE_OF_READLINE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Immediate dereference of the result of readLine()]]></name>
<configKey><![CDATA[NP_IMMEDIATE_DEREFERENCE_OF_READLINE]]></configKey>
to read, readLine() will return null and dereferencing that will generate a null pointer exception.
</p>]]></description>
</rule>
- <rule key="SIC_INNER_SHOULD_BE_STATIC" priority="MAJOR">
+ <rule key="SIC_INNER_SHOULD_BE_STATIC">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Should be a static inner class]]></name>
<configKey><![CDATA[SIC_INNER_SHOULD_BE_STATIC]]></configKey>
made static.
</p>]]></description>
</rule>
- <rule key="SIC_INNER_SHOULD_BE_STATIC_ANON" priority="MAJOR">
+ <rule key="SIC_INNER_SHOULD_BE_STATIC_ANON">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Could be refactored into a named static inner class]]></name>
<configKey><![CDATA[SIC_INNER_SHOULD_BE_STATIC_ANON]]></configKey>
classes cannot be marked as static, doing this will require refactoring
the inner class so that it is a named inner class.</p>]]></description>
</rule>
- <rule key="SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS" priority="MAJOR">
+ <rule key="SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS">
+<priority>MAJOR</priority>
<name><![CDATA[Performance - Could be refactored into a static inner class]]></name>
<configKey><![CDATA[SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS]]></configKey>
pass a reference to the outer instance to the constructor
for the inner class.</p>]]></description>
</rule>
- <rule key="WA_NOT_IN_LOOP" priority="CRITICAL">
+ <rule key="WA_NOT_IN_LOOP">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Wait not in loop ]]></name>
<configKey><![CDATA[WA_NOT_IN_LOOP]]></configKey>
the condition the caller intended to wait for might not be the one
that actually occurred.</p>]]></description>
</rule>
- <rule key="WA_AWAIT_NOT_IN_LOOP" priority="CRITICAL">
+ <rule key="WA_AWAIT_NOT_IN_LOOP">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Condition.await() not in loop ]]></name>
<configKey><![CDATA[WA_AWAIT_NOT_IN_LOOP]]></configKey>
the condition the caller intended to wait for might not be the one
that actually occurred.</p>]]></description>
</rule>
- <rule key="NO_NOTIFY_NOT_NOTIFYALL" priority="CRITICAL">
+ <rule key="NO_NOTIFY_NOT_NOTIFYALL">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Using notify() rather than notifyAll()]]></name>
<configKey><![CDATA[NO_NOTIFY_NOT_NOTIFYALL]]></configKey>
only wakes up one thread, meaning that the thread woken up might not be the
one waiting for the condition that the caller just satisfied.</p>]]></description>
</rule>
- <rule key="RV_CHECK_FOR_POSITIVE_INDEXOF" priority="MINOR">
+ <rule key="RV_CHECK_FOR_POSITIVE_INDEXOF">
+<priority>MINOR</priority>
<name><![CDATA[Dodgy - Method checks to see if result of String.indexOf is positive]]></name>
<configKey><![CDATA[RV_CHECK_FOR_POSITIVE_INDEXOF]]></configKey>
positive only if the substring checked for occurs at some place other than at the beginning of
the String.</p>]]></description>
</rule>
- <rule key="RV_DONT_JUST_NULL_CHECK_READLINE" priority="MAJOR">
+ <rule key="RV_DONT_JUST_NULL_CHECK_READLINE">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Method discards result of readLine after checking if it is nonnull]]></name>
<configKey><![CDATA[RV_DONT_JUST_NULL_CHECK_READLINE]]></configKey>
value is non-null. In almost all situations, if the result is non-null, you will want
to use that non-null value. Calling readLine again will give you a different line.</p>]]></description>
</rule>
- <rule key="RV_RETURN_VALUE_IGNORED" priority="MINOR">
+ <rule key="RV_RETURN_VALUE_IGNORED">
+<priority>MINOR</priority>
<name><![CDATA[Correctness - Method ignores return value]]></name>
<configKey><![CDATA[RV_RETURN_VALUE_IGNORED]]></configKey>
</pre>
</blockquote>]]></description>
</rule>
- <rule key="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" priority="MAJOR">
+ <rule key="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Method ignores exceptional return value]]></name>
<configKey><![CDATA[RV_RETURN_VALUE_IGNORED_BAD_PRACTICE]]></configKey>
signals unexpected behavior by returning an atypical return value.
</p>]]></description>
</rule>
- <rule key="RV_EXCEPTION_NOT_THROWN" priority="CRITICAL">
+ <rule key="RV_EXCEPTION_NOT_THROWN">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Exception created and dropped rather than thrown]]></name>
<configKey><![CDATA[RV_EXCEPTION_NOT_THROWN]]></configKey>
</pre>
</blockquote>]]></description>
</rule>
- <rule key="RV_RETURN_VALUE_IGNORED2" priority="MAJOR">
+ <rule key="RV_RETURN_VALUE_IGNORED2">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Method ignores return value]]></name>
<configKey><![CDATA[RV_RETURN_VALUE_IGNORED2]]></configKey>
</pre>
</blockquote>]]></description>
</rule>
- <rule key="NP_ALWAYS_NULL" priority="CRITICAL">
+ <rule key="NP_ALWAYS_NULL">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Null pointer dereference]]></name>
<configKey><![CDATA[NP_ALWAYS_NULL]]></configKey>
<description><![CDATA[<p> A null pointer is dereferenced here. This will lead to a
<code>NullPointerException</code> when the code is executed.</p>]]></description>
</rule>
- <rule key="NP_STORE_INTO_NONNULL_FIELD" priority="CRITICAL">
+ <rule key="NP_STORE_INTO_NONNULL_FIELD">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Store of null value into field annotated NonNull]]></name>
<configKey><![CDATA[NP_STORE_INTO_NONNULL_FIELD]]></configKey>
<description>
<![CDATA[<p> A value that could be null is stored into a field that has been annotated as NonNull. </p>]]></description>
</rule>
- <rule key="NP_ALWAYS_NULL_EXCEPTION" priority="CRITICAL">
+ <rule key="NP_ALWAYS_NULL_EXCEPTION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Null pointer dereference in method on exception path]]></name>
<configKey><![CDATA[NP_ALWAYS_NULL_EXCEPTION]]></configKey>
<p> Also note that FindBugs considers the default case of a switch statement to
be an exception path, since the default case is often infeasible.</p>]]></description>
</rule>
- <rule key="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE" priority="CRITICAL">
+ <rule key="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Parameter must be nonnull but is marked as nullable]]></name>
<configKey><![CDATA[NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE]]></configKey>
of the parameter or the annotation is wrong.
</p>]]></description>
</rule>
- <rule key="NP_NULL_ON_SOME_PATH" priority="CRITICAL">
+ <rule key="NP_NULL_ON_SOME_PATH">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Possible null pointer dereference]]></name>
<configKey><![CDATA[NP_NULL_ON_SOME_PATH]]></configKey>
the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs.
</p>]]></description>
</rule>
- <rule key="NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE" priority="CRITICAL">
+ <rule key="NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Possible null pointer dereference on path that might be infeasible]]></name>
<configKey><![CDATA[NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE]]></configKey>
Due to the fact that this value had been previously tested for nullness, this is a definite possibility.
</p>]]></description>
</rule>
- <rule key="NP_NULL_ON_SOME_PATH_EXCEPTION" priority="CRITICAL">
+ <rule key="NP_NULL_ON_SOME_PATH_EXCEPTION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Possible null pointer dereference in method on exception path]]></name>
<configKey><![CDATA[NP_NULL_ON_SOME_PATH_EXCEPTION]]></configKey>
<p> Also note that FindBugs considers the default case of a switch statement to
be an exception path, since the default case is often infeasible.</p>]]></description>
</rule>
- <rule key="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" priority="CRITICAL">
+ <rule key="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Possible null pointer dereference due to return value of called method]]></name>
<configKey><![CDATA[NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE]]></configKey>
for null. This may lead to a <code>NullPointerException</code> when the code is executed.
</p>]]></description>
</rule>
- <rule key="NP_NULL_PARAM_DEREF_NONVIRTUAL" priority="CRITICAL">
+ <rule key="NP_NULL_PARAM_DEREF_NONVIRTUAL">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Non-virtual method call passes null for nonnull parameter]]></name>
<configKey><![CDATA[NP_NULL_PARAM_DEREF_NONVIRTUAL]]></configKey>
dereferenced.
</p>]]></description>
</rule>
- <rule key="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS" priority="CRITICAL">
+ <rule key="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method call passes null for nonnull parameter]]></name>
<configKey><![CDATA[NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS]]></configKey>
dereferenced.
</p>]]></description>
</rule>
- <rule key="NP_NULL_PARAM_DEREF" priority="CRITICAL">
+ <rule key="NP_NULL_PARAM_DEREF">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method call passes null for nonnull parameter]]></name>
<configKey><![CDATA[NP_NULL_PARAM_DEREF]]></configKey>
dereferenced.
</p>]]></description>
</rule>
- <rule key="NP_NONNULL_PARAM_VIOLATION" priority="CRITICAL">
+ <rule key="NP_NONNULL_PARAM_VIOLATION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method call passes null to a nonnull parameter ]]></name>
<configKey><![CDATA[NP_NONNULL_PARAM_VIOLATION]]></configKey>
always dereferenced.
</p>]]></description>
</rule>
- <rule key="NP_NONNULL_RETURN_VIOLATION" priority="CRITICAL">
+ <rule key="NP_NONNULL_RETURN_VIOLATION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method may return null, but is declared @NonNull]]></name>
<configKey><![CDATA[NP_NONNULL_RETURN_VIOLATION]]></configKey>
which it overrides) is declared to return @NonNull.
</p>]]></description>
</rule>
- <rule key="NP_CLONE_COULD_RETURN_NULL" priority="CRITICAL">
+ <rule key="NP_CLONE_COULD_RETURN_NULL">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Clone method may return null]]></name>
<configKey><![CDATA[NP_CLONE_COULD_RETURN_NULL]]></configKey>
instead.
</p>]]></description>
</rule>
- <rule key="NP_TOSTRING_COULD_RETURN_NULL" priority="CRITICAL">
+ <rule key="NP_TOSTRING_COULD_RETURN_NULL">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - toString method may return null]]></name>
<configKey><![CDATA[NP_TOSTRING_COULD_RETURN_NULL]]></configKey>
other code to break. Return the empty string or some other appropriate string rather than null.
</p>]]></description>
</rule>
- <rule key="NP_GUARANTEED_DEREF" priority="BLOCKER">
+ <rule key="NP_GUARANTEED_DEREF">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - Null value is guaranteed to be dereferenced]]></name>
<configKey><![CDATA[NP_GUARANTEED_DEREF]]></configKey>
(except on forward paths involving runtime exceptions).
</p>]]></description>
</rule>
- <rule key="NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH" priority="CRITICAL">
+ <rule key="NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Value is null and guaranteed to be dereferenced on exception path]]></name>
<configKey><![CDATA[NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH]]></configKey>
(except on forward paths involving runtime exceptions).
</p>]]></description>
</rule>
- <rule key="SI_INSTANCE_BEFORE_FINALS_ASSIGNED" priority="CRITICAL">
+ <rule key="SI_INSTANCE_BEFORE_FINALS_ASSIGNED">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Static initializer creates instance before all static final fields assigned]]></name>
<configKey><![CDATA[SI_INSTANCE_BEFORE_FINALS_ASSIGNED]]></configKey>
<description><![CDATA[<p> The class's static initializer creates an instance of the class
before all of the static final fields are assigned.</p>]]></description>
</rule>
- <rule key="OS_OPEN_STREAM" priority="CRITICAL">
+ <rule key="OS_OPEN_STREAM">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Method may fail to close stream]]></name>
<configKey><![CDATA[OS_OPEN_STREAM]]></configKey>
idea to use a <code>finally</code> block to ensure that streams are
closed.</p>]]></description>
</rule>
- <rule key="OS_OPEN_STREAM_EXCEPTION_PATH" priority="CRITICAL">
+ <rule key="OS_OPEN_STREAM_EXCEPTION_PATH">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Method may fail to close stream on exception]]></name>
<configKey><![CDATA[OS_OPEN_STREAM_EXCEPTION_PATH]]></configKey>
idea to use a <code>finally</code> block to ensure that streams are
closed.</p>]]></description>
</rule>
- <rule key="PZLA_PREFER_ZERO_LENGTH_ARRAYS" priority="MAJOR">
+ <rule key="PZLA_PREFER_ZERO_LENGTH_ARRAYS">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Consider returning a zero length array rather than null]]></name>
<configKey><![CDATA[PZLA_PREFER_ZERO_LENGTH_ARRAYS]]></configKey>
if given a directory containing no files, and returns null if the file
is not a directory.</p>]]></description>
</rule>
- <rule key="UCF_USELESS_CONTROL_FLOW" priority="CRITICAL">
+ <rule key="UCF_USELESS_CONTROL_FLOW">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Useless control flow]]></name>
<configKey><![CDATA[UCF_USELESS_CONTROL_FLOW]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="UCF_USELESS_CONTROL_FLOW_NEXT_LINE" priority="CRITICAL">
+ <rule key="UCF_USELESS_CONTROL_FLOW_NEXT_LINE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Useless control flow to next line]]></name>
<configKey><![CDATA[UCF_USELESS_CONTROL_FLOW_NEXT_LINE]]></configKey>
System.out.println("Hello, " + argv[0]);
</pre>]]></description>
</rule>
- <rule key="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE" priority="CRITICAL">
+ <rule key="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Nullcheck of value previously dereferenced]]></name>
<configKey><![CDATA[RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE]]></configKey>
disagree as to whether this value is allowed to be null. Either the check is redundant
or the previous dereference is erroneous.</p>]]></description>
</rule>
- <rule key="RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE" priority="CRITICAL">
+ <rule key="RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Redundant nullcheck of value known to be null]]></name>
<configKey><![CDATA[RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE]]></configKey>
<description><![CDATA[<p> This method contains a redundant check of a known null value against
the constant null.</p>]]></description>
</rule>
- <rule key="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" priority="CRITICAL">
+ <rule key="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Redundant nullcheck of value known to be non-null]]></name>
<configKey><![CDATA[RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE]]></configKey>
<description><![CDATA[<p> This method contains a redundant check of a known non-null value against
the constant null.</p>]]></description>
</rule>
- <rule key="RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES" priority="CRITICAL">
+ <rule key="RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Redundant comparison of two null values]]></name>
<configKey><![CDATA[RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES]]></configKey>
<description><![CDATA[<p> This method contains a redundant comparison of two references known to
both be definitely null.</p>]]></description>
</rule>
- <rule key="RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE" priority="CRITICAL">
+ <rule key="RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Redundant comparison of non-null value to null]]></name>
<configKey><![CDATA[RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE]]></configKey>
<description><![CDATA[<p> This method contains a reference known to be non-null with another reference
known to be null.</p>]]></description>
</rule>
- <rule key="UL_UNRELEASED_LOCK" priority="CRITICAL">
+ <rule key="UL_UNRELEASED_LOCK">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Method does not release lock on all paths]]></name>
<configKey><![CDATA[UL_UNRELEASED_LOCK]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="UL_UNRELEASED_LOCK_EXCEPTION_PATH" priority="CRITICAL">
+ <rule key="UL_UNRELEASED_LOCK_EXCEPTION_PATH">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Method does not release lock on all exception paths]]></name>
<configKey><![CDATA[UL_UNRELEASED_LOCK_EXCEPTION_PATH]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="RC_REF_COMPARISON" priority="CRITICAL">
+ <rule key="RC_REF_COMPARISON">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Suspicious reference comparison]]></name>
<configKey><![CDATA[RC_REF_COMPARISON]]></configKey>
with the equals() method. Examples of classes which should generally
not be compared by reference are java.lang.Integer, java.lang.Float, etc.</p>]]></description>
</rule>
- <rule key="EC_UNRELATED_TYPES_USING_POINTER_EQUALITY" priority="CRITICAL">
+ <rule key="EC_UNRELATED_TYPES_USING_POINTER_EQUALITY">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Using pointer equality to compare different types]]></name>
<configKey><![CDATA[EC_UNRELATED_TYPES_USING_POINTER_EQUALITY]]></configKey>
different types. The result of this comparison will always be false at runtime.
</p>]]></description>
</rule>
- <rule key="EC_UNRELATED_TYPES" priority="CRITICAL">
+ <rule key="EC_UNRELATED_TYPES">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Call to equals() comparing different types]]></name>
<configKey><![CDATA[EC_UNRELATED_TYPES]]></configKey>
the result of this comparison will always be false at runtime.
</p>]]></description>
</rule>
- <rule key="EC_UNRELATED_INTERFACES" priority="CRITICAL">
+ <rule key="EC_UNRELATED_INTERFACES">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Call to equals() comparing different interface types]]></name>
<configKey><![CDATA[EC_UNRELATED_INTERFACES]]></configKey>
the result of this comparison will always be false at runtime.
</p>]]></description>
</rule>
- <rule key="EC_UNRELATED_CLASS_AND_INTERFACE" priority="CRITICAL">
+ <rule key="EC_UNRELATED_CLASS_AND_INTERFACE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Call to equals() comparing unrelated class and interface]]></name>
<configKey><![CDATA[EC_UNRELATED_CLASS_AND_INTERFACE]]></configKey>
the result of this comparison will always be false at runtime.
</p>]]></description>
</rule>
- <rule key="EC_NULL_ARG" priority="CRITICAL">
+ <rule key="EC_NULL_ARG">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Call to equals() with null argument]]></name>
<configKey><![CDATA[EC_NULL_ARG]]></configKey>
the argument. According to the contract of the equals() method,
this call should always return <code>false</code>.</p>]]></description>
</rule>
- <rule key="MWN_MISMATCHED_WAIT" priority="CRITICAL">
+ <rule key="MWN_MISMATCHED_WAIT">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Mismatched wait()]]></name>
<configKey><![CDATA[MWN_MISMATCHED_WAIT]]></configKey>
on the object. Calling wait() without a lock held will result in
an <code>IllegalMonitorStateException</code> being thrown.</p>]]></description>
</rule>
- <rule key="MWN_MISMATCHED_NOTIFY" priority="CRITICAL">
+ <rule key="MWN_MISMATCHED_NOTIFY">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Mismatched notify()]]></name>
<configKey><![CDATA[MWN_MISMATCHED_NOTIFY]]></configKey>
on the object. Calling notify() or notifyAll() without a lock held will result in
an <code>IllegalMonitorStateException</code> being thrown.</p>]]></description>
</rule>
- <rule key="SA_LOCAL_SELF_ASSIGNMENT" priority="CRITICAL">
+ <rule key="SA_LOCAL_SELF_ASSIGNMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Self assignment of local variable]]></name>
<configKey><![CDATA[SA_LOCAL_SELF_ASSIGNMENT]]></configKey>
Such assignments are useless, and may indicate a logic error or typo.
</p>]]></description>
</rule>
- <rule key="SA_FIELD_SELF_ASSIGNMENT" priority="CRITICAL">
+ <rule key="SA_FIELD_SELF_ASSIGNMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Self assignment of field]]></name>
<configKey><![CDATA[SA_FIELD_SELF_ASSIGNMENT]]></configKey>
</pre>
<p>Such assignments are useless, and may indicate a logic error or typo.</p>]]></description>
</rule>
- <rule key="SA_FIELD_DOUBLE_ASSIGNMENT" priority="CRITICAL">
+ <rule key="SA_FIELD_DOUBLE_ASSIGNMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Double assignment of field]]></name>
<configKey><![CDATA[SA_FIELD_DOUBLE_ASSIGNMENT]]></configKey>
</pre>
<p>Assigning to a field twice is useless, and may indicate a logic error or typo.</p>]]></description>
</rule>
- <rule key="SA_LOCAL_DOUBLE_ASSIGNMENT" priority="CRITICAL">
+ <rule key="SA_LOCAL_DOUBLE_ASSIGNMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Double assignment of local variable ]]></name>
<configKey><![CDATA[SA_LOCAL_DOUBLE_ASSIGNMENT]]></configKey>
</pre>
<p>Assigning the same value to a variable twice is useless, and may indicate a logic error or typo.</p>]]></description>
</rule>
- <rule key="SA_FIELD_SELF_COMPUTATION" priority="CRITICAL">
+ <rule key="SA_FIELD_SELF_COMPUTATION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Nonsensical self computation involving a field (e.g., x & x)]]></name>
<configKey><![CDATA[SA_FIELD_SELF_COMPUTATION]]></configKey>
a logic error. Double check the computation.
</p>]]></description>
</rule>
- <rule key="SA_LOCAL_SELF_COMPUTATION" priority="CRITICAL">
+ <rule key="SA_LOCAL_SELF_COMPUTATION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Nonsensical self computation involving a variable (e.g., x & x)]]></name>
<configKey><![CDATA[SA_LOCAL_SELF_COMPUTATION]]></configKey>
a logic error. Double check the computation.
</p>]]></description>
</rule>
- <rule key="SA_FIELD_SELF_COMPARISON" priority="CRITICAL">
+ <rule key="SA_FIELD_SELF_COMPARISON">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Self comparison of field with itself]]></name>
<configKey><![CDATA[SA_FIELD_SELF_COMPARISON]]></configKey>
a logic error. Make sure that you are comparing the right things.
</p>]]></description>
</rule>
- <rule key="SA_LOCAL_SELF_COMPARISON" priority="CRITICAL">
+ <rule key="SA_LOCAL_SELF_COMPARISON">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Self comparison of value with itself]]></name>
<configKey><![CDATA[SA_LOCAL_SELF_COMPARISON]]></configKey>
a logic error. Make sure that you are comparing the right things.
</p>]]></description>
</rule>
- <rule key="DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT" priority="CRITICAL">
+ <rule key="DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Double.longBitsToDouble invoked on an int]]></name>
<configKey><![CDATA[DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT]]></configKey>
to give the intended result.
</p>]]></description>
</rule>
- <rule key="DMI_RANDOM_USED_ONLY_ONCE" priority="CRITICAL">
+ <rule key="DMI_RANDOM_USED_ONLY_ONCE">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Random object created and used only once]]></name>
<configKey><![CDATA[DMI_RANDOM_USED_ONLY_ONCE]]></configKey>
(and avoid allocating a new SecureRandom for each random number needed).
</p>]]></description>
</rule>
- <rule key="RV_ABSOLUTE_VALUE_OF_RANDOM_INT" priority="CRITICAL">
+ <rule key="RV_ABSOLUTE_VALUE_OF_RANDOM_INT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Bad attempt to compute absolute value of signed 32-bit random integer]]></name>
<configKey><![CDATA[RV_ABSOLUTE_VALUE_OF_RANDOM_INT]]></configKey>
<code>Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE</code>).
</p>]]></description>
</rule>
- <rule key="RV_ABSOLUTE_VALUE_OF_HASHCODE" priority="CRITICAL">
+ <rule key="RV_ABSOLUTE_VALUE_OF_HASHCODE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Bad attempt to compute absolute value of signed 32-bit hashcode ]]></name>
<configKey><![CDATA[RV_ABSOLUTE_VALUE_OF_HASHCODE]]></configKey>
<code>Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE</code>).
</p>]]></description>
</rule>
- <rule key="RV_REM_OF_RANDOM_INT" priority="CRITICAL">
+ <rule key="RV_REM_OF_RANDOM_INT">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Remainder of 32-bit signed random integer]]></name>
<configKey><![CDATA[RV_REM_OF_RANDOM_INT]]></configKey>
consider using the Random.nextInt(int) method instead.
</p>]]></description>
</rule>
- <rule key="RV_REM_OF_HASHCODE" priority="CRITICAL">
+ <rule key="RV_REM_OF_HASHCODE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Remainder of hashCode could be negative]]></name>
<configKey><![CDATA[RV_REM_OF_HASHCODE]]></configKey>
<code>Math.abs(x.hashCode()%n)</code>
</p>]]></description>
</rule>
- <rule key="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE" priority="CRITICAL">
+ <rule key="INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Bad comparison of nonnegative value with negative constant]]></name>
<configKey><![CDATA[INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE]]></configKey>
<description><![CDATA[<p> This code compares a value that is guaranteed to be non-negative with a negative constant.
</p>]]></description>
</rule>
- <rule key="INT_BAD_COMPARISON_WITH_SIGNED_BYTE" priority="CRITICAL">
+ <rule key="INT_BAD_COMPARISON_WITH_SIGNED_BYTE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Bad comparison of signed byte]]></name>
<configKey><![CDATA[INT_BAD_COMPARISON_WITH_SIGNED_BYTE]]></configKey>
use <code>0xff & b</code>
</p>]]></description>
</rule>
- <rule key="INT_VACUOUS_BIT_OPERATION" priority="CRITICAL">
+ <rule key="INT_VACUOUS_BIT_OPERATION">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Vacuous bit mask operation on integer value]]></name>
<configKey><![CDATA[INT_VACUOUS_BIT_OPERATION]]></configKey>
</p>]]></description>
</rule>
- <rule key="INT_VACUOUS_COMPARISON" priority="CRITICAL">
+ <rule key="INT_VACUOUS_COMPARISON">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Vacuous comparison of integer value]]></name>
<configKey><![CDATA[INT_VACUOUS_COMPARISON]]></configKey>
the same value (e.g., x <= Integer.MAX_VALUE).
</p>]]></description>
</rule>
- <rule key="INT_BAD_REM_BY_1" priority="CRITICAL">
+ <rule key="INT_BAD_REM_BY_1">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Integer remainder modulo 1]]></name>
<configKey><![CDATA[INT_BAD_REM_BY_1]]></configKey>
Did you mean (exp & 1) or (exp % 2) instead?
</p>]]></description>
</rule>
- <rule key="BIT_IOR_OF_SIGNED_BYTE" priority="CRITICAL">
+ <rule key="BIT_IOR_OF_SIGNED_BYTE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Bitwise OR of signed byte value]]></name>
<configKey><![CDATA[BIT_IOR_OF_SIGNED_BYTE]]></configKey>
result = ((result << 8) | (b[i] & 0xff));
</pre>]]></description>
</rule>
- <rule key="BIT_ADD_OF_SIGNED_BYTE" priority="CRITICAL">
+ <rule key="BIT_ADD_OF_SIGNED_BYTE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Bitwise add of signed byte value]]></name>
<configKey><![CDATA[BIT_ADD_OF_SIGNED_BYTE]]></configKey>
result = ((result << 8) + (b[i] & 0xff));
</pre>]]></description>
</rule>
- <rule key="BIT_AND" priority="CRITICAL">
+ <rule key="BIT_AND">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Incompatible bit masks]]></name>
<configKey><![CDATA[BIT_AND]]></configKey>
due to the specific values of constants C and D.
This may indicate a logic error or typo.</p>]]></description>
</rule>
- <rule key="BIT_SIGNED_CHECK" priority="CRITICAL">
+ <rule key="BIT_SIGNED_CHECK">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Check for sign of bitwise operation]]></name>
<configKey><![CDATA[BIT_SIGNED_CHECK]]></configKey>
<em>Boris Bokowski</em>
</p>]]></description>
</rule>
- <rule key="BIT_SIGNED_CHECK_HIGH_BIT" priority="CRITICAL">
+ <rule key="BIT_SIGNED_CHECK_HIGH_BIT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Check for sign of bitwise operation]]></name>
<configKey><![CDATA[BIT_SIGNED_CHECK_HIGH_BIT]]></configKey>
<em>Boris Bokowski</em>
</p>]]></description>
</rule>
- <rule key="BIT_AND_ZZ" priority="CRITICAL">
+ <rule key="BIT_AND_ZZ">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Check to see if ((...) & 0) == 0]]></name>
<configKey><![CDATA[BIT_AND_ZZ]]></configKey>
which will always compare equal.
This may indicate a logic error or typo.</p>]]></description>
</rule>
- <rule key="BIT_IOR" priority="CRITICAL">
+ <rule key="BIT_IOR">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Incompatible bit masks]]></name>
<configKey><![CDATA[BIT_IOR]]></configKey>
a membership test in a bit set, but uses the bitwise OR
operator ("|") instead of bitwise AND ("&").</p>]]></description>
</rule>
- <rule key="LI_LAZY_INIT_STATIC" priority="CRITICAL">
+ <rule key="LI_LAZY_INIT_STATIC">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Incorrect lazy initialization of static field]]></name>
<configKey><![CDATA[LI_LAZY_INIT_STATIC]]></configKey>
<a href="http://www.cs.umd.edu/~pugh/java/memoryModel/">Java Memory Model web site</a>.
</p>]]></description>
</rule>
- <rule key="LI_LAZY_INIT_UPDATE_STATIC" priority="CRITICAL">
+ <rule key="LI_LAZY_INIT_UPDATE_STATIC">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Incorrect lazy initialization and update of static field]]></name>
<configKey><![CDATA[LI_LAZY_INIT_UPDATE_STATIC]]></configKey>
any other thread from accessing the stored object until it is fully initialized.
</p>]]></description>
</rule>
- <rule key="JLM_JSR166_LOCK_MONITORENTER" priority="CRITICAL">
+ <rule key="JLM_JSR166_LOCK_MONITORENTER">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Synchronization performed on java.util.concurrent Lock]]></name>
<configKey><![CDATA[JLM_JSR166_LOCK_MONITORENTER]]></configKey>
the <code>lock()</code> and <code>unlock()</code> methods instead.
</p>]]></description>
</rule>
- <rule key="UPM_UNCALLED_PRIVATE_METHOD" priority="CRITICAL">
+ <rule key="UPM_UNCALLED_PRIVATE_METHOD">
+<priority>CRITICAL</priority>
<name><![CDATA[Performance - Private method is never called]]></name>
<configKey><![CDATA[UPM_UNCALLED_PRIVATE_METHOD]]></configKey>
removed.
</p>]]></description>
</rule>
- <rule key="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS" priority="CRITICAL">
+ <rule key="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Uncallable method defined in anonymous class]]></name>
<configKey><![CDATA[UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS]]></configKey>
in fact, override the method it is intended to.
</p>]]></description>
</rule>
- <rule key="ODR_OPEN_DATABASE_RESOURCE" priority="CRITICAL">
+ <rule key="ODR_OPEN_DATABASE_RESOURCE">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Method may fail to close database resource]]></name>
<configKey><![CDATA[ODR_OPEN_DATABASE_RESOURCE]]></configKey>
have problems communicating with the database.
</p>]]></description>
</rule>
- <rule key="ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH" priority="CRITICAL">
+ <rule key="ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Method may fail to close database resource on exception]]></name>
<configKey><![CDATA[ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH]]></configKey>
result in poor performance, and could cause the application to
have problems communicating with the database.</p>]]></description>
</rule>
- <rule key="SBSC_USE_STRINGBUFFER_CONCATENATION" priority="CRITICAL">
+ <rule key="SBSC_USE_STRINGBUFFER_CONCATENATION">
+<priority>CRITICAL</priority>
<name><![CDATA[Performance - Method concatenates strings using + in a loop]]></name>
<configKey><![CDATA[SBSC_USE_STRINGBUFFER_CONCATENATION]]></configKey>
String s = buf.toString();
</pre>]]></description>
</rule>
- <rule key="ITA_INEFFICIENT_TO_ARRAY" priority="CRITICAL">
+ <rule key="ITA_INEFFICIENT_TO_ARRAY">
+<priority>CRITICAL</priority>
<name><![CDATA[Performance - Method uses toArray() with zero-length array argument]]></name>
<configKey><![CDATA[ITA_INEFFICIENT_TO_ARRAY]]></configKey>
directly. This avoids the need to create a second array
(by reflection) to return as the result.</p>]]></description>
</rule>
- <rule key="IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD" priority="CRITICAL">
+ <rule key="IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - JUnit assertion in run method will not be noticed by JUnit]]></name>
<configKey><![CDATA[IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD]]></configKey>
in the test failing.
</p>]]></description>
</rule>
- <rule key="IJU_SETUP_NO_SUPER" priority="CRITICAL">
+ <rule key="IJU_SETUP_NO_SUPER">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - TestCase defines setUp that doesn't call super.setUp()]]></name>
<configKey><![CDATA[IJU_SETUP_NO_SUPER]]></configKey>
<description><![CDATA[<p> Class is a JUnit TestCase and implements the setUp method. The setUp method should call
super.setUp(), but doesn't.</p>]]></description>
</rule>
- <rule key="IJU_TEARDOWN_NO_SUPER" priority="CRITICAL">
+ <rule key="IJU_TEARDOWN_NO_SUPER">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - TestCase defines tearDown that doesn't call super.tearDown()]]></name>
<configKey><![CDATA[IJU_TEARDOWN_NO_SUPER]]></configKey>
<description><![CDATA[<p> Class is a JUnit TestCase and implements the tearDown method. The tearDown method should call
super.tearDown(), but doesn't.</p>]]></description>
</rule>
- <rule key="IJU_SUITE_NOT_STATIC" priority="CRITICAL">
+ <rule key="IJU_SUITE_NOT_STATIC">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - TestCase implements a non-static suite method ]]></name>
<configKey><![CDATA[IJU_SUITE_NOT_STATIC]]></configKey>
<description><![CDATA[<p> Class is a JUnit TestCase and implements the suite() method.
The suite method should be declared as being static, but isn't.</p>]]></description>
</rule>
- <rule key="IJU_BAD_SUITE_METHOD" priority="CRITICAL">
+ <rule key="IJU_BAD_SUITE_METHOD">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - TestCase declares a bad suite method ]]></name>
<configKey><![CDATA[IJU_BAD_SUITE_METHOD]]></configKey>
<pre>public static junit.framework.TestSuite suite()</pre>
</p>]]></description>
</rule>
- <rule key="IJU_NO_TESTS" priority="CRITICAL">
+ <rule key="IJU_NO_TESTS">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - TestCase has no tests]]></name>
<configKey><![CDATA[IJU_NO_TESTS]]></configKey>
<description><![CDATA[<p> Class is a JUnit TestCase but has not implemented any test methods</p>]]></description>
</rule>
- <rule key="BOA_BADLY_OVERRIDDEN_ADAPTER" priority="CRITICAL">
+ <rule key="BOA_BADLY_OVERRIDDEN_ADAPTER">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Class overrides a method implemented in super class Adapter wrongly]]></name>
<configKey><![CDATA[BOA_BADLY_OVERRIDDEN_ADAPTER]]></configKey>
a listener defined in the java.awt.event or javax.swing.event package. As a result, this method will not
get called when the event occurs.</p>]]></description>
</rule>
- <rule key="SQL_BAD_RESULTSET_ACCESS" priority="CRITICAL">
+ <rule key="SQL_BAD_RESULTSET_ACCESS">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method attempts to access a result set field with index 0]]></name>
<configKey><![CDATA[SQL_BAD_RESULTSET_ACCESS]]></configKey>
<description><![CDATA[<p> A call to getXXX or updateXXX methods of a result set was made where the
field index is 0. As ResultSet fields start at index 1, this is always a mistake.</p>]]></description>
</rule>
- <rule key="SQL_BAD_PREPARED_STATEMENT_ACCESS" priority="CRITICAL">
+ <rule key="SQL_BAD_PREPARED_STATEMENT_ACCESS">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method attempts to access a prepared statement parameter with index 0]]></name>
<configKey><![CDATA[SQL_BAD_PREPARED_STATEMENT_ACCESS]]></configKey>
<description><![CDATA[<p> A call to a setXXX method of a prepared statement was made where the
parameter index is 0. As parameter indexes start at index 1, this is always a mistake.</p>]]></description>
</rule>
- <rule key="SIO_SUPERFLUOUS_INSTANCEOF" priority="CRITICAL">
+ <rule key="SIO_SUPERFLUOUS_INSTANCEOF">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Unnecessary type check done using instanceof operator]]></name>
<configKey><![CDATA[SIO_SUPERFLUOUS_INSTANCEOF]]></configKey>
<description><![CDATA[<p> Type check performed using the instanceof operator where it can be statically determined whether the object
is of the type requested. </p>]]></description>
</rule>
- <rule key="EC_ARRAY_AND_NONARRAY" priority="CRITICAL">
+ <rule key="EC_ARRAY_AND_NONARRAY">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - equals() used to compare array and nonarray]]></name>
<configKey><![CDATA[EC_ARRAY_AND_NONARRAY]]></configKey>
contents of the arrays, use java.util.Arrays.equals(Object[], Object[]).
</p>]]></description>
</rule>
- <rule key="EC_BAD_ARRAY_COMPARE" priority="CRITICAL">
+ <rule key="EC_BAD_ARRAY_COMPARE">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Invocation of equals() on an array, which is equivalent to ==]]></name>
<configKey><![CDATA[EC_BAD_ARRAY_COMPARE]]></configKey>
contents of the arrays, use java.util.Arrays.equals(Object[], Object[]).
</p>]]></description>
</rule>
- <rule key="STI_INTERRUPTED_ON_CURRENTTHREAD" priority="CRITICAL">
+ <rule key="STI_INTERRUPTED_ON_CURRENTTHREAD">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Unneeded use of currentThread() call, to call interrupted() ]]></name>
<configKey><![CDATA[STI_INTERRUPTED_ON_CURRENTTHREAD]]></configKey>
static method, is more simple and clear to use Thread.interrupted().
</p>]]></description>
</rule>
- <rule key="STI_INTERRUPTED_ON_UNKNOWNTHREAD" priority="CRITICAL">
+ <rule key="STI_INTERRUPTED_ON_UNKNOWNTHREAD">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Static Thread.interrupted() method invoked on thread instance]]></name>
<configKey><![CDATA[STI_INTERRUPTED_ON_UNKNOWNTHREAD]]></configKey>
object than the one the author intended.
</p>]]></description>
</rule>
- <rule key="IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN" priority="CRITICAL">
+ <rule key="IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - A parameter is dead upon entry to a method but overwritten]]></name>
<configKey><![CDATA[IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN]]></configKey>
the caller.
</p>]]></description>
</rule>
- <rule key="DLS_DEAD_LOCAL_STORE" priority="CRITICAL">
+ <rule key="DLS_DEAD_LOCAL_STORE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Dead store to local variable]]></name>
<configKey><![CDATA[DLS_DEAD_LOCAL_STORE]]></configKey>
there is no easy way to eliminate these false positives.
</p>]]></description>
</rule>
- <rule key="DLS_DEAD_LOCAL_STORE_IN_RETURN" priority="CRITICAL">
+ <rule key="DLS_DEAD_LOCAL_STORE_IN_RETURN">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Useless assignment in return statement]]></name>
<configKey><![CDATA[DLS_DEAD_LOCAL_STORE_IN_RETURN]]></configKey>
has effect. Please verify that this statement does the right thing.
</p>]]></description>
</rule>
- <rule key="DLS_DEAD_STORE_OF_CLASS_LITERAL" priority="CRITICAL">
+ <rule key="DLS_DEAD_STORE_OF_CLASS_LITERAL">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Dead store of class literal]]></name>
<configKey><![CDATA[DLS_DEAD_STORE_OF_CLASS_LITERAL]]></configKey>
for more details and examples, and suggestions on how to force class initialization in Java 5.
</p>]]></description>
</rule>
- <rule key="DLS_DEAD_LOCAL_STORE_OF_NULL" priority="CRITICAL">
+ <rule key="DLS_DEAD_LOCAL_STORE_OF_NULL">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Dead store of null to local variable]]></name>
<configKey><![CDATA[DLS_DEAD_LOCAL_STORE_OF_NULL]]></configKey>
as of Java SE 6.0, this is no longer needed or useful.
</p>]]></description>
</rule>
- <rule key="MF_METHOD_MASKS_FIELD" priority="MAJOR">
+ <rule key="MF_METHOD_MASKS_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Method defines a variable that obscures a field]]></name>
<configKey><![CDATA[MF_METHOD_MASKS_FIELD]]></configKey>
read an uninitialized value from the field, leave the field uninitialized,
or both.</p>]]></description>
</rule>
- <rule key="MF_CLASS_MASKS_FIELD" priority="MAJOR">
+ <rule key="MF_CLASS_MASKS_FIELD">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Class defines field that masks a superclass field]]></name>
<configKey><![CDATA[MF_CLASS_MASKS_FIELD]]></configKey>
may indicate an error if methods update or access one of
the fields when they wanted the other.</p>]]></description>
</rule>
- <rule key="WMI_WRONG_MAP_ITERATOR" priority="CRITICAL">
+ <rule key="WMI_WRONG_MAP_ITERATOR">
+<priority>CRITICAL</priority>
<name><![CDATA[Performance - Inefficient use of keySet iterator instead of entrySet iterator]]></name>
<configKey><![CDATA[WMI_WRONG_MAP_ITERATOR]]></configKey>
a keySet iterator. It is more efficient to use an iterator on the entrySet of the map, to avoid the
Map.get(key) lookup.</p>]]></description>
</rule>
- <rule key="ISC_INSTANTIATE_STATIC_CLASS" priority="MAJOR">
+ <rule key="ISC_INSTANTIATE_STATIC_CLASS">
+<priority>MAJOR</priority>
<name><![CDATA[Bad practice - Needless instantiation of class that only supplies static methods]]></name>
<configKey><![CDATA[ISC_INSTANTIATE_STATIC_CLASS]]></configKey>
<description><![CDATA[<p> This class allocates an object that is based on a class that only supplies static methods. This object
does not need to be created, just access the static methods directly using the class name as a qualifier.</p>]]></description>
</rule>
- <rule key="REC_CATCH_EXCEPTION" priority="MAJOR">
+ <rule key="REC_CATCH_EXCEPTION">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Exception is caught when Exception is not thrown]]></name>
<configKey><![CDATA[REC_CATCH_EXCEPTION]]></configKey>
masking potential bugs.
</p>]]></description>
</rule>
- <rule key="FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER" priority="CRITICAL">
+ <rule key="FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Doomed test for equality to NaN]]></name>
<configKey><![CDATA[FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER]]></configKey>
<code>x</code> is floating point precision).
</p>]]></description>
</rule>
- <rule key="FE_FLOATING_POINT_EQUALITY" priority="CRITICAL">
+ <rule key="FE_FLOATING_POINT_EQUALITY">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Test for floating point equality]]></name>
<configKey><![CDATA[FE_FLOATING_POINT_EQUALITY]]></configKey>
See the Java Language Specification, section 4.2.4.
</p>]]></description>
</rule>
- <rule key="UM_UNNECESSARY_MATH" priority="CRITICAL">
+ <rule key="UM_UNNECESSARY_MATH">
+<priority>CRITICAL</priority>
<name><![CDATA[Performance - Method calls static Math class method on a constant value]]></name>
<configKey><![CDATA[UM_UNNECESSARY_MATH]]></configKey>
</tr>
</table>]]></description>
</rule>
- <rule key="RI_REDUNDANT_INTERFACES" priority="MAJOR">
+ <rule key="RI_REDUNDANT_INTERFACES">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Class implements same interface as superclass]]></name>
<configKey><![CDATA[RI_REDUNDANT_INTERFACES]]></configKey>
the interface's implementation.
</p>]]></description>
</rule>
- <rule key="MTIA_SUSPECT_STRUTS_INSTANCE_FIELD" priority="CRITICAL">
+ <rule key="MTIA_SUSPECT_STRUTS_INSTANCE_FIELD">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Class extends Struts Action class and uses instance variables]]></name>
<configKey><![CDATA[MTIA_SUSPECT_STRUTS_INSTANCE_FIELD]]></configKey>
are reported.
</p>]]></description>
</rule>
- <rule key="MTIA_SUSPECT_SERVLET_INSTANCE_FIELD" priority="CRITICAL">
+ <rule key="MTIA_SUSPECT_SERVLET_INSTANCE_FIELD">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Class extends Servlet class and uses instance variables]]></name>
<configKey><![CDATA[MTIA_SUSPECT_SERVLET_INSTANCE_FIELD]]></configKey>
only using method local variables.
</p>]]></description>
</rule>
- <rule key="PS_PUBLIC_SEMAPHORES" priority="CRITICAL">
+ <rule key="PS_PUBLIC_SEMAPHORES">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Class exposes synchronization and semaphores in its public interface]]></name>
<configKey><![CDATA[PS_PUBLIC_SEMAPHORES]]></configKey>
a public reference. Consider using a internal private member variable to control synchronization.
</p>]]></description>
</rule>
- <rule key="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG" priority="CRITICAL">
+ <rule key="ICAST_INTEGER_MULTIPLY_CAST_TO_LONG">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Result of integer multiplication cast to long]]></name>
<configKey><![CDATA[ICAST_INTEGER_MULTIPLY_CAST_TO_LONG]]></configKey>
</pre></code>
</p>]]></description>
</rule>
- <rule key="ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND" priority="CRITICAL">
+ <rule key="ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - int value cast to float and then passed to Math.round]]></name>
<configKey><![CDATA[ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND]]></configKey>
floating point arithmetic.
</p>]]></description>
</rule>
- <rule key="ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL" priority="CRITICAL">
+ <rule key="ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - int value cast to double and then passed to Math.ceil]]></name>
<configKey><![CDATA[ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL]]></configKey>
floating point arithmetic.
</p>]]></description>
</rule>
- <rule key="ICAST_IDIV_CAST_TO_DOUBLE" priority="CRITICAL">
+ <rule key="ICAST_IDIV_CAST_TO_DOUBLE">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - int division result cast to double or float]]></name>
<configKey><![CDATA[ICAST_IDIV_CAST_TO_DOUBLE]]></configKey>
</pre>
</blockquote>]]></description>
</rule>
- <rule key="J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION" priority="CRITICAL">
+ <rule key="J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Store of non serializable object into HttpSession]]></name>
<configKey><![CDATA[J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION]]></configKey>
If this session is passivated or migrated, an error will result.
</p>]]></description>
</rule>
- <rule key="DMI_NONSERIALIZABLE_OBJECT_WRITTEN" priority="CRITICAL">
+ <rule key="DMI_NONSERIALIZABLE_OBJECT_WRITTEN">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Non serializable object written to ObjectOutput]]></name>
<configKey><![CDATA[DMI_NONSERIALIZABLE_OBJECT_WRITTEN]]></configKey>
If the object is, indeed, non-serializable, an error will result.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT" priority="CRITICAL">
+ <rule key="VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - No previous argument for format string]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT]]></configKey>
<p>would throw a MissingFormatArgumentException when executed.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_BAD_CONVERSION" priority="CRITICAL">
+ <rule key="VA_FORMAT_STRING_BAD_CONVERSION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - The type of a supplied argument doesn't match format specifier]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_BAD_CONVERSION]]></configKey>
the String "1" is incompatible with the format specifier %d.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN" priority="MAJOR">
+ <rule key="VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Non-Boolean argument formatted using %b format specifier]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN]]></configKey>
This feature of format strings is strange, and may not be what you intended.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY" priority="MAJOR">
+ <rule key="VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - Array formatted in useless way using format string]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY]]></configKey>
Consider wrapping the array using <code>Arrays.asList(...)</code> before handling it off to a formatted.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_ARG_MISMATCH" priority="CRITICAL">
+ <rule key="VA_FORMAT_STRING_ARG_MISMATCH">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Correctness - Number of format-string arguments does not correspond to number of placeholders]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_ARG_MISMATCH]]></configKey>
author intended.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED" priority="MAJOR">
+ <rule key="VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED">
+<priority>MAJOR</priority>
<name><![CDATA[Correctness - More arguments are passed that are actually used in the format string]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED]]></configKey>
information that was intended to be included in the formatted string.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_ILLEGAL" priority="CRITICAL">
+ <rule key="VA_FORMAT_STRING_ILLEGAL">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Illegal format string]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_ILLEGAL]]></configKey>
this statement is executed.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_MISSING_ARGUMENT" priority="CRITICAL">
+ <rule key="VA_FORMAT_STRING_MISSING_ARGUMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Format string references missing argument]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_MISSING_ARGUMENT]]></configKey>
this statement is executed.
</p>]]></description>
</rule>
- <rule key="VA_FORMAT_STRING_BAD_ARGUMENT" priority="CRITICAL">
+ <rule key="VA_FORMAT_STRING_BAD_ARGUMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Format string placeholder incompatible with passed argument]]></name>
<configKey><![CDATA[VA_FORMAT_STRING_BAD_ARGUMENT]]></configKey>
this statement is executed.
</p>]]></description>
</rule>
- <rule key="VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG" priority="CRITICAL">
+ <rule key="VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Correctness - Primitive array passed to function expecting a variable number of object arguments]]></name>
<configKey><![CDATA[VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG]]></configKey>
This creates an array of length one to hold the primitive array and passes it to the function.
</p>]]></description>
</rule>
- <rule key="BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS" priority="CRITICAL">
+ <rule key="BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Equals method should not assume anything about the type of its argument]]></name>
<configKey><![CDATA[BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS]]></configKey>
false if <code>o</code> is not the same type as <code>this</code>.
</p>]]></description>
</rule>
- <rule key="BC_BAD_CAST_TO_ABSTRACT_COLLECTION" priority="MAJOR">
+ <rule key="BC_BAD_CAST_TO_ABSTRACT_COLLECTION">
+<priority>MAJOR</priority>
<name><![CDATA[Dodgy - Questionable cast to abstract collection ]]></name>
<configKey><![CDATA[BC_BAD_CAST_TO_ABSTRACT_COLLECTION]]></configKey>
to iterate through a collection, you don't need to cast it to a Set or List.
</p>]]></description>
</rule>
- <rule key="BC_IMPOSSIBLE_CAST" priority="BLOCKER">
+ <rule key="BC_IMPOSSIBLE_CAST">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - Impossible cast]]></name>
<configKey><![CDATA[BC_IMPOSSIBLE_CAST]]></configKey>
This cast will always throw a ClassCastException.
</p>]]></description>
</rule>
- <rule key="NP_NULL_INSTANCEOF" priority="BLOCKER">
+ <rule key="NP_NULL_INSTANCEOF">
+<priority>BLOCKER</priority>
<name><![CDATA[Correctness - A known null value is checked to see if it is an instance of a type]]></name>
<configKey><![CDATA[NP_NULL_INSTANCEOF]]></configKey>
an indication of some misunderstanding or some other logic error.
</p>]]></description>
</rule>
- <rule key="BC_IMPOSSIBLE_INSTANCEOF" priority="CRITICAL">
+ <rule key="BC_IMPOSSIBLE_INSTANCEOF">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - instanceof will always return false]]></name>
<configKey><![CDATA[BC_IMPOSSIBLE_INSTANCEOF]]></configKey>
an indication of some misunderstanding or some other logic error.
</p>]]></description>
</rule>
- <rule key="BC_VACUOUS_INSTANCEOF" priority="CRITICAL">
+ <rule key="BC_VACUOUS_INSTANCEOF">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - instanceof will always return true]]></name>
<configKey><![CDATA[BC_VACUOUS_INSTANCEOF]]></configKey>
better to do a null test rather than an instanceof test.
</p>]]></description>
</rule>
- <rule key="BC_UNCONFIRMED_CAST" priority="CRITICAL">
+ <rule key="BC_UNCONFIRMED_CAST">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Unchecked/unconfirmed cast]]></name>
<configKey><![CDATA[BC_UNCONFIRMED_CAST]]></configKey>
cast will not fail.
</p>]]></description>
</rule>
- <rule key="BC_BAD_CAST_TO_CONCRETE_COLLECTION" priority="CRITICAL">
+ <rule key="BC_BAD_CAST_TO_CONCRETE_COLLECTION">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Questionable cast to concrete collection]]></name>
<configKey><![CDATA[BC_BAD_CAST_TO_CONCRETE_COLLECTION]]></configKey>
collection class.
</p>]]></description>
</rule>
- <rule key="RE_POSSIBLE_UNINTENDED_PATTERN" priority="CRITICAL">
+ <rule key="RE_POSSIBLE_UNINTENDED_PATTERN">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - "." used for regular expression]]></name>
<configKey><![CDATA[RE_POSSIBLE_UNINTENDED_PATTERN]]></configKey>
character has been replaced by a / character.
</p>]]></description>
</rule>
- <rule key="RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION" priority="CRITICAL">
+ <rule key="RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Invalid syntax for regular expression]]></name>
<configKey><![CDATA[RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION]]></configKey>
executed.
</p>]]></description>
</rule>
- <rule key="RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION" priority="CRITICAL">
+ <rule key="RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - File.separator used for regular expression]]></name>
<configKey><![CDATA[RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION]]></configKey>
</p>]]></description>
</rule>
- <rule key="DLS_OVERWRITTEN_INCREMENT" priority="CRITICAL">
+ <rule key="DLS_OVERWRITTEN_INCREMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Overwritten increment]]></name>
<configKey><![CDATA[DLS_OVERWRITTEN_INCREMENT]]></configKey>
overwrites the incremented value with the original value.
</p>]]></description>
</rule>
- <rule key="ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT" priority="CRITICAL">
+ <rule key="ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Unsigned right shift cast to short/byte]]></name>
<configKey><![CDATA[ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT]]></configKey>
a signed and unsigned right shift (depending upon the size of the shift).
</p>]]></description>
</rule>
- <rule key="ICAST_BAD_SHIFT_AMOUNT" priority="CRITICAL">
+ <rule key="ICAST_BAD_SHIFT_AMOUNT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Integer shift by an amount not in the range 0..31]]></name>
<configKey><![CDATA[ICAST_BAD_SHIFT_AMOUNT]]></configKey>
and it at least confusing.
</p>]]></description>
</rule>
- <rule key="IM_MULTIPLYING_RESULT_OF_IREM" priority="CRITICAL">
+ <rule key="IM_MULTIPLYING_RESULT_OF_IREM">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Integer multiply of result of integer remainder]]></name>
<configKey><![CDATA[IM_MULTIPLYING_RESULT_OF_IREM]]></configKey>
i % 60 * 1000 is (i % 60) * 1000, not i % (60 * 1000).
</p>]]></description>
</rule>
- <rule key="DMI_INVOKING_HASHCODE_ON_ARRAY" priority="CRITICAL">
+ <rule key="DMI_INVOKING_HASHCODE_ON_ARRAY">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Invocation of hashCode on an array]]></name>
<configKey><![CDATA[DMI_INVOKING_HASHCODE_ON_ARRAY]]></configKey>
</p>]]></description>
</rule>
- <rule key="DMI_INVOKING_TOSTRING_ON_ARRAY" priority="CRITICAL">
+ <rule key="DMI_INVOKING_TOSTRING_ON_ARRAY">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Invocation of toString on an array]]></name>
<configKey><![CDATA[DMI_INVOKING_TOSTRING_ON_ARRAY]]></configKey>
String that gives the contents of the array. See Programming Puzzlers, chapter 3, puzzle 12.
</p>]]></description>
</rule>
- <rule key="DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY" priority="CRITICAL">
+ <rule key="DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Invocation of toString on an array]]></name>
<configKey><![CDATA[DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY]]></configKey>
String that gives the contents of the array. See Programming Puzzlers, chapter 3, puzzle 12.
</p>]]></description>
</rule>
- <rule key="IM_AVERAGE_COMPUTATION_COULD_OVERFLOW" priority="CRITICAL">
+ <rule key="IM_AVERAGE_COMPUTATION_COULD_OVERFLOW">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Computation of average could overflow]]></name>
<configKey><![CDATA[IM_AVERAGE_COMPUTATION_COULD_OVERFLOW]]></configKey>
publicized the bug pattern</a>.
</p>]]></description>
</rule>
- <rule key="IM_BAD_CHECK_FOR_ODD" priority="CRITICAL">
+ <rule key="IM_BAD_CHECK_FOR_ODD">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Check for oddness that won't work for negative numbers ]]></name>
<configKey><![CDATA[IM_BAD_CHECK_FOR_ODD]]></configKey>
for oddness, consider using x & 1 == 1, or x % 2 != 0.
</p>]]></description>
</rule>
- <rule key="DMI_HARDCODED_ABSOLUTE_FILENAME" priority="CRITICAL">
+ <rule key="DMI_HARDCODED_ABSOLUTE_FILENAME">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Code contains a hard coded reference to an absolute pathname]]></name>
<configKey><![CDATA[DMI_HARDCODED_ABSOLUTE_FILENAME]]></configKey>
(e.g., <code>new File("/home/dannyc/workspace/j2ee/src/share/com/sun/enterprise/deployment");</code>
</p>]]></description>
</rule>
- <rule key="DMI_BAD_MONTH" priority="CRITICAL">
+ <rule key="DMI_BAD_MONTH">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Bad constant value for month]]></name>
<configKey><![CDATA[DMI_BAD_MONTH]]></configKey>
value outside the expected range of 0..11 to a method.
</p>]]></description>
</rule>
- <rule key="DMI_USELESS_SUBSTRING" priority="CRITICAL">
+ <rule key="DMI_USELESS_SUBSTRING">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Invocation of substring(0), which returns the original value]]></name>
<configKey><![CDATA[DMI_USELESS_SUBSTRING]]></configKey>
This code invokes substring(0) on a String, which returns the original value.
</p>]]></description>
</rule>
- <rule key="DMI_CALLING_NEXT_FROM_HASNEXT" priority="CRITICAL">
+ <rule key="DMI_CALLING_NEXT_FROM_HASNEXT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - hasNext method invokes next]]></name>
<configKey><![CDATA[DMI_CALLING_NEXT_FROM_HASNEXT]]></configKey>
and the next method is supposed to change the state of the iterator.
</p>]]></description>
</rule>
- <rule key="SWL_SLEEP_WITH_LOCK_HELD" priority="CRITICAL">
+ <rule key="SWL_SLEEP_WITH_LOCK_HELD">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Method calls Thread.sleep() with a lock held]]></name>
<configKey><![CDATA[SWL_SLEEP_WITH_LOCK_HELD]]></configKey>
to run.
</p>]]></description>
</rule>
- <rule key="DB_DUPLICATE_BRANCHES" priority="CRITICAL">
+ <rule key="DB_DUPLICATE_BRANCHES">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Method uses the same code for two branches]]></name>
<configKey><![CDATA[DB_DUPLICATE_BRANCHES]]></configKey>
Check to ensure that this isn't a coding mistake.
</p>]]></description>
</rule>
- <rule key="DB_DUPLICATE_SWITCH_CLAUSES" priority="CRITICAL">
+ <rule key="DB_DUPLICATE_SWITCH_CLAUSES">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Method uses the same code for two switch clauses]]></name>
<configKey><![CDATA[DB_DUPLICATE_SWITCH_CLAUSES]]></configKey>
a coding mistake.
</p>]]></description>
</rule>
- <rule key="XFB_XML_FACTORY_BYPASS" priority="CRITICAL">
+ <rule key="XFB_XML_FACTORY_BYPASS">
+<priority>CRITICAL</priority>
<name><![CDATA[Dodgy - Method directly allocates a specific implementation of xml interfaces]]></name>
<configKey><![CDATA[XFB_XML_FACTORY_BYPASS]]></configKey>
</ul>
<p>for details.</p>]]></description>
</rule>
- <rule key="CI_CONFUSED_INHERITANCE" priority="MINOR">
+ <rule key="CI_CONFUSED_INHERITANCE">
+<priority>MINOR</priority>
<name><![CDATA[Dodgy - Class is final but declares protected field]]></name>
<configKey><![CDATA[CI_CONFUSED_INHERITANCE]]></configKey>
use for the field.
</p>]]></description>
</rule>
- <rule key="QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT" priority="CRITICAL">
+ <rule key="QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Method assigns boolean literal in boolean expression]]></name>
<configKey><![CDATA[QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT]]></configKey>
==, not an assignment using =.
</p>]]></description>
</rule>
- <rule key="GC_UNCHECKED_TYPE_IN_GENERIC_CALL" priority="CRITICAL">
+ <rule key="GC_UNCHECKED_TYPE_IN_GENERIC_CALL">
+<priority>CRITICAL</priority>
<name><![CDATA[Bad practice - Unchecked type in generic call]]></name>
<configKey><![CDATA[GC_UNCHECKED_TYPE_IN_GENERIC_CALL]]></configKey>
object being passed as a parameter is of an appropriate type.
</p>]]></description>
</rule>
- <rule key="GC_UNRELATED_TYPES" priority="CRITICAL">
+ <rule key="GC_UNRELATED_TYPES">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - No relationship between generic parameter and method argument]]></name>
<configKey><![CDATA[GC_UNRELATED_TYPES]]></configKey>
<code>Foo</code> class) used to perform the equality checks.
</p>]]></description>
</rule>
- <rule key="DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES" priority="CRITICAL">
+ <rule key="DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Collections should not contain themselves]]></name>
<configKey><![CDATA[DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES]]></configKey>
It is likely that the wrong value is being passed as a parameter.
</p>]]></description>
</rule>
- <rule key="DMI_VACUOUS_SELF_COLLECTION_CALL" priority="CRITICAL">
+ <rule key="DMI_VACUOUS_SELF_COLLECTION_CALL">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Vacuous call to collections]]></name>
<configKey><![CDATA[DMI_VACUOUS_SELF_COLLECTION_CALL]]></configKey>
always be true, and <code>c.retainAll(c)</code> should have no effect.
</p>]]></description>
</rule>
- <rule key="DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION" priority="CRITICAL">
+ <rule key="DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Don't use removeAll to clear a collection]]></name>
<configKey><![CDATA[DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION]]></configKey>
not <code>c.removeAll(c)</code>.
</p>]]></description>
</rule>
- <rule key="STCAL_STATIC_CALENDAR_INSTANCE" priority="CRITICAL">
+ <rule key="STCAL_STATIC_CALENDAR_INSTANCE">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Static Calendar]]></name>
<configKey><![CDATA[STCAL_STATIC_CALENDAR_INSTANCE]]></configKey>
<p>For more information on this see <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a>
and <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6178997">Sun Bug #6178997</a>.</p>]]></description>
</rule>
- <rule key="STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE" priority="CRITICAL">
+ <rule key="STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Call to static Calendar]]></name>
<configKey><![CDATA[STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE]]></configKey>
<p>For more information on this see <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a>
and <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6178997">Sun Bug #6178997</a>.</p>]]></description>
</rule>
- <rule key="STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE" priority="CRITICAL">
+ <rule key="STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Static DateFormat]]></name>
<configKey><![CDATA[STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE]]></configKey>
<p>For more information on this see <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a>
and <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6178997">Sun Bug #6178997</a>.</p>]]></description>
</rule>
- <rule key="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE" priority="CRITICAL">
+ <rule key="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Call to static DateFormat]]></name>
<configKey><![CDATA[STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE]]></configKey>
<p>For more information on this see <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579">Sun Bug #6231579</a>
and <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6178997">Sun Bug #6178997</a>.</p>]]></description>
</rule>
- <rule key="TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED" priority="CRITICAL">
+ <rule key="TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Correctness - Value annotated as carrying a type qualifier used where a value that must not carry that qualifier is required]]></name>
<configKey><![CDATA[TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED]]></configKey>
</pre>
</blockquote>]]></description>
</rule>
- <rule key="TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED" priority="CRITICAL">
+ <rule key="TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Correctness - Value annotated as never carrying a type qualifier used where value carrying that qualifier is required]]></name>
<configKey><![CDATA[TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED]]></configKey>
TODO: example
</p>]]></description>
</rule>
- <rule key="TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK" priority="CRITICAL">
+ <rule key="TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Correctness - Value that might not carry a type qualifier is always used in a way requires that type qualifier]]></name>
<configKey><![CDATA[TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK]]></configKey>
in a way that requires values denoted by that type qualifier.
</p>]]></description>
</rule>
- <rule key="TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK" priority="CRITICAL">
+ <rule key="TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Correctness - Value that might carry a type qualifier is always used in a way prohibits it from having that type qualifier]]></name>
<configKey><![CDATA[TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK]]></configKey>
in a way that prohibits values denoted by that type qualifier.
</p>]]></description>
</rule>
- <rule key="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK" priority="CRITICAL">
+ <rule key="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Explicit annotation inconsistent with use]]></name>
<configKey><![CDATA[TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK]]></configKey>
Either the usage or the annotation is incorrect.
</p>]]></description>
</rule>
- <rule key="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK" priority="CRITICAL">
+ <rule key="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Explicit annotation inconsistent with use]]></name>
<configKey><![CDATA[TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK]]></configKey>
Either the usage or the annotation is incorrect.
</p>]]></description>
</rule>
- <rule key="IO_APPENDING_TO_OBJECT_OUTPUT_STREAM" priority="CRITICAL">
+ <rule key="IO_APPENDING_TO_OBJECT_OUTPUT_STREAM">
+<priority>CRITICAL</priority>
<name><![CDATA[Correctness - Doomed attempt to append to an object output stream]]></name>
<configKey><![CDATA[IO_APPENDING_TO_OBJECT_OUTPUT_STREAM]]></configKey>
TODO: example.
</p>]]></description>
</rule>
- <rule key="WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL" priority="CRITICAL">
+ <rule key="WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL">
+<priority>CRITICAL</priority>
<name><![CDATA[Multithreaded correctness - Sychronization on getClass rather than class literal]]></name>
<configKey><![CDATA[WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL]]></configKey>
</pre></p>
<p>Bug pattern contributed by Jason Mehrens</p>]]></description>
</rule>
- <rule key="SF_SWITCH_FALLTHROUGH" priority="CRITICAL">
+ <rule key="SF_SWITCH_FALLTHROUGH">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Switch statement found where one case falls through to the next case]]></name>
<configKey><![CDATA[SF_SWITCH_FALLTHROUGH]]></configKey>
through to the next case. Usually you need to end this case with a break or return.
</p>]]></description>
</rule>
- <rule key="SF_SWITCH_NO_DEFAULT" priority="MAJOR">
+ <rule key="SF_SWITCH_NO_DEFAULT">
+<priority>MAJOR</priority>
<name>
<![CDATA[Switch statement found where default case is missing]]></name>
<configKey><![CDATA[SF_SWITCH_NO_DEFAULT]]></configKey>
Usually you need to provide a default case.
</p>]]></description>
</rule>
- <rule key="SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH" priority="CRITICAL">
+ <rule key="SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Dead store due to switch statement fall through]]></name>
<configKey><![CDATA[SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH]]></configKey>
break or return at the end of the previous case.
</p>]]></description>
</rule>
- <rule key="SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW" priority="CRITICAL">
+ <rule key="SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Dead store due to switch statement fall through to throw]]></name>
<configKey><![CDATA[SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW]]></configKey>
It is likely that you forgot to put a break or return at the end of the previous case.
</p>]]></description>
</rule>
- <rule key="NM_CLASS_NAMING_CONVENTION" priority="MAJOR">
+ <rule key="NM_CLASS_NAMING_CONVENTION">
+<priority>MAJOR</priority>
<name>
<![CDATA[Class names should start with an upper case letter]]></name>
<configKey><![CDATA[NM_CLASS_NAMING_CONVENTION]]></configKey>
(unless the abbreviation is much more widely used than the long form, such as URL or HTML).
</p>]]></description>
</rule>
- <rule key="NM_FIELD_NAMING_CONVENTION" priority="MAJOR">
+ <rule key="NM_FIELD_NAMING_CONVENTION">
+<priority>MAJOR</priority>
<name>
<![CDATA[Field names should start with a lower case letter]]></name>
<configKey><![CDATA[NM_FIELD_NAMING_CONVENTION]]></configKey>
with a lowercase first letter and the first letters of subsequent words capitalized.
</p>]]></description>
</rule>
- <rule key="NM_METHOD_NAMING_CONVENTION" priority="MAJOR">
+ <rule key="NM_METHOD_NAMING_CONVENTION">
+<priority>MAJOR</priority>
<name>
<![CDATA[Method names should start with a lower case letter]]></name>
<configKey><![CDATA[NM_METHOD_NAMING_CONVENTION]]></configKey>
with the first letter of each internal word capitalized.
</p>]]></description>
</rule>
- <rule key="SE_BAD_FIELD" priority="MAJOR">
+ <rule key="SE_BAD_FIELD">
+<priority>MAJOR</priority>
<name>
<![CDATA[Non-transient non-serializable instance field in serializable class]]></name>
<configKey><![CDATA[SE_BAD_FIELD]]></configKey>
Objects of this class will not be deserialized correctly if a non-Serializable object is stored in this field.
</p>]]></description>
</rule>
- <rule key="NM_BAD_EQUAL" priority="CRITICAL">
+ <rule key="NM_BAD_EQUAL">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Class defines equal(Object); should it be equals(Object)?]]></name>
<configKey><![CDATA[NM_BAD_EQUAL]]></configKey>
in <code>java.lang.Object</code>, which is probably what was intended.
</p>]]></description>
</rule>
- <rule key="NM_LCASE_HASHCODE" priority="CRITICAL">
+ <rule key="NM_LCASE_HASHCODE">
+<priority>CRITICAL</priority>
<name>
<![CDATA[Class defines hashcode(); should it be hashCode()?]]></name>
<configKey><![CDATA[NM_LCASE_HASHCODE]]></configKey>
method in <code>java.lang.Object</code>, which is probably what was intended.
</p>]]></description>
</rule>
- <rule key="NM_LCASE_TOSTRING" priority="MAJOR">
+ <rule key="NM_LCASE_TOSTRING">
+<priority>MAJOR</priority>
<name>
<![CDATA[Class defines tostring(); should it be toString()?]]></name>
<configKey><![CDATA[NM_LCASE_TOSTRING]]></configKey>
method in <code>java.lang.Object</code>, which is probably what was intended.
</p>]]></description>
</rule>
- <rule key="NM_LCASE_TOSTRING" priority="MAJOR">
+ <rule key="NM_LCASE_TOSTRING">
+<priority>MAJOR</priority>
<name>
<![CDATA[Class defines tostring(); should it be toString()?]]></name>
<configKey><![CDATA[NM_LCASE_TOSTRING]]></configKey>
</p>]]></description>
</rule>
- <rule key="BAC_BAD_APPLET_CONSTRUCTOR" priority="INFO">
+ <rule key="BAC_BAD_APPLET_CONSTRUCTOR">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Bad Applet Constructor relies on uninitialized AppletStub]]></name>
<configKey><![CDATA[BAC_BAD_APPLET_CONSTRUCTOR]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="UOE_USE_OBJECT_EQUALS" priority="INFO">
+ <rule key="UOE_USE_OBJECT_EQUALS">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Calls to equals on a final class that doesn't override Object's equals method]]></name>
<configKey><![CDATA[UOE_USE_OBJECT_EQUALS]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="CD_CIRCULAR_DEPENDENCY" priority="INFO">
+ <rule key="CD_CIRCULAR_DEPENDENCY">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Test for circular dependencies among classes]]></name>
<configKey><![CDATA[CD_CIRCULAR_DEPENDENCY]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="IMA_INEFFICIENT_MEMBER_ACCESS" priority="INFO">
+ <rule key="IMA_INEFFICIENT_MEMBER_ACCESS">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Method accesses a private member variable of owning class]]></name>
<configKey><![CDATA[IMA_INEFFICIENT_MEMBER_ACCESS]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="USM_USELESS_SUBCLASS_METHOD" priority="INFO">
+ <rule key="USM_USELESS_SUBCLASS_METHOD">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Method superfluously delegates to parent class method]]></name>
<configKey><![CDATA[USM_USELESS_SUBCLASS_METHOD]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="USM_USELESS_ABSTRACT_METHOD" priority="INFO">
+ <rule key="USM_USELESS_ABSTRACT_METHOD">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Abstract Method is already defined in implemented interface]]></name>
<configKey><![CDATA[USM_USELESS_ABSTRACT_METHOD]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="OBL_UNSATISFIED_OBLIGATION" priority="INFO">
+ <rule key="OBL_UNSATISFIED_OBLIGATION">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Method may fail to clean up stream or resource]]></name>
<configKey><![CDATA[OBL_UNSATISFIED_OBLIGATION]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="FB_UNEXPECTED_WARNING" priority="INFO">
+ <rule key="FB_UNEXPECTED_WARNING">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Unexpected/undesired warning from FindBugs]]></name>
<configKey><![CDATA[FB_UNEXPECTED_WARNING]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="FB_MISSING_EXPECTED_WARNING" priority="INFO">
+ <rule key="FB_MISSING_EXPECTED_WARNING">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Missing expected or desired warning from FindBugs]]></name>
<configKey><![CDATA[FB_MISSING_EXPECTED_WARNING]]></configKey>
<description><![CDATA[<p>
</p>]]></description>
</rule>
- <rule key="LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE" priority="INFO">
+ <rule key="LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE">
+<priority>INFO</priority>
<name><![CDATA[Experimental - Potential lost logger changes due to weak reference in OpenJDK]]></name>
<configKey><![CDATA[LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE]]></configKey>
<description><![CDATA[<p>
<rules>
<!-- PMD 4.2.5 -->
- <rule key="AvoidThrowingNewInstanceOfSameException" priority="MAJOR">
+ <rule key="AvoidThrowingNewInstanceOfSameException" >
+<priority>MAJOR</priority>
<name><![CDATA[Strict Exception - Avoid throwing new instance of same exception]]></name>
<configKey>rulesets/strictexception.xml/AvoidThrowingNewInstanceOfSameException</configKey>
</pre>]]></description>
</rule>
- <rule key="CallSuperFirst" priority="MAJOR">
+ <rule key="CallSuperFirst" >
+<priority>MAJOR</priority>
<name><![CDATA[Android - call super first]]></name>
<configKey>rulesets/android.xml/CallSuperFirst</configKey>
</pre>]]></description>
</rule>
- <rule key="CallSuperLast" priority="MAJOR">
+ <rule key="CallSuperLast" >
+<priority>MAJOR</priority>
<name><![CDATA[Android - call super last]]></name>
<configKey>rulesets/android.xml/CallSuperLast</configKey>
</pre>]]></description>
</rule>
- <rule key="ProtectLogD" priority="MAJOR">
+ <rule key="ProtectLogD" >
+<priority>MAJOR</priority>
<name><![CDATA[Android - Protect LOGD]]></name>
<configKey>rulesets/android.xml/ProtectLogD</configKey>
</pre>]]></description>
</rule>
- <rule key="ProtectLogV" priority="MAJOR">
+ <rule key="ProtectLogV" >
+<priority>MAJOR</priority>
<name><![CDATA[Android - Protect LOGV]]></name>
<configKey>rulesets/android.xml/ProtectLogV</configKey>
<!-- PMD 4.2.3 -->
- <rule key="EmptyInitializer" priority="MAJOR">
+ <rule key="EmptyInitializer" >
+<priority>MAJOR</priority>
<name><![CDATA[Basic - Empty Initializer]]></name>
<configKey>rulesets/basic.xml/EmptyInitializer</configKey>
<!-- PMD 4.2.2 -->
- <rule key="CyclomaticComplexity" priority="MAJOR">
+ <rule key="CyclomaticComplexity" >
+<priority>MAJOR</priority>
<name><![CDATA[Code size - cyclomatic complexity]]></name>
<configKey>rulesets/codesize.xml/CyclomaticComplexity</configKey>
</param>
</rule>
- <rule key="AvoidStringBufferField" priority="MAJOR">
+ <rule key="AvoidStringBufferField" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid StringBuffer field]]></name>
<configKey>rulesets/strings.xml/AvoidStringBufferField</configKey>
</pre>]]></description>
</rule>
- <rule key="DoNotThrowExceptionInFinally" priority="MAJOR">
+ <rule key="DoNotThrowExceptionInFinally" >
+<priority>MAJOR</priority>
<name><![CDATA[Strict Exception - Do not throw exception in finally]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/DoNotThrowExceptionInFinally]]></configKey>
]]></description>
</rule>
- <rule key="TooManyMethods" priority="MAJOR">
+ <rule key="TooManyMethods" >
+<priority>MAJOR</priority>
<name><![CDATA[Too many methods]]></name>
<configKey><![CDATA[rulesets/codesize.xml/TooManyMethods]]></configKey>
</param>
</rule>
- <rule key="ReturnEmptyArrayRatherThanNull" priority="MINOR">
+ <rule key="ReturnEmptyArrayRatherThanNull" >
+<priority>MINOR</priority>
<name><![CDATA[Return empty array rather than null]]></name>
<configKey><![CDATA[rulesets/design.xml/ReturnEmptyArrayRatherThanNull]]></configKey>
]]></description>
</rule>
- <rule key="TooFewBranchesForASwitchStatement" priority="MINOR">
+ <rule key="TooFewBranchesForASwitchStatement" >
+<priority>MINOR</priority>
<name><![CDATA[Too few branches for a switch statement]]></name>
<configKey><![CDATA[rulesets/design.xml/TooFewBranchesForASwitchStatement]]></configKey>
</param>
</rule>
- <rule key="AbstractClassWithoutAnyMethod" priority="MAJOR">
+ <rule key="AbstractClassWithoutAnyMethod" >
+<priority>MAJOR</priority>
<name><![CDATA[Abstract class without any methods]]></name>
<configKey><![CDATA[rulesets/design.xml/AbstractClassWithoutAnyMethod]]></configKey>
</rule>
- <rule key="DoNotCallGarbageCollectionExplicitly" priority="CRITICAL">
+ <rule key="DoNotCallGarbageCollectionExplicitly" >
+<priority>CRITICAL</priority>
<name><![CDATA[Do not call garbage collection explicitly]]></name>
<configKey><![CDATA[rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly]]></configKey>
</pre>]]></description>
</rule>
- <rule key="AvoidMultipleUnaryOperators" priority="MAJOR">
+ <rule key="AvoidMultipleUnaryOperators" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Multiple Unary Operators]]></name>
<configKey><![CDATA[rulesets/basic.xml/AvoidMultipleUnaryOperators]]></configKey>
</rule>
- <rule key="DoubleCheckedLocking" priority="MAJOR">
+ <rule key="DoubleCheckedLocking" >
+<priority>MAJOR</priority>
<name><![CDATA[Double checked locking]]></name>
<configKey><![CDATA[rulesets/basic.xml/DoubleCheckedLocking]]></configKey>
</pre> ]]></description>
</rule>
- <rule key="NPathComplexity" priority="MAJOR">
+ <rule key="NPathComplexity" >
+<priority>MAJOR</priority>
<name><![CDATA[NPath complexity]]></name>
<configKey><![CDATA[rulesets/codesize.xml/NPathComplexity]]></configKey>
</rule>
- <rule key="SimplifyBooleanReturns" priority="MINOR">
+ <rule key="SimplifyBooleanReturns" >
+<priority>MINOR</priority>
<name><![CDATA[Simplify boolean returns]]></name>
<configKey><![CDATA[rulesets/design.xml/SimplifyBooleanReturns]]></configKey>
]]></description>
</rule>
- <rule key="SimplifyBooleanExpressions" priority="MAJOR">
+ <rule key="SimplifyBooleanExpressions" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid unnecessary comparisons in boolean expressions]]></name>
<configKey><![CDATA[rulesets/design.xml/SimplifyBooleanExpressions]]></configKey>
]]></description>
</rule>
- <rule key="SwitchStmtsShouldHaveDefault" priority="MAJOR">
+ <rule key="SwitchStmtsShouldHaveDefault" >
+<priority>MAJOR</priority>
<name><![CDATA[Switch statements should have default]]></name>
<configKey><![CDATA[rulesets/design.xml/SwitchStmtsShouldHaveDefault]]></configKey>
]]></description>
</rule>
- <rule key="DefaultLabelNotLastInSwitchStmt" priority="MAJOR">
+ <rule key="DefaultLabelNotLastInSwitchStmt" >
+<priority>MAJOR</priority>
<name><![CDATA[Default label not last in switch statement]]></name>
<configKey><![CDATA[rulesets/design.xml/DefaultLabelNotLastInSwitchStmt]]></configKey>
</rule>
- <rule key="ClassWithOnlyPrivateConstructorsShouldBeFinal" priority="MAJOR">
+ <rule key="ClassWithOnlyPrivateConstructorsShouldBeFinal" >
+<priority>MAJOR</priority>
<name><![CDATA[Class with only private constructors should be final]]></name>
<configKey><![CDATA[rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal]]></configKey>
</pre>]]></description>
</rule>
- <rule key="AvoidFinalLocalVariable" priority="MAJOR">
+ <rule key="AvoidFinalLocalVariable" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Final Local Variable]]></name>
<configKey><![CDATA[rulesets/controversial.xml/AvoidFinalLocalVariable]]></configKey>
</pre>]]></description>
</rule>
- <rule key="UnnecessaryParentheses" priority="MINOR">
+ <rule key="UnnecessaryParentheses" >
+<priority>MINOR</priority>
<name><![CDATA[Unnecessary parentheses]]></name>
<configKey><![CDATA[rulesets/controversial.xml/UnnecessaryParentheses]]></configKey>
</pre>]]></description>
</rule>
- <rule key="OverrideBothEqualsAndHashcode" priority="CRITICAL">
+ <rule key="OverrideBothEqualsAndHashcode" >
+<priority>CRITICAL</priority>
<name><![CDATA[Override both equals and hashcode]]></name>
<configKey><![CDATA[rulesets/basic.xml/OverrideBothEqualsAndHashcode]]></configKey>
</rule>
- <rule key="UnusedImports" priority="INFO">
+ <rule key="UnusedImports" >
+<priority>INFO</priority>
<name><![CDATA[Unused imports]]></name>
<configKey><![CDATA[rulesets/imports.xml/UnusedImports]]></configKey>
</pre>]]></description>
</rule>
- <rule key="LocalVariableCouldBeFinal" priority="MINOR">
+ <rule key="LocalVariableCouldBeFinal" >
+<priority>MINOR</priority>
<name><![CDATA[Local variable could be final]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/LocalVariableCouldBeFinal]]></configKey>
</rule>
- <rule key="AbstractNaming" priority="MAJOR">
+ <rule key="AbstractNaming" >
+<priority>MAJOR</priority>
<name><![CDATA[Abstract naming]]></name>
<configKey><![CDATA[rulesets/naming.xml/AbstractNaming]]></configKey>
</pre>]]></description>
</rule>
- <rule key="NoPackage" priority="MAJOR">
+ <rule key="NoPackage" >
+<priority>MAJOR</priority>
<name><![CDATA[No package]]></name>
<configKey><![CDATA[rulesets/naming.xml/NoPackage]]></configKey>
</rule>
- <rule key="PackageCase" priority="MAJOR">
+ <rule key="PackageCase" >
+<priority>MAJOR</priority>
<name><![CDATA[Package case]]></name>
<configKey><![CDATA[rulesets/naming.xml/PackageCase]]></configKey>
</pre>]]></description>
</rule>
- <rule key="ByteInstantiation" priority="MAJOR">
+ <rule key="ByteInstantiation" >
+<priority>MAJOR</priority>
<name><![CDATA[Java5 migration - Byte instantiation]]></name>
<configKey><![CDATA[rulesets/migrating.xml/ByteInstantiation]]></configKey>
</pre>]]></description>
</rule>
- <rule key="ShortInstantiation" priority="MAJOR">
+ <rule key="ShortInstantiation" >
+<priority>MAJOR</priority>
<name><![CDATA[Java5 migration - Short instantiation]]></name>
<configKey><![CDATA[rulesets/migrating.xml/ShortInstantiation]]></configKey>
</rule>
- <rule key="LongInstantiation" priority="MAJOR">
+ <rule key="LongInstantiation" >
+<priority>MAJOR</priority>
<name><![CDATA[Java5 migration - Long instantiation]]></name>
<configKey><![CDATA[rulesets/migrating.xml/LongInstantiation]]></configKey>
</pre>]]></description>
</rule>
- <rule key="ProperCloneImplementation" priority="CRITICAL">
+ <rule key="ProperCloneImplementation" >
+<priority>CRITICAL</priority>
<name><![CDATA[Proper clone implementation]]></name>
<configKey><![CDATA[rulesets/clone.xml/ProperCloneImplementation]]></configKey>
<!-- PMD <= 4.1.1 -->
- <rule key="EmptyFinalizer" priority="MAJOR">
+ <rule key="EmptyFinalizer" >
+<priority>MAJOR</priority>
<name><![CDATA[Empty Finalizer]]></name>
<configKey><![CDATA[rulesets/finalizers.xml/EmptyFinalizer]]></configKey>
<description><![CDATA[If the finalize() method is empty, then it does not need to exist.]]></description>
</rule>
- <rule key="FinalizeOnlyCallsSuperFinalize" priority="MAJOR">
+ <rule key="FinalizeOnlyCallsSuperFinalize" >
+<priority>MAJOR</priority>
<name><![CDATA[Finalize Only Calls Super Finalize]]></name>
<configKey><![CDATA[rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize]]></configKey>
<description><![CDATA[If the finalize() is implemented, it should do something besides just calling super.finalize().]]></description>
</rule>
- <rule key="FinalizeOverloaded" priority="MAJOR">
+ <rule key="FinalizeOverloaded" >
+<priority>MAJOR</priority>
<name><![CDATA[Finalize Overloaded]]></name>
<configKey><![CDATA[rulesets/finalizers.xml/FinalizeOverloaded]]></configKey>
<description>
<![CDATA[Methods named finalize() should not have parameters. It is confusing and probably a bug to overload finalize(). It will not be called by the VM.]]></description>
</rule>
- <rule key="FinalizeDoesNotCallSuperFinalize" priority="MAJOR">
+ <rule key="FinalizeDoesNotCallSuperFinalize" >
+<priority>MAJOR</priority>
<name><![CDATA[Finalize Does Not Call Super Finalize]]></name>
<configKey><![CDATA[rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize]]></configKey>
<description><![CDATA[If the finalize() is implemented, its last action should be to call super.finalize.]]></description>
</rule>
- <rule key="FinalizeShouldBeProtected" priority="MAJOR">
+ <rule key="FinalizeShouldBeProtected" >
+<priority>MAJOR</priority>
<name><![CDATA[Finalize Should Be Protected]]></name>
<configKey><![CDATA[rulesets/finalizers.xml/FinalizeShouldBeProtected]]></configKey>
<description><![CDATA[If you override finalize(), make it protected. If you make it public, other classes may call it.]]></description>
</rule>
- <rule key="AvoidCallingFinalize" priority="MAJOR">
+ <rule key="AvoidCallingFinalize" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Calling Finalize]]></name>
<configKey><![CDATA[rulesets/finalizers.xml/AvoidCallingFinalize]]></configKey>
<description>
<![CDATA[Object.finalize() is called by the garbage collector on an object when garbage collection determines that there are no more references to the object. ]]></description>
</rule>
- <rule key="DontNestJsfInJstlIteration" priority="MAJOR">
+ <rule key="DontNestJsfInJstlIteration" >
+<priority>MAJOR</priority>
<name><![CDATA[Dont Nest Jsf In Jstl Iteration]]></name>
<configKey><![CDATA[rulesets/basic-jsf.xml/DontNestJsfInJstlIteration]]></configKey>
<description><![CDATA[Do not nest JSF component custom actions inside a custom action that iterates over its body.]]></description>
</rule>
- <rule key="UnusedPrivateField" priority="MAJOR">
+ <rule key="UnusedPrivateField" >
+<priority>MAJOR</priority>
<name><![CDATA[Unused Private Field]]></name>
<configKey><![CDATA[rulesets/unusedcode.xml/UnusedPrivateField]]></configKey>
<description><![CDATA[Detects when a private field is declared and/or assigned a value, but not used.]]></description>
</rule>
- <rule key="UnusedLocalVariable" priority="MAJOR">
+ <rule key="UnusedLocalVariable" >
+<priority>MAJOR</priority>
<name><![CDATA[Unused local variable]]></name>
<configKey><![CDATA[rulesets/unusedcode.xml/UnusedLocalVariable]]></configKey>
<description><![CDATA[Detects when a local variable is declared and/or assigned, but not used.]]></description>
</rule>
- <rule key="UnusedPrivateMethod" priority="MAJOR">
+ <rule key="UnusedPrivateMethod" >
+<priority>MAJOR</priority>
<name><![CDATA[Unused private method]]></name>
<configKey><![CDATA[rulesets/unusedcode.xml/UnusedPrivateMethod]]></configKey>
<description><![CDATA[Unused Private Method detects when a private method is declared but is unused. This PMD rule should be switched off and replaced by its equivalent from Squid that is more effective : it generates less false-positives and detects more dead code.]]></description>
</rule>
- <rule key="UnusedFormalParameter" priority="MAJOR">
+ <rule key="UnusedFormalParameter" >
+<priority>MAJOR</priority>
<name><![CDATA[Unused formal parameter]]></name>
<configKey><![CDATA[rulesets/unusedcode.xml/UnusedFormalParameter]]></configKey>
<description><![CDATA[Avoid passing parameters to methods or constructors and then not using those parameters. ]]></description>
</rule>
- <rule key="UnnecessaryConstructor" priority="MAJOR">
+ <rule key="UnnecessaryConstructor" >
+<priority>MAJOR</priority>
<name><![CDATA[Unnecessary constructor]]></name>
<configKey><![CDATA[rulesets/controversial.xml/UnnecessaryConstructor]]></configKey>
<description>
<![CDATA[This rule detects when a constructor is not necessary; i.e., when there's only one constructor, it's public, has an empty body, and takes no arguments.]]></description>
</rule>
- <rule key="NullAssignment" priority="MAJOR">
+ <rule key="NullAssignment" >
+<priority>MAJOR</priority>
<name><![CDATA[Null Assignment]]></name>
<configKey><![CDATA[rulesets/controversial.xml/NullAssignment]]></configKey>
<description>
<![CDATA[Assigning a null to a variable (outside of its declaration) is usually bad form. Some times, the assignment is an indication that the programmer doesn't completely understand what is going on in the code. NOTE: This sort of assignment may in rare cases be useful to encourage garbage collection. If that's what you're using it for, by all means, disregard this rule :-)]]></description>
</rule>
- <rule key="OnlyOneReturn" priority="MINOR">
+ <rule key="OnlyOneReturn" >
+<priority>MINOR</priority>
<name><![CDATA[Only One Return]]></name>
<configKey><![CDATA[rulesets/controversial.xml/OnlyOneReturn]]></configKey>
<description><![CDATA[A method should have only one exit point, and that should be the last statement in the method.]]></description>
</rule>
- <rule key="UnusedModifier" priority="INFO">
+ <rule key="UnusedModifier" >
+<priority>INFO</priority>
<name><![CDATA[Unused Modifier]]></name>
<configKey><![CDATA[rulesets/controversial.xml/UnusedModifier]]></configKey>
<description>
<![CDATA[Fields in interfaces are automatically public static final, and methods are public abstract. Classes or interfaces nested in an interface are automatically public and static (all nested interfaces are automatically static). For historical reasons, modifiers which are implied by the context are accepted by the compiler, but are superfluous.]]></description>
</rule>
- <rule key="AssignmentInOperand" priority="MAJOR">
+ <rule key="AssignmentInOperand" >
+<priority>MAJOR</priority>
<name><![CDATA[Assignment In Operand]]></name>
<configKey><![CDATA[rulesets/controversial.xml/AssignmentInOperand]]></configKey>
<description><![CDATA[Avoid assignments in operands; this can make code more complicated and harder to read.]]></description>
</rule>
- <rule key="AtLeastOneConstructor" priority="MAJOR">
+ <rule key="AtLeastOneConstructor" >
+<priority>MAJOR</priority>
<name><![CDATA[At Least One Constructor]]></name>
<configKey><![CDATA[rulesets/controversial.xml/AtLeastOneConstructor]]></configKey>
<description><![CDATA[Each class should declare at least one constructor.]]></description>
</rule>
- <rule key="DontImportSun" priority="MINOR">
+ <rule key="DontImportSun" >
+<priority>MINOR</priority>
<name><![CDATA[Dont Import Sun]]></name>
<configKey><![CDATA[rulesets/controversial.xml/DontImportSun]]></configKey>
<description><![CDATA[Avoid importing anything from the 'sun.*' packages. These packages are not portable and are likely to change.]]></description>
</rule>
- <rule key="SuspiciousOctalEscape" priority="MAJOR">
+ <rule key="SuspiciousOctalEscape" >
+<priority>MAJOR</priority>
<name><![CDATA[Suspicious Octal Escape]]></name>
<configKey><![CDATA[rulesets/controversial.xml/SuspiciousOctalEscape]]></configKey>
<description>
<![CDATA[A suspicious octal escape sequence was found inside a String literal. The Java language specification (section 3.10.6) says an octal escape sequence inside a literal String shall consist of a backslash followed by: OctalDigit | OctalDigit OctalDigit | ZeroToThree OctalDigit OctalDigit Any octal escape sequence followed by non-octal digits can be confusing, e.g. "\038" is interpreted as the octal escape sequence "\03" followed by the literal character 8.]]></description>
</rule>
- <rule key="CallSuperInConstructor" priority="MINOR">
+ <rule key="CallSuperInConstructor" >
+<priority>MINOR</priority>
<name><![CDATA[Call Super In Constructor]]></name>
<configKey><![CDATA[rulesets/controversial.xml/CallSuperInConstructor]]></configKey>
<description>
<![CDATA[It is a good practice to call super() in a constructor. If super() is not called but another constructor (such as an overloaded constructor) is called, this rule will not report it.]]></description>
</rule>
- <rule key="SingularField" priority="MINOR">
+ <rule key="SingularField" >
+<priority>MINOR</priority>
<name><![CDATA[Singular Field]]></name>
<configKey><![CDATA[rulesets/design.xml/SingularField]]></configKey>
<description><![CDATA[A field that's only used by one method could perhaps be replaced by a local variable.]]></description>
</rule>
- <rule key="DefaultPackage" priority="MINOR">
+ <rule key="DefaultPackage" >
+<priority>MINOR</priority>
<name><![CDATA[Default Package]]></name>
<configKey><![CDATA[rulesets/controversial.xml/DefaultPackage]]></configKey>
<description><![CDATA[Use explicit scoping instead of the default package private level.]]></description>
</rule>
- <rule key="BooleanInversion" priority="MAJOR">
+ <rule key="BooleanInversion" >
+<priority>MAJOR</priority>
<name><![CDATA[Boolean Inversion]]></name>
<configKey><![CDATA[rulesets/controversial.xml/BooleanInversion]]></configKey>
<description>
<![CDATA[Use bitwise inversion to invert boolean values - it's the fastest way to do this. See http://www.javaspecialists.co.za/archive/newsletter.do?issue=042&locale=en_US for specific details]]></description>
</rule>
- <rule key="DataflowAnomalyAnalysis" priority="MAJOR">
+ <rule key="DataflowAnomalyAnalysis" >
+<priority>MAJOR</priority>
<name><![CDATA[Dataflow Anomaly Analysis]]></name>
<configKey><![CDATA[rulesets/controversial.xml/DataflowAnomalyAnalysis]]></configKey>
</param>
</rule>
- <rule key="CouplingBetweenObjects" priority="MAJOR">
+ <rule key="CouplingBetweenObjects" >
+<priority>MAJOR</priority>
<name><![CDATA[Coupling between objects]]></name>
<configKey><![CDATA[rulesets/coupling.xml/CouplingBetweenObjects]]></configKey>
</param>
</rule>
- <rule key="ExcessiveImports" priority="MAJOR">
+ <rule key="ExcessiveImports" >
+<priority>MAJOR</priority>
<name><![CDATA[Coupling - excessive imports]]></name>
<configKey><![CDATA[rulesets/coupling.xml/ExcessiveImports]]></configKey>
</param>
</rule>
- <rule key="LooseCoupling" priority="MAJOR">
+ <rule key="LooseCoupling" >
+<priority>MAJOR</priority>
<name><![CDATA[Loose coupling]]></name>
<configKey><![CDATA[rulesets/coupling.xml/LooseCoupling]]></configKey>
<description><![CDATA[Avoid using implementation types (i.e., HashSet); use the interface (i.e, Set) instead]]></description>
</rule>
- <rule key="MethodArgumentCouldBeFinal" priority="MINOR">
+ <rule key="MethodArgumentCouldBeFinal" >
+<priority>MINOR</priority>
<name><![CDATA[Method Argument Could Be Final]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/MethodArgumentCouldBeFinal]]></configKey>
<description><![CDATA[A method argument that is never assigned can be declared final.]]></description>
</rule>
- <rule key="AvoidInstantiatingObjectsInLoops" priority="MINOR">
+ <rule key="AvoidInstantiatingObjectsInLoops" >
+<priority>MINOR</priority>
<name><![CDATA[Avoid instantiating objects in loops]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops]]></configKey>
<description><![CDATA[Detects when a new object is created inside a loop]]></description>
</rule>
- <rule key="UseArrayListInsteadOfVector" priority="MAJOR">
+ <rule key="UseArrayListInsteadOfVector" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Array List Instead Of Vector]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/UseArrayListInsteadOfVector]]></configKey>
<description><![CDATA[ArrayList is a much better Collection implementation than Vector.]]></description>
</rule>
- <rule key="SimplifyStartsWith" priority="MINOR">
+ <rule key="SimplifyStartsWith" >
+<priority>MINOR</priority>
<name><![CDATA[Simplify Starts With]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/SimplifyStartsWith]]></configKey>
<description><![CDATA[Since it passes in a literal of length 1, this call to String.startsWith can be rewritten using String.charAt(0) to save some time.]]></description>
</rule>
- <rule key="UseStringBufferForStringAppends" priority="MAJOR">
+ <rule key="UseStringBufferForStringAppends" >
+<priority>MAJOR</priority>
<name><![CDATA[Use String Buffer For String Appends]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/UseStringBufferForStringAppends]]></configKey>
<description><![CDATA[Finds usages of += for appending strings.]]></description>
</rule>
- <rule key="UseArraysAsList" priority="MAJOR">
+ <rule key="UseArraysAsList" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Arrays As List]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/UseArraysAsList]]></configKey>
<description>
<![CDATA[The class java.util.Arrays has a asList method that should be use when you want to create a new List from an array of objects. It is faster than executing a loop to cpy all the elements of the array one by one]]></description>
</rule>
- <rule key="AvoidArrayLoops" priority="MAJOR">
+ <rule key="AvoidArrayLoops" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Array Loops]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/AvoidArrayLoops]]></configKey>
<description><![CDATA[Instead of copying data between two arrays, use System.arrayCopy method]]></description>
</rule>
- <rule key="UnnecessaryWrapperObjectCreation" priority="MAJOR">
+ <rule key="UnnecessaryWrapperObjectCreation" >
+<priority>MAJOR</priority>
<name><![CDATA[Unnecessary Wrapper Object Creation]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation]]></configKey>
<description><![CDATA[Parsing method should be called directy instead. ]]></description>
</rule>
- <rule key="UseProperClassLoader" priority="CRITICAL">
+ <rule key="UseProperClassLoader" >
+<priority>CRITICAL</priority>
<name><![CDATA[Use Proper Class Loader]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/UseProperClassLoader]]></configKey>
<description><![CDATA[In J2EE getClassLoader() might not work as expected. Use Thread.currentThread().getContextClassLoader() instead.]]></description>
</rule>
- <rule key="EmptyCatchBlock" priority="CRITICAL">
+ <rule key="EmptyCatchBlock" >
+<priority>CRITICAL</priority>
<name><![CDATA[Empty Catch Block]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptyCatchBlock]]></configKey>
</param>
</rule>
- <rule key="EmptyIfStmt" priority="CRITICAL">
+ <rule key="EmptyIfStmt" >
+<priority>CRITICAL</priority>
<name><![CDATA[Empty If Stmt]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptyIfStmt]]></configKey>
<description><![CDATA[Empty If Statement finds instances where a condition is checked but nothing is done about it.]]></description>
</rule>
- <rule key="EmptyWhileStmt" priority="CRITICAL">
+ <rule key="EmptyWhileStmt" >
+<priority>CRITICAL</priority>
<name><![CDATA[Empty While Stmt]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptyWhileStmt]]></configKey>
<description>
<![CDATA[Empty While Statement finds all instances where a while statement does nothing. If it is a timing loop, then you should use Thread.sleep() for it; if it's a while loop that does a lot in the exit expression, rewrite it to make it clearer.]]></description>
</rule>
- <rule key="EmptyTryBlock" priority="MAJOR">
+ <rule key="EmptyTryBlock" >
+<priority>MAJOR</priority>
<name><![CDATA[Empty Try Block]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptyTryBlock]]></configKey>
<description><![CDATA[Avoid empty try blocks - what's the point?]]></description>
</rule>
- <rule key="EmptyFinallyBlock" priority="CRITICAL">
+ <rule key="EmptyFinallyBlock" >
+<priority>CRITICAL</priority>
<name><![CDATA[Empty Finally Block]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptyFinallyBlock]]></configKey>
<description><![CDATA[Avoid empty finally blocks - these can be deleted.]]></description>
</rule>
- <rule key="EmptySwitchStatements" priority="MAJOR">
+ <rule key="EmptySwitchStatements" >
+<priority>MAJOR</priority>
<name><![CDATA[Empty Switch Statements]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptySwitchStatements]]></configKey>
<description><![CDATA[Avoid empty switch statements.]]></description>
</rule>
- <rule key="JumbledIncrementer" priority="MAJOR">
+ <rule key="JumbledIncrementer" >
+<priority>MAJOR</priority>
<name><![CDATA[Jumbled Incrementer]]></name>
<configKey><![CDATA[rulesets/basic.xml/JumbledIncrementer]]></configKey>
}
}</pre>]]></description>
</rule>
- <rule key="ForLoopShouldBeWhileLoop" priority="MINOR">
+ <rule key="ForLoopShouldBeWhileLoop" >
+<priority>MINOR</priority>
<name><![CDATA[For Loop Should Be While Loop]]></name>
<configKey><![CDATA[rulesets/basic.xml/ForLoopShouldBeWhileLoop]]></configKey>
<description><![CDATA[Some for loops can be simplified to while loops - this makes them more concise.]]></description>
</rule>
- <rule key="UnnecessaryConversionTemporary" priority="MAJOR">
+ <rule key="UnnecessaryConversionTemporary" >
+<priority>MAJOR</priority>
<name><![CDATA[Unnecessary Conversion Temporary]]></name>
<configKey><![CDATA[rulesets/basic.xml/UnnecessaryConversionTemporary]]></configKey>
<description><![CDATA[Avoid unnecessary temporaries when converting primitives to Strings]]></description>
</rule>
- <rule key="ReturnFromFinallyBlock" priority="MAJOR">
+ <rule key="ReturnFromFinallyBlock" >
+<priority>MAJOR</priority>
<name><![CDATA[Return From Finally Block]]></name>
<configKey><![CDATA[rulesets/basic.xml/ReturnFromFinallyBlock]]></configKey>
<description><![CDATA[Avoid returning from a finally block - this can discard exceptions.]]></description>
</rule>
- <rule key="EmptySynchronizedBlock" priority="CRITICAL">
+ <rule key="EmptySynchronizedBlock" >
+<priority>CRITICAL</priority>
<name><![CDATA[Empty Synchronized Block]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptySynchronizedBlock]]></configKey>
<description><![CDATA[Avoid empty synchronized blocks - they're useless.]]></description>
</rule>
- <rule key="UnnecessaryReturn" priority="MINOR">
+ <rule key="UnnecessaryReturn" >
+<priority>MINOR</priority>
<name><![CDATA[Unnecessary Return]]></name>
<configKey><![CDATA[rulesets/basic.xml/UnnecessaryReturn]]></configKey>
<description><![CDATA[Avoid unnecessary return statements]]></description>
</rule>
- <rule key="EmptyStaticInitializer" priority="MAJOR">
+ <rule key="EmptyStaticInitializer" >
+<priority>MAJOR</priority>
<name><![CDATA[Empty Static Initializer]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptyStaticInitializer]]></configKey>
<description><![CDATA[An empty static initializer was found.]]></description>
</rule>
- <rule key="UnconditionalIfStatement" priority="CRITICAL">
+ <rule key="UnconditionalIfStatement" >
+<priority>CRITICAL</priority>
<name><![CDATA[Unconditional If Statement]]></name>
<configKey><![CDATA[rulesets/basic.xml/UnconditionalIfStatement]]></configKey>
<description><![CDATA[Do not use if statements that are always true or always false.]]></description>
</rule>
- <rule key="EmptyStatementNotInLoop" priority="MAJOR">
+ <rule key="EmptyStatementNotInLoop" >
+<priority>MAJOR</priority>
<name><![CDATA[Empty Statement Not In Loop]]></name>
<configKey><![CDATA[rulesets/basic.xml/EmptyStatementNotInLoop]]></configKey>
<description>
<![CDATA[An empty statement (aka a semicolon by itself) that is not used as the sole body of a for loop or while loop is probably a bug. It could also be a double semicolon, which is useless and should be removed.]]></description>
</rule>
- <rule key="BooleanInstantiation" priority="MAJOR">
+ <rule key="BooleanInstantiation" >
+<priority>MAJOR</priority>
<name><![CDATA[Boolean Instantiation]]></name>
<configKey><![CDATA[rulesets/basic.xml/BooleanInstantiation]]></configKey>
<description><![CDATA[Avoid instantiating Boolean objects; you can reference Boolean.TRUE, Boolean.FALSE, or call Boolean.valueOf() instead.]]></description>
</rule>
- <rule key="UnnecessaryFinalModifier" priority="INFO">
+ <rule key="UnnecessaryFinalModifier" >
+<priority>INFO</priority>
<name><![CDATA[Unnecessary Final Modifier]]></name>
<configKey><![CDATA[rulesets/basic.xml/UnnecessaryFinalModifier]]></configKey>
<description><![CDATA[When a class has the final modifier, all the methods are automatically final.]]></description>
</rule>
- <rule key="CollapsibleIfStatements" priority="MINOR">
+ <rule key="CollapsibleIfStatements" >
+<priority>MINOR</priority>
<name><![CDATA[Collapsible If Statements]]></name>
<configKey><![CDATA[rulesets/basic.xml/CollapsibleIfStatements]]></configKey>
<description><![CDATA[Sometimes two 'if' statements can be consolidated by separating their conditions with a boolean short-circuit operator.]]></description>
</rule>
- <rule key="UselessOverridingMethod" priority="MAJOR">
+ <rule key="UselessOverridingMethod" >
+<priority>MAJOR</priority>
<name><![CDATA[Useless Overriding Method]]></name>
<configKey><![CDATA[rulesets/basic.xml/UselessOverridingMethod]]></configKey>
<description><![CDATA[The overriding method merely calls the same method defined in a superclass]]></description>
</rule>
- <rule key="ClassCastExceptionWithToArray" priority="MAJOR">
+ <rule key="ClassCastExceptionWithToArray" >
+<priority>MAJOR</priority>
<name><![CDATA[Class Cast Exception With To Array]]></name>
<configKey><![CDATA[rulesets/basic.xml/ClassCastExceptionWithToArray]]></configKey>
<description>
<![CDATA[if you need to get an array of a class from your Collection, you should pass an array of the desidered class as the parameter of the toArray method. Otherwise you will get a ClassCastException.]]></description>
</rule>
- <rule key="AvoidDecimalLiteralsInBigDecimalConstructor" priority="MAJOR">
+ <rule key="AvoidDecimalLiteralsInBigDecimalConstructor" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Decimal Literals In Big Decimal Constructor]]></name>
<configKey><![CDATA[rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor]]></configKey>
<description>
<![CDATA[One might assume that new BigDecimal(.1) is exactly equal to .1, but it is actually equal to .1000000000000000055511151231257827021181583404541015625. This is so because .1 cannot be represented exactly as a double (or, for that matter, as a binary fraction of any finite length). Thus, the long value that is being passed in to the constructor is not exactly equal to .1, appearances notwithstanding. The (String) constructor, on the other hand, is perfectly predictable: 'new BigDecimal(.1)' is exactly equal to .1, as one would expect. Therefore, it is generally recommended that the (String) constructor be used in preference to this one.]]></description>
</rule>
- <rule key="UselessOperationOnImmutable" priority="CRITICAL">
+ <rule key="UselessOperationOnImmutable" >
+<priority>CRITICAL</priority>
<name><![CDATA[Useless Operation On Immutable]]></name>
<configKey><![CDATA[rulesets/basic.xml/UselessOperationOnImmutable]]></configKey>
<description>
<![CDATA[An operation on an Immutable object (BigDecimal or BigInteger) won't change the object itself. The result of the operation is a new object. Therefore, ignoring the operation result is an error.]]></description>
</rule>
- <rule key="MisplacedNullCheck" priority="CRITICAL">
+ <rule key="MisplacedNullCheck" >
+<priority>CRITICAL</priority>
<name><![CDATA[Misplaced Null Check]]></name>
<configKey><![CDATA[rulesets/basic.xml/MisplacedNullCheck]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="UnusedNullCheckInEquals" priority="MAJOR">
+ <rule key="UnusedNullCheckInEquals" >
+<priority>MAJOR</priority>
<name><![CDATA[Unused Null Check In Equals]]></name>
<configKey><![CDATA[rulesets/basic.xml/UnusedNullCheckInEquals]]></configKey>
<description>
<![CDATA[After checking an object reference for null, you should invoke equals() on that object rather than passing it to another object's equals() method.]]></description>
</rule>
- <rule key="AvoidThreadGroup" priority="CRITICAL">
+ <rule key="AvoidThreadGroup" >
+<priority>CRITICAL</priority>
<name><![CDATA[Avoid Thread Group]]></name>
<configKey><![CDATA[rulesets/basic.xml/AvoidThreadGroup]]></configKey>
<description><![CDATA[Avoid using ThreadGroup; although it is intended to be used in a threaded environment it contains methods that are not thread safe.]]></description>
</rule>
- <rule key="BrokenNullCheck" priority="CRITICAL">
+ <rule key="BrokenNullCheck" >
+<priority>CRITICAL</priority>
<name><![CDATA[Broken Null Check]]></name>
<configKey><![CDATA[rulesets/basic.xml/BrokenNullCheck]]></configKey>
<description>
<![CDATA[The null check is broken since it will throw a Nullpointer itself. The reason is that a method is called on the object when it is null. It is likely that you used || instead of && or vice versa.]]></description>
</rule>
- <rule key="BigIntegerInstantiation" priority="MAJOR">
+ <rule key="BigIntegerInstantiation" >
+<priority>MAJOR</priority>
<name><![CDATA[Big Integer Instantiation]]></name>
<configKey><![CDATA[rulesets/basic.xml/BigIntegerInstantiation]]></configKey>
<description>
<![CDATA[Don't create instances of already existing BigInteger (BigInteger.ZERO, BigInteger.ONE) and for 1.5 on, BigInteger.TEN and BigDecimal (BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.TEN)]]></description>
</rule>
- <rule key="AvoidUsingOctalValues" priority="MAJOR">
+ <rule key="AvoidUsingOctalValues" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Using Octal Values]]></name>
<configKey><![CDATA[rulesets/basic.xml/AvoidUsingOctalValues]]></configKey>
<description><![CDATA[Integer literals should not start with zero. Zero means that the rest of literal will be interpreted as an octal value. ]]></description>
</rule>
- <rule key="UseSingleton" priority="MAJOR">
+ <rule key="UseSingleton" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Singleton]]></name>
<configKey><![CDATA[rulesets/design.xml/UseSingleton]]></configKey>
<description>
<![CDATA[If you have a class that has nothing but static methods, consider making it a Singleton. Note that this doesn't apply to abstract classes, since their subclasses may well include non-static methods. Also, if you want this class to be a Singleton, remember to add a private constructor to prevent instantiation.]]></description>
</rule>
- <rule key="AvoidDeeplyNestedIfStmts" priority="MAJOR">
+ <rule key="AvoidDeeplyNestedIfStmts" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Deeply Nested If Stmts]]></name>
<configKey><![CDATA[rulesets/design.xml/AvoidDeeplyNestedIfStmts]]></configKey>
</param>
</rule>
- <rule key="AvoidReassigningParameters" priority="MAJOR">
+ <rule key="AvoidReassigningParameters" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Reassigning Parameters]]></name>
<configKey><![CDATA[rulesets/design.xml/AvoidReassigningParameters]]></configKey>
<description><![CDATA[Reassigning values to parameters is a questionable practice. Use a temporary local variable instead.]]></description>
</rule>
- <rule key="SwitchDensity" priority="MAJOR">
+ <rule key="SwitchDensity" >
+<priority>MAJOR</priority>
<name><![CDATA[Switch Density]]></name>
<configKey><![CDATA[rulesets/design.xml/SwitchDensity]]></configKey>
</param>
</rule>
- <rule key="ConstructorCallsOverridableMethod" priority="MAJOR">
+ <rule key="ConstructorCallsOverridableMethod" >
+<priority>MAJOR</priority>
<name><![CDATA[Constructor Calls Overridable Method]]></name>
<configKey><![CDATA[rulesets/design.xml/ConstructorCallsOverridableMethod]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="AccessorClassGeneration" priority="MAJOR">
+ <rule key="AccessorClassGeneration" >
+<priority>MAJOR</priority>
<name><![CDATA[Accessor Class Generation]]></name>
<configKey><![CDATA[rulesets/design.xml/AccessorClassGeneration]]></configKey>
<description>
<![CDATA[Instantiation by way of private constructors from outside of the constructor's class often causes the generation of an accessor. A factory method, or non-privitization of the constructor can eliminate this situation. The generated class file is actually an interface. It gives the accessing class the ability to invoke a new hidden package scope constructor that takes the interface as a supplementary parameter. This turns a private constructor effectively into one with package scope, and is challenging to discern.]]></description>
</rule>
- <rule key="FinalFieldCouldBeStatic" priority="MINOR">
+ <rule key="FinalFieldCouldBeStatic" >
+<priority>MINOR</priority>
<name><![CDATA[Final Field Could Be Static]]></name>
<configKey><![CDATA[rulesets/design.xml/FinalFieldCouldBeStatic]]></configKey>
<description><![CDATA[If a final field is assigned to a compile-time constant, it could be made static, thus saving overhead in each object at runtime.]]></description>
</rule>
- <rule key="CloseResource" priority="MAJOR">
+ <rule key="CloseResource" >
+<priority>MAJOR</priority>
<name><![CDATA[Close Resource]]></name>
<configKey><![CDATA[rulesets/design.xml/CloseResource]]></configKey>
<description><![CDATA[Methods which may close this resource. Default is 'close'.]]></description>
</param>
</rule>
- <rule key="NonStaticInitializer" priority="MAJOR">
+ <rule key="NonStaticInitializer" >
+<priority>MAJOR</priority>
<name><![CDATA[Non Static Initializer]]></name>
<configKey><![CDATA[rulesets/design.xml/NonStaticInitializer]]></configKey>
<description>
<![CDATA[A nonstatic initializer block will be called any time a constructor is invoked (just prior to invoking the constructor). While this is a valid language construct, it is rarely used and is confusing. Example :<br/><code>public class MyClass {<br/>// this block gets run before any call to a constructor {<br/>System.out.println("I am about to construct myself");<br/>}<br/>}</code>]]></description>
</rule>
- <rule key="NonCaseLabelInSwitchStatement" priority="MAJOR">
+ <rule key="NonCaseLabelInSwitchStatement" >
+<priority>MAJOR</priority>
<name><![CDATA[Non Case Label In Switch Statement]]></name>
<configKey><![CDATA[rulesets/design.xml/NonCaseLabelInSwitchStatement]]></configKey>
<description>
<![CDATA[A non-case label (e.g. a named break/continue label) was present in a switch statement. This legal, but confusing. It is easy to mix up the case labels and the non-case labels.]]></description>
</rule>
- <rule key="OptimizableToArrayCall" priority="MAJOR">
+ <rule key="OptimizableToArrayCall" >
+<priority>MAJOR</priority>
<name><![CDATA[Optimizable To Array Call]]></name>
<configKey><![CDATA[rulesets/design.xml/OptimizableToArrayCall]]></configKey>
<description><![CDATA[A call to Collection.toArray can use the Collection's size vs an empty Array of the desired type.]]></description>
</rule>
- <rule key="BadComparison" priority="MAJOR">
+ <rule key="BadComparison" >
+<priority>MAJOR</priority>
<name><![CDATA[Bad Comparison]]></name>
<configKey><![CDATA[rulesets/design.xml/BadComparison]]></configKey>
<description><![CDATA[Avoid equality comparisons with Double.NaN - these are likely to be logic errors.]]></description>
</rule>
- <rule key="EqualsNull" priority="CRITICAL">
+ <rule key="EqualsNull" >
+<priority>CRITICAL</priority>
<name><![CDATA[Equals Null]]></name>
<configKey><![CDATA[rulesets/design.xml/EqualsNull]]></configKey>
<description><![CDATA[Inexperienced programmers sometimes confuse comparison concepts and use equals() to compare to null.]]></description>
</rule>
- <rule key="ConfusingTernary" priority="MAJOR">
+ <rule key="ConfusingTernary" >
+<priority>MAJOR</priority>
<name><![CDATA[Confusing Ternary]]></name>
<configKey><![CDATA[rulesets/design.xml/ConfusingTernary]]></configKey>
<description>
<![CDATA[In an if expression with an else clause, avoid negation in the test. For example, rephrase: if (x != y) diff(); else same(); as: if (x == y) same(); else diff(); Most if (x != y) cases without an else are often return cases, so consistent use of this rule makes the code easier to read. Also, this resolves trivial ordering problems, such as does the error case go first? or does the common case go first?.]]></description>
</rule>
- <rule key="InstantiationToGetClass" priority="MAJOR">
+ <rule key="InstantiationToGetClass" >
+<priority>MAJOR</priority>
<name><![CDATA[Instantiation To Get Class]]></name>
<configKey><![CDATA[rulesets/design.xml/InstantiationToGetClass]]></configKey>
<description>
<![CDATA[Avoid instantiating an object just to call getClass() on it; use the .class public member instead. Example : replace <code>Class c = new String().getClass();</code> with <code>Class c = String.class;</code>]]></description>
</rule>
- <rule key="IdempotentOperations" priority="MAJOR">
+ <rule key="IdempotentOperations" >
+<priority>MAJOR</priority>
<name><![CDATA[Idempotent Operations]]></name>
<configKey><![CDATA[rulesets/design.xml/IdempotentOperations]]></configKey>
<description><![CDATA[Avoid idempotent operations - they are have no effect. Example : <br/><code>int x = 2;<br/> x = x;</code>]]></description>
</rule>
- <rule key="SimpleDateFormatNeedsLocale" priority="MAJOR">
+ <rule key="SimpleDateFormatNeedsLocale" >
+<priority>MAJOR</priority>
<name><![CDATA[Simple Date Format Needs Locale]]></name>
<configKey><![CDATA[rulesets/design.xml/SimpleDateFormatNeedsLocale]]></configKey>
<description><![CDATA[Be sure to specify a Locale when creating a new instance of SimpleDateFormat.]]></description>
</rule>
- <rule key="ImmutableField" priority="MAJOR">
+ <rule key="ImmutableField" >
+<priority>MAJOR</priority>
<name><![CDATA[Immutable Field]]></name>
<configKey><![CDATA[rulesets/design.xml/ImmutableField]]></configKey>
<description>
<![CDATA[Identifies private fields whose values never change once they are initialized either in the declaration of the field or by a constructor. This aids in converting existing classes to immutable classes.]]></description>
</rule>
- <rule key="UseLocaleWithCaseConversions" priority="MAJOR">
+ <rule key="UseLocaleWithCaseConversions" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Locale With Case Conversions]]></name>
<configKey><![CDATA[rulesets/design.xml/UseLocaleWithCaseConversions]]></configKey>
<description><![CDATA[When doing a String.toLowerCase()/toUpperCase() call, use a Locale. This avoids problems with certain locales, i.e. Turkish.]]></description>
</rule>
- <rule key="AvoidProtectedFieldInFinalClass" priority="MAJOR">
+ <rule key="AvoidProtectedFieldInFinalClass" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Protected Field In Final Class]]></name>
<configKey><![CDATA[rulesets/design.xml/AvoidProtectedFieldInFinalClass]]></configKey>
<description>
<![CDATA[Do not use protected fields in final classes since they cannot be subclassed. Clarify your intent by using private or package access modifiers instead.]]></description>
</rule>
- <rule key="AssignmentToNonFinalStatic" priority="MAJOR">
+ <rule key="AssignmentToNonFinalStatic" >
+<priority>MAJOR</priority>
<name><![CDATA[Assignment To Non Final Static]]></name>
<configKey><![CDATA[rulesets/design.xml/AssignmentToNonFinalStatic]]></configKey>
<description><![CDATA[Identifies a possible unsafe usage of a static field.]]></description>
</rule>
- <rule key="MissingStaticMethodInNonInstantiatableClass" priority="MAJOR">
+ <rule key="MissingStaticMethodInNonInstantiatableClass" >
+<priority>MAJOR</priority>
<name><![CDATA[Missing Static Method In Non Instantiatable Class]]></name>
<configKey><![CDATA[rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass]]></configKey>
<description><![CDATA[A class that has private constructors and does not have any static methods or fields cannot be used.]]></description>
</rule>
- <rule key="AvoidSynchronizedAtMethodLevel" priority="MAJOR">
+ <rule key="AvoidSynchronizedAtMethodLevel" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Synchronized At Method Level]]></name>
<configKey><![CDATA[rulesets/design.xml/AvoidSynchronizedAtMethodLevel]]></configKey>
<description>
<![CDATA[Method level synchronization can backfire when new code is added to the method. Block-level synchronization helps to ensure that only the code that needs synchronization gets it.]]></description>
</rule>
- <rule key="MissingBreakInSwitch" priority="CRITICAL">
+ <rule key="MissingBreakInSwitch" >
+<priority>CRITICAL</priority>
<name><![CDATA[Missing Break In Switch]]></name>
<configKey><![CDATA[rulesets/design.xml/MissingBreakInSwitch]]></configKey>
<description><![CDATA[A switch statement without an enclosed break statement may be a bug.]]></description>
</rule>
- <rule key="UseNotifyAllInsteadOfNotify" priority="MAJOR">
+ <rule key="UseNotifyAllInsteadOfNotify" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Notify All Instead Of Notify]]></name>
<configKey><![CDATA[rulesets/design.xml/UseNotifyAllInsteadOfNotify]]></configKey>
<description>
<![CDATA[Thread.notify() awakens a thread monitoring the object. If more than one thread is monitoring, then only one is chosen. The thread chosen is arbitrary; thus it's usually safer to call notifyAll() instead.]]></description>
</rule>
- <rule key="AvoidInstanceofChecksInCatchClause" priority="MINOR">
+ <rule key="AvoidInstanceofChecksInCatchClause" >
+<priority>MINOR</priority>
<name><![CDATA[Avoid Instanceof Checks In Catch Clause]]></name>
<configKey><![CDATA[rulesets/design.xml/AvoidInstanceofChecksInCatchClause]]></configKey>
<description><![CDATA[Each caught exception type should be handled in its own catch clause.]]></description>
</rule>
- <rule key="AbstractClassWithoutAbstractMethod" priority="MAJOR">
+ <rule key="AbstractClassWithoutAbstractMethod" >
+<priority>MAJOR</priority>
<name><![CDATA[Abstract Class Without Abstract Method]]></name>
<configKey><![CDATA[rulesets/design.xml/AbstractClassWithoutAbstractMethod]]></configKey>
<description>
<![CDATA[The abstract class does not contain any abstract methods. An abstract class suggests an incomplete implementation, which is to be completed by subclasses implementing the abstract methods. If the class is intended to be used as a base class only (not to be instantiated direcly) a protected constructor can be provided prevent direct instantiation.]]></description>
</rule>
- <rule key="SimplifyConditional" priority="MAJOR">
+ <rule key="SimplifyConditional" >
+<priority>MAJOR</priority>
<name><![CDATA[Simplify Conditional]]></name>
<configKey><![CDATA[rulesets/design.xml/SimplifyConditional]]></configKey>
<description><![CDATA[No need to check for null before an instanceof; the instanceof keyword returns false when given a null argument.]]></description>
</rule>
- <rule key="CompareObjectsWithEquals" priority="MAJOR">
+ <rule key="CompareObjectsWithEquals" >
+<priority>MAJOR</priority>
<name><![CDATA[Compare Objects With Equals]]></name>
<configKey><![CDATA[rulesets/design.xml/CompareObjectsWithEquals]]></configKey>
<description><![CDATA[Use equals() to compare object references; avoid comparing them with ==.]]></description>
</rule>
- <rule key="PositionLiteralsFirstInComparisons" priority="MAJOR">
+ <rule key="PositionLiteralsFirstInComparisons" >
+<priority>MAJOR</priority>
<name><![CDATA[Position Literals First In Comparisons]]></name>
<configKey><![CDATA[rulesets/design.xml/PositionLiteralsFirstInComparisons]]></configKey>
<description>
<![CDATA[Position literals first in String comparisons - that way if the String is null you won't get a NullPointerException, it'll just return false.]]></description>
</rule>
- <rule key="UnnecessaryLocalBeforeReturn" priority="MAJOR">
+ <rule key="UnnecessaryLocalBeforeReturn" >
+<priority>MAJOR</priority>
<name><![CDATA[Unnecessary Local Before Return]]></name>
<configKey><![CDATA[rulesets/design.xml/UnnecessaryLocalBeforeReturn]]></configKey>
<description><![CDATA[Avoid unnecessarily creating local variables]]></description>
</rule>
- <rule key="NonThreadSafeSingleton" priority="MAJOR">
+ <rule key="NonThreadSafeSingleton" >
+<priority>MAJOR</priority>
<name><![CDATA[Non Thread Safe Singleton]]></name>
<configKey><![CDATA[rulesets/design.xml/NonThreadSafeSingleton]]></configKey>
<description>
<![CDATA[Non-thread safe singletons can result in bad state changes. Eliminate static singletons if possible by instantiating the object directly. Static singletons are usually not needed as only a single instance exists anyway. Other possible fixes are to synchronize the entire method or to use an initialize-on-demand holder class (do not use the double-check idiom). See Effective Java, item 48.]]></description>
- <param key="checkNonStaticMethods" type="b" priority="MAJOR">
+ <param key="checkNonStaticMethods" type="b" >
+<priority>MAJOR</priority>
<description><![CDATA[Do not set this to false and checkNonStaticFields to true. Default is true.]]></description>
</param>
- <param key="checkNonStaticFields" type="b" priority="MAJOR">
+ <param key="checkNonStaticFields" type="b" >
+<priority>MAJOR</priority>
<description><![CDATA[Do not set this to true and checkNonStaticMethods to false. Default is false.]]></description>
</param>
</rule>
- <rule key="UncommentedEmptyMethod" priority="MAJOR">
+ <rule key="UncommentedEmptyMethod" >
+<priority>MAJOR</priority>
<name><![CDATA[Uncommented Empty Method]]></name>
<configKey><![CDATA[rulesets/design.xml/UncommentedEmptyMethod]]></configKey>
<description>
<![CDATA[Uncommented Empty Method finds instances where a method does not contain statements, but there is no comment. By explicitly commenting empty methods it is easier to distinguish between intentional (commented) and unintentional empty methods.]]></description>
</rule>
- <rule key="UncommentedEmptyConstructor" priority="MAJOR">
+ <rule key="UncommentedEmptyConstructor" >
+<priority>MAJOR</priority>
<name><![CDATA[Uncommented Empty Constructor]]></name>
<configKey><![CDATA[rulesets/design.xml/UncommentedEmptyConstructor]]></configKey>
</param>
</rule>
- <rule key="AvoidConstantsInterface" priority="MAJOR">
+ <rule key="AvoidConstantsInterface" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Constants Interface]]></name>
<configKey><![CDATA[rulesets/design.xml/AvoidConstantsInterface]]></configKey>
<description><![CDATA[An interface should be used only to model a behaviour of a class: using an interface as a container of constants is a poor usage pattern.]]></description>
</rule>
- <rule key="UnsynchronizedStaticDateFormatter" priority="MAJOR">
+ <rule key="UnsynchronizedStaticDateFormatter" >
+<priority>MAJOR</priority>
<name><![CDATA[Unsynchronized Static Date Formatter]]></name>
<configKey><![CDATA[rulesets/design.xml/UnsynchronizedStaticDateFormatter]]></configKey>
<description>
<![CDATA[SimpleDateFormat is not synchronized. Sun recomends separate format instances for each thread. If multiple threads must access a static formatter, the formatter must be synchronized either on method or block level.]]></description>
</rule>
- <rule key="PreserveStackTrace" priority="MAJOR">
+ <rule key="PreserveStackTrace" >
+<priority>MAJOR</priority>
<name><![CDATA[Preserve Stack Trace]]></name>
<configKey><![CDATA[rulesets/design.xml/PreserveStackTrace]]></configKey>
<description>
<![CDATA[Throwing a new exception from a catch block without passing the original exception into the new Exception will cause the true stack trace to be lost, and can make it difficult to debug effectively.]]></description>
</rule>
- <rule key="UseCollectionIsEmpty" priority="MINOR">
+ <rule key="UseCollectionIsEmpty" >
+<priority>MINOR</priority>
<name><![CDATA[Use Collection Is Empty]]></name>
<configKey><![CDATA[rulesets/design.xml/UseCollectionIsEmpty]]></configKey>
<description>
<![CDATA[The isEmpty() method on java.util.Collection is provided to see if a collection has any elements. Comparing the value of size() to 0 merely duplicates existing behavior. ]]></description>
</rule>
- <rule key="MethodReturnsInternalArray" priority="CRITICAL">
+ <rule key="MethodReturnsInternalArray" >
+<priority>CRITICAL</priority>
<name><![CDATA[Security - Method returns internal array]]></name>
<configKey><![CDATA[rulesets/sunsecure.xml/MethodReturnsInternalArray]]></configKey>
<description><![CDATA[Exposing internal arrays directly allows the user to modify some code that could be critical. It is safer to return a copy of the array.]]></description>
</rule>
- <rule key="ArrayIsStoredDirectly" priority="CRITICAL">
+ <rule key="ArrayIsStoredDirectly" >
+<priority>CRITICAL</priority>
<name><![CDATA[Security - Array is stored directly]]></name>
<configKey><![CDATA[rulesets/sunsecure.xml/ArrayIsStoredDirectly]]></configKey>
<description>
<![CDATA[Constructors and methods receiving arrays should clone objects and store the copy. This prevents that future changes from the user affect the internal functionality. ]]></description>
</rule>
- <rule key="AvoidCatchingThrowable" priority="CRITICAL">
+ <rule key="AvoidCatchingThrowable" >
+<priority>CRITICAL</priority>
<name><![CDATA[Avoid Catching Throwable]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/AvoidCatchingThrowable]]></configKey>
<description><![CDATA[This is dangerous because it casts too wide a net; it can catch things like OutOfMemoryError.]]></description>
</rule>
- <rule key="SignatureDeclareThrowsException" priority="MAJOR">
+ <rule key="SignatureDeclareThrowsException" >
+<priority>MAJOR</priority>
<name><![CDATA[Signature Declare Throws Exception]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/SignatureDeclareThrowsException]]></configKey>
<description>
<![CDATA[It is unclear which exceptions that can be thrown from the methods. It might be difficult to document and understand the vague interfaces. Use either a class derived from RuntimeException or a checked exception.]]></description>
</rule>
- <rule key="ExceptionAsFlowControl" priority="MAJOR">
+ <rule key="ExceptionAsFlowControl" >
+<priority>MAJOR</priority>
<name><![CDATA[Exception As Flow Control]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/ExceptionAsFlowControl]]></configKey>
<description><![CDATA[Using Exceptions as flow control leads to GOTOish code and obscures true exceptions when debugging.]]></description>
</rule>
- <rule key="AvoidCatchingNPE" priority="MAJOR">
+ <rule key="AvoidCatchingNPE" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Catching NPE]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/AvoidCatchingNPE]]></configKey>
<description>
<![CDATA[Code should never throw NPE under normal circumstances. A catch block may hide the original error, causing other more subtle errors in its wake.]]></description>
</rule>
- <rule key="AvoidThrowingRawExceptionTypes" priority="MAJOR">
+ <rule key="AvoidThrowingRawExceptionTypes" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Throwing Raw Exception Types]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes]]></configKey>
<description>
<![CDATA[Avoid throwing certain exception types. Rather than throw a raw RuntimeException, Throwable, Exception, or Error, use a subclassed exception or error instead.]]></description>
</rule>
- <rule key="AvoidThrowingNullPointerException" priority="MAJOR">
+ <rule key="AvoidThrowingNullPointerException" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Throwing Null Pointer Exception]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/AvoidThrowingNullPointerException]]></configKey>
<description>
<![CDATA[Avoid throwing a NullPointerException - it's confusing because most people will assume that the virtual machine threw it. Consider using an IllegalArgumentException instead; this will be clearly seen as a programmer-initiated exception.]]></description>
</rule>
- <rule key="AvoidRethrowingException" priority="MAJOR">
+ <rule key="AvoidRethrowingException" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Rethrowing Exception]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/AvoidRethrowingException]]></configKey>
<description><![CDATA[Catch blocks that merely rethrow a caught exception only add to code size and runtime complexity.]]></description>
</rule>
- <rule key="BeanMembersShouldSerialize" priority="MAJOR">
+ <rule key="BeanMembersShouldSerialize" >
+<priority>MAJOR</priority>
<name><![CDATA[Bean Members Should Serialize]]></name>
<configKey><![CDATA[rulesets/javabeans.xml/BeanMembersShouldSerialize]]></configKey>
</param>
</rule>
- <rule key="MissingSerialVersionUID" priority="MAJOR">
+ <rule key="MissingSerialVersionUID" >
+<priority>MAJOR</priority>
<name><![CDATA[Missing Serial Version UID]]></name>
<configKey><![CDATA[rulesets/javabeans.xml/MissingSerialVersionUID]]></configKey>
<description><![CDATA[Classes that are serializable should provide a serialVersionUID field. ]]></description>
</rule>
- <rule key="CloneMethodMustImplementCloneable" priority="MAJOR">
+ <rule key="CloneMethodMustImplementCloneable" >
+<priority>MAJOR</priority>
<name><![CDATA[Clone method must implement Cloneable]]></name>
<configKey><![CDATA[rulesets/clone.xml/CloneMethodMustImplementCloneable]]></configKey>
<description>
<![CDATA[The method clone() should only be implemented if the class implements the Cloneable interface with the exception of a final method that only throws CloneNotSupportedException. This version uses PMD's type resolution facilities, and can detect if the class implements or extends a Cloneable class ]]></description>
</rule>
- <rule key="AvoidDuplicateLiterals" priority="MAJOR">
+ <rule key="AvoidDuplicateLiterals" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Duplicate Literals]]></name>
<configKey><![CDATA[rulesets/strings.xml/AvoidDuplicateLiterals]]></configKey>
<description><![CDATA[File containing strings to skip (one string per line), only used if exceptionlist is not set.]]></description>
</param>
</rule>
- <rule key="StringInstantiation" priority="MAJOR">
+ <rule key="StringInstantiation" >
+<priority>MAJOR</priority>
<name><![CDATA[String Instantiation]]></name>
<configKey><![CDATA[rulesets/strings.xml/StringInstantiation]]></configKey>
<description><![CDATA[Avoid instantiating String objects; this is usually unnecessary.]]></description>
</rule>
- <rule key="StringToString" priority="MAJOR">
+ <rule key="StringToString" >
+<priority>MAJOR</priority>
<name><![CDATA[String To String]]></name>
<configKey><![CDATA[rulesets/strings.xml/StringToString]]></configKey>
<description><![CDATA[Avoid calling toString() on String objects; this is unnecessary.]]></description>
</rule>
- <rule key="InefficientStringBuffering" priority="MAJOR">
+ <rule key="InefficientStringBuffering" >
+<priority>MAJOR</priority>
<name><![CDATA[Inefficient String Buffering]]></name>
<configKey><![CDATA[rulesets/strings.xml/InefficientStringBuffering]]></configKey>
<description><![CDATA[Avoid concatenating non literals in a StringBuffer constructor or append().]]></description>
</rule>
- <rule key="UnnecessaryCaseChange" priority="MINOR">
+ <rule key="UnnecessaryCaseChange" >
+<priority>MINOR</priority>
<name><![CDATA[Unnecessary Case Change]]></name>
<configKey><![CDATA[rulesets/strings.xml/UnnecessaryCaseChange]]></configKey>
<description><![CDATA[Using equalsIgnoreCase() is faster than using toUpperCase/toLowerCase().equals()]]></description>
</rule>
- <rule key="UseStringBufferLength" priority="MINOR">
+ <rule key="UseStringBufferLength" >
+<priority>MINOR</priority>
<name><![CDATA[Use String Buffer Length]]></name>
<configKey><![CDATA[rulesets/strings.xml/UseStringBufferLength]]></configKey>
<description>
<![CDATA[Use StringBuffer.length() to determine StringBuffer length rather than using StringBuffer.toString().equals() or StringBuffer.toString().length() ==.]]></description>
</rule>
- <rule key="AppendCharacterWithChar" priority="MINOR">
+ <rule key="AppendCharacterWithChar" >
+<priority>MINOR</priority>
<name><![CDATA[Append Character With Char]]></name>
<configKey><![CDATA[rulesets/strings.xml/AppendCharacterWithChar]]></configKey>
<description><![CDATA[Avoid concatenating characters as strings in StringBuffer.append.]]></description>
</rule>
- <rule key="ConsecutiveLiteralAppends" priority="MINOR">
+ <rule key="ConsecutiveLiteralAppends" >
+<priority>MINOR</priority>
<name><![CDATA[Consecutive Literal Appends]]></name>
<configKey><![CDATA[rulesets/strings.xml/ConsecutiveLiteralAppends]]></configKey>
</param>
</rule>
- <rule key="UseIndexOfChar" priority="MAJOR">
+ <rule key="UseIndexOfChar" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Index Of Char]]></name>
<configKey><![CDATA[rulesets/strings.xml/UseIndexOfChar]]></configKey>
<description><![CDATA[Use String.indexOf(char) when checking for the index of a single character; it executes faster.]]></description>
</rule>
- <rule key="InefficientEmptyStringCheck" priority="MAJOR">
+ <rule key="InefficientEmptyStringCheck" >
+<priority>MAJOR</priority>
<name><![CDATA[Inefficient Empty String Check]]></name>
<configKey><![CDATA[rulesets/strings.xml/InefficientEmptyStringCheck]]></configKey>
<description>
<![CDATA[String.trim().length() is an inefficient way to check if a String is really empty, as it creates a new String object just to check its size. Consider creating a static function that loops through a string, checking Character.isWhitespace() on each character and returning false if a non-whitespace character is found.]]></description>
</rule>
- <rule key="InsufficientStringBufferDeclaration" priority="MAJOR">
+ <rule key="InsufficientStringBufferDeclaration" >
+<priority>MAJOR</priority>
<name><![CDATA[Insufficient String Buffer Declaration]]></name>
<configKey><![CDATA[rulesets/strings.xml/InsufficientStringBufferDeclaration]]></configKey>
<description>
<![CDATA[Failing to pre-size a StringBuffer properly could cause it to re-size many times during runtime. This rule checks the characters that are actually passed into StringBuffer.append(), but represents a best guess worst case scenario. An empty StringBuffer constructor initializes the object to 16 characters. This default is assumed if the length of the constructor can not be determined.]]></description>
</rule>
- <rule key="UselessStringValueOf" priority="MINOR">
+ <rule key="UselessStringValueOf" >
+<priority>MINOR</priority>
<name><![CDATA[Useless String Value Of]]></name>
<configKey><![CDATA[rulesets/strings.xml/UselessStringValueOf]]></configKey>
<description><![CDATA[No need to call String.valueOf to append to a string; just use the valueOf() argument directly.]]></description>
</rule>
- <rule key="StringBufferInstantiationWithChar" priority="MAJOR">
+ <rule key="StringBufferInstantiationWithChar" >
+<priority>MAJOR</priority>
<name><![CDATA[String Buffer Instantiation With Char]]></name>
<configKey><![CDATA[rulesets/strings.xml/StringBufferInstantiationWithChar]]></configKey>
<description><![CDATA[StringBuffer sb = new StringBuffer('c'); The char will be converted into int to intialize StringBuffer size. ]]></description>
</rule>
- <rule key="ExcessiveMethodLength" priority="MAJOR">
+ <rule key="ExcessiveMethodLength" >
+<priority>MAJOR</priority>
<name><![CDATA[Excessive Method Length]]></name>
<configKey><![CDATA[rulesets/codesize.xml/ExcessiveMethodLength]]></configKey>
</param>
</rule>
- <rule key="ExcessiveParameterList" priority="MAJOR">
+ <rule key="ExcessiveParameterList" >
+<priority>MAJOR</priority>
<name><![CDATA[Excessive Parameter List]]></name>
<configKey><![CDATA[rulesets/codesize.xml/ExcessiveParameterList]]></configKey>
</param>
</rule>
- <rule key="ExcessiveClassLength" priority="MAJOR">
+ <rule key="ExcessiveClassLength" >
+<priority>MAJOR</priority>
<name><![CDATA[Excessive Class Length]]></name>
<configKey><![CDATA[rulesets/codesize.xml/ExcessiveClassLength]]></configKey>
</param>
</rule>
- <rule key="ExcessivePublicCount" priority="MAJOR">
+ <rule key="ExcessivePublicCount" >
+<priority>MAJOR</priority>
<name><![CDATA[Excessive Public Count]]></name>
<configKey><![CDATA[rulesets/codesize.xml/ExcessivePublicCount]]></configKey>
</param>
</rule>
- <rule key="TooManyFields" priority="MAJOR">
+ <rule key="TooManyFields" >
+<priority>MAJOR</priority>
<name><![CDATA[Too Many Fields]]></name>
<configKey><![CDATA[rulesets/codesize.xml/TooManyFields]]></configKey>
</param>
</rule>
- <rule key="NcssMethodCount" priority="MAJOR">
+ <rule key="NcssMethodCount" >
+<priority>MAJOR</priority>
<name><![CDATA[Ncss Method Count]]></name>
<configKey><![CDATA[rulesets/codesize.xml/NcssMethodCount]]></configKey>
<description><![CDATA[The method NCSS count reporting threshold. Default is 100.]]></description>
</param>
</rule>
- <rule key="NcssTypeCount" priority="MAJOR">
+ <rule key="NcssTypeCount" >
+<priority>MAJOR</priority>
<name><![CDATA[Ncss Type Count]]></name>
<configKey><![CDATA[rulesets/codesize.xml/NcssTypeCount]]></configKey>
<description><![CDATA[The type NCSS count reporting threshold. Default is 1500.]]></description>
</param>
</rule>
- <rule key="NcssConstructorCount" priority="MAJOR">
+ <rule key="NcssConstructorCount" >
+<priority>MAJOR</priority>
<name><![CDATA[Ncss Constructor Count]]></name>
<configKey><![CDATA[rulesets/codesize.xml/NcssConstructorCount]]></configKey>
<description><![CDATA[The constructor NCSS count reporting threshold. Default is 100.]]></description>
</param>
</rule>
- <rule key="DuplicateImports" priority="MINOR">
+ <rule key="DuplicateImports" >
+<priority>MINOR</priority>
<name><![CDATA[Duplicate Imports]]></name>
<configKey><![CDATA[rulesets/imports.xml/DuplicateImports]]></configKey>
<description><![CDATA[Avoid duplicate import statements.]]></description>
</rule>
- <rule key="DontImportJavaLang" priority="MINOR">
+ <rule key="DontImportJavaLang" >
+<priority>MINOR</priority>
<name><![CDATA[Dont Import Java Lang]]></name>
<configKey><![CDATA[rulesets/imports.xml/DontImportJavaLang]]></configKey>
<description><![CDATA[Avoid importing anything from the package 'java.lang'. These classes are automatically imported (JLS 7.5.3).]]></description>
</rule>
- <rule key="ImportFromSamePackage" priority="MINOR">
+ <rule key="ImportFromSamePackage" >
+<priority>MINOR</priority>
<name><![CDATA[Import From Same Package]]></name>
<configKey><![CDATA[rulesets/imports.xml/ImportFromSamePackage]]></configKey>
<description><![CDATA[No need to import a type that lives in the same package.]]></description>
</rule>
- <rule key="CloneThrowsCloneNotSupportedException" priority="MAJOR">
+ <rule key="CloneThrowsCloneNotSupportedException" >
+<priority>MAJOR</priority>
<name><![CDATA[Clone Throws Clone Not Supported Exception]]></name>
<configKey><![CDATA[rulesets/clone.xml/CloneThrowsCloneNotSupportedException]]></configKey>
<description><![CDATA[The method clone() should throw a CloneNotSupportedException.]]></description>
</rule>
- <rule key="UseCorrectExceptionLogging" priority="MAJOR">
+ <rule key="UseCorrectExceptionLogging" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Correct Exception Logging]]></name>
<configKey><![CDATA[rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging]]></configKey>
<description><![CDATA[To make sure the full stacktrace is printed out, use the logging statement with 2 arguments: a String and a Throwable.]]></description>
</rule>
- <rule key="ProperLogger" priority="MAJOR">
+ <rule key="ProperLogger" >
+<priority>MAJOR</priority>
<name><![CDATA[Proper Logger]]></name>
<configKey><![CDATA[rulesets/logging-jakarta-commons.xml/ProperLogger]]></configKey>
</param>
</rule>
- <rule key="ShortVariable" priority="MAJOR">
+ <rule key="ShortVariable" >
+<priority>MAJOR</priority>
<name><![CDATA[Short Variable]]></name>
<configKey><![CDATA[rulesets/naming.xml/ShortVariable]]></configKey>
<description><![CDATA[Detects when a field, local, or parameter has a very short name.]]></description>
</rule>
- <rule key="LongVariable" priority="MAJOR">
+ <rule key="LongVariable" >
+<priority>MAJOR</priority>
<name><![CDATA[Long Variable]]></name>
<configKey><![CDATA[rulesets/naming.xml/LongVariable]]></configKey>
</param>
</rule>
- <rule key="ShortMethodName" priority="MAJOR">
+ <rule key="ShortMethodName" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Short method name]]></name>
<configKey><![CDATA[rulesets/naming.xml/ShortMethodName]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="VariableNamingConventions" priority="MAJOR">
+ <rule key="VariableNamingConventions" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Variable naming conventions]]></name>
<configKey><![CDATA[rulesets/naming.xml/VariableNamingConventions]]></configKey>
</param>
</rule>
- <rule key="MethodNamingConventions" priority="MAJOR">
+ <rule key="MethodNamingConventions" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Method naming conventions]]></name>
<configKey>rulesets/naming.xml/MethodNamingConventions</configKey>
}
}]]></description>
</rule>
- <rule key="ClassNamingConventions" priority="MAJOR">
+ <rule key="ClassNamingConventions" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Class naming conventions]]></name>
<configKey><![CDATA[rulesets/naming.xml/ClassNamingConventions]]></configKey>
<description><![CDATA[Class names should always begin with an upper case character.]]></description>
</rule>
- <rule key="AvoidDollarSigns" priority="MINOR">
+ <rule key="AvoidDollarSigns" >
+<priority>MINOR</priority>
<name><![CDATA[Naming - Avoid dollar signs]]></name>
<configKey><![CDATA[rulesets/naming.xml/AvoidDollarSigns]]></configKey>
<description><![CDATA[Avoid using dollar signs in variable/method/class/interface names.]]></description>
</rule>
- <rule key="MethodWithSameNameAsEnclosingClass" priority="MAJOR">
+ <rule key="MethodWithSameNameAsEnclosingClass" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Method with same name as enclosing class]]></name>
<configKey><![CDATA[rulesets/naming.xml/MethodWithSameNameAsEnclosingClass]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="SuspiciousHashcodeMethodName" priority="MAJOR">
+ <rule key="SuspiciousHashcodeMethodName" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Suspicious Hashcode method name]]></name>
<configKey><![CDATA[rulesets/naming.xml/SuspiciousHashcodeMethodName]]></configKey>
}
}</pre>]]></description>
</rule>
- <rule key="SuspiciousConstantFieldName" priority="MAJOR">
+ <rule key="SuspiciousConstantFieldName" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Suspicious constant field name]]></name>
<configKey><![CDATA[rulesets/naming.xml/SuspiciousConstantFieldName]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="SuspiciousEqualsMethodName" priority="CRITICAL">
+ <rule key="SuspiciousEqualsMethodName" >
+<priority>CRITICAL</priority>
<name><![CDATA[Naming - Suspicious equals method name]]></name>
<configKey><![CDATA[rulesets/naming.xml/SuspiciousEqualsMethodName]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="AvoidFieldNameMatchingTypeName" priority="MAJOR">
+ <rule key="AvoidFieldNameMatchingTypeName" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Avoid field name matching type name]]></name>
<configKey><![CDATA[rulesets/naming.xml/AvoidFieldNameMatchingTypeName]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="AvoidFieldNameMatchingMethodName" priority="MAJOR">
+ <rule key="AvoidFieldNameMatchingMethodName" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Avoid field name matching method name]]></name>
<configKey><![CDATA[rulesets/naming.xml/AvoidFieldNameMatchingMethodName]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="MisleadingVariableName" priority="MAJOR">
+ <rule key="MisleadingVariableName" >
+<priority>MAJOR</priority>
<name><![CDATA[Naming - Misleading variable name]]></name>
<configKey><![CDATA[rulesets/naming.xml/MisleadingVariableName]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="ReplaceVectorWithList" priority="MAJOR">
+ <rule key="ReplaceVectorWithList" >
+<priority>MAJOR</priority>
<name><![CDATA[Replace Vector With List]]></name>
<configKey><![CDATA[rulesets/migrating.xml/ReplaceVectorWithList]]></configKey>
<description><![CDATA[Consider replacing Vector usages with the newer java.util.ArrayList if expensive threadsafe operation is not required.]]></description>
</rule>
- <rule key="ReplaceHashtableWithMap" priority="MAJOR">
+ <rule key="ReplaceHashtableWithMap" >
+<priority>MAJOR</priority>
<name><![CDATA[Replace Hashtable With Map]]></name>
<configKey><![CDATA[rulesets/migrating.xml/ReplaceHashtableWithMap]]></configKey>
<description><![CDATA[Consider replacing this Hashtable with the newer java.util.Map]]></description>
</rule>
- <rule key="ReplaceEnumerationWithIterator" priority="MAJOR">
+ <rule key="ReplaceEnumerationWithIterator" >
+<priority>MAJOR</priority>
<name><![CDATA[Replace Enumeration With Iterator]]></name>
<configKey><![CDATA[rulesets/migrating.xml/ReplaceEnumerationWithIterator]]></configKey>
<description><![CDATA[Consider replacing this Enumeration with the newer java.util.Iterator]]></description>
</rule>
- <rule key="AvoidEnumAsIdentifier" priority="MAJOR">
+ <rule key="AvoidEnumAsIdentifier" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Enum As Identifier]]></name>
<configKey><![CDATA[rulesets/migrating.xml/AvoidEnumAsIdentifier]]></configKey>
<description><![CDATA[Finds all places 'enum' is used as an identifier is used.]]></description>
</rule>
- <rule key="AvoidAssertAsIdentifier" priority="MAJOR">
+ <rule key="AvoidAssertAsIdentifier" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Assert As Identifier]]></name>
<configKey><![CDATA[rulesets/migrating.xml/AvoidAssertAsIdentifier]]></configKey>
<description><![CDATA[Finds all places 'assert' is used as an identifier is used.]]></description>
</rule>
- <rule key="IntegerInstantiation" priority="MAJOR">
+ <rule key="IntegerInstantiation" >
+<priority>MAJOR</priority>
<name><![CDATA[Integer Instantiation]]></name>
<configKey><![CDATA[rulesets/migrating.xml/IntegerInstantiation]]></configKey>
<description><![CDATA[In JDK 1.5, calling new Integer() causes memory allocation. Integer.valueOf() is more memory friendly.]]></description>
</rule>
- <rule key="MoreThanOneLogger" priority="MAJOR">
+ <rule key="MoreThanOneLogger" >
+<priority>MAJOR</priority>
<name><![CDATA[More Than One Logger]]></name>
<configKey><![CDATA[rulesets/logging-java.xml/MoreThanOneLogger]]></configKey>
<description><![CDATA[Normally only one logger is used in each class.]]></description>
</rule>
- <rule key="LoggerIsNotStaticFinal" priority="MAJOR">
+ <rule key="LoggerIsNotStaticFinal" >
+<priority>MAJOR</priority>
<name><![CDATA[Logger Is Not Static Final]]></name>
<configKey><![CDATA[rulesets/logging-java.xml/LoggerIsNotStaticFinal]]></configKey>
<description><![CDATA[In most cases, the Logger can be declared static and final.]]></description>
</rule>
- <rule key="SystemPrintln" priority="MAJOR">
+ <rule key="SystemPrintln" >
+<priority>MAJOR</priority>
<name><![CDATA[System Println]]></name>
<configKey><![CDATA[rulesets/logging-java.xml/SystemPrintln]]></configKey>
<description><![CDATA[System.(out|err).print is used, consider using a logger.]]></description>
</rule>
- <rule key="AvoidPrintStackTrace" priority="MAJOR">
+ <rule key="AvoidPrintStackTrace" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Print Stack Trace]]></name>
<configKey><![CDATA[rulesets/logging-java.xml/AvoidPrintStackTrace]]></configKey>
<description><![CDATA[Avoid printStackTrace(); use a logger call instead.]]></description>
</rule>
- <rule key="IfStmtsMustUseBraces" priority="MAJOR">
+ <rule key="IfStmtsMustUseBraces" >
+<priority>MAJOR</priority>
<name><![CDATA[If Stmts Must Use Braces]]></name>
<configKey><![CDATA[rulesets/braces.xml/IfStmtsMustUseBraces]]></configKey>
<description><![CDATA[Avoid using if statements without using curly braces.]]></description>
</rule>
- <rule key="WhileLoopsMustUseBraces" priority="MAJOR">
+ <rule key="WhileLoopsMustUseBraces" >
+<priority>MAJOR</priority>
<name><![CDATA[While Loops Must Use Braces]]></name>
<configKey><![CDATA[rulesets/braces.xml/WhileLoopsMustUseBraces]]></configKey>
<description><![CDATA[Avoid using 'while' statements without using curly braces.]]></description>
</rule>
- <rule key="IfElseStmtsMustUseBraces" priority="MAJOR">
+ <rule key="IfElseStmtsMustUseBraces" >
+<priority>MAJOR</priority>
<name><![CDATA[If Else Stmts Must Use Braces]]></name>
<configKey><![CDATA[rulesets/braces.xml/IfElseStmtsMustUseBraces]]></configKey>
<description><![CDATA[Avoid using if..else statements without using curly braces.]]></description>
</rule>
- <rule key="ForLoopsMustUseBraces" priority="MAJOR">
+ <rule key="ForLoopsMustUseBraces" >
+<priority>MAJOR</priority>
<name><![CDATA[For Loops Must Use Braces]]></name>
<configKey><![CDATA[rulesets/braces.xml/ForLoopsMustUseBraces]]></configKey>
<description><![CDATA[Avoid using 'for' statements without using curly braces, like <code>for (int i=0; i<42;i++) foo();</code>]]></description>
</rule>
- <rule key="AvoidUsingHardCodedIP" priority="MAJOR">
+ <rule key="AvoidUsingHardCodedIP" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Using Hard Coded IP]]></name>
<configKey><![CDATA[rulesets/basic.xml/AvoidUsingHardCodedIP]]></configKey>
</param>
</rule>
- <rule key="CheckResultSet" priority="MAJOR">
+ <rule key="CheckResultSet" >
+<priority>MAJOR</priority>
<name><![CDATA[Check ResultSet]]></name>
<configKey><![CDATA[rulesets/basic.xml/CheckResultSet]]></configKey>
<description>
<![CDATA[Always check the return of one of the navigation method (next,previous,first,last) of a ResultSet. Indeed, if the value return is "false", the developer should deal with it !]]></description>
</rule>
- <rule key="AvoidUsingShortType" priority="MAJOR">
+ <rule key="AvoidUsingShortType" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Using Short Type]]></name>
<configKey><![CDATA[rulesets/controversial.xml/AvoidUsingShortType]]></configKey>
<description>
<![CDATA[Java uses the short type to reduce memory usage, not to optimize calculation. On the contrary, the jvm does not has an arithmetic capabilities with the type short. So, the P-code must convert the short into int, then do the proper caculation and then again, convert int to short. So, use of the "short" type may have a great effect on memory usage.]]></description>
</rule>
- <rule key="AvoidUsingVolatile" priority="MAJOR">
+ <rule key="AvoidUsingVolatile" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Using Volatile]]></name>
<configKey><![CDATA[rulesets/controversial.xml/AvoidUsingVolatile]]></configKey>
<description>
<![CDATA[Use of the keyword "volatile" is general used to fine tune a Java application, and therefore, requires a good expertise of the Java Memory Model. Morover, its range of action is somewhat misknown. Therefore, the volatile keyword should not be used for maintenance purpose and portability.]]></description>
</rule>
- <rule key="AvoidUsingNativeCode" priority="MAJOR">
+ <rule key="AvoidUsingNativeCode" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Using Native Code]]></name>
<configKey><![CDATA[rulesets/controversial.xml/AvoidUsingNativeCode]]></configKey>
<description>
<![CDATA[As JVM and Java language offer already many help in creating application, it should be very rare to have to rely on non-java code. Even though, it is rare to actually have to use Java Native Interface (JNI). As the use of JNI make application less portable, and harder to maintain, it is not recommended.]]></description>
</rule>
- <rule key="AvoidAccessibilityAlteration" priority="MAJOR">
+ <rule key="AvoidAccessibilityAlteration" >
+<priority>MAJOR</priority>
<name><![CDATA[Avoid Accessibility Alteration]]></name>
<configKey><![CDATA[rulesets/controversial.xml/AvoidAccessibilityAlteration]]></configKey>
<description>
<![CDATA[Methods such as getDeclaredConstructors(), getDeclaredConstructor(Class[]) and setAccessible(), as the interface PrivilegedAction, allow to alter, at runtime, the visilibilty of variable, classes, or methods, even if they are private. Obviously, no one should do so, as such behavior is against everything encapsulation principal stands for.]]></description>
</rule>
- <rule key="EmptyMethodInAbstractClassShouldBeAbstract" priority="MAJOR">
+ <rule key="EmptyMethodInAbstractClassShouldBeAbstract" >
+<priority>MAJOR</priority>
<name><![CDATA[Empty Method In Abstract Class Should Be Abstract]]></name>
<configKey><![CDATA[rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract]]></configKey>
}
</pre>]]></description>
</rule>
- <rule key="TooManyStaticImports" priority="MAJOR">
+ <rule key="TooManyStaticImports" >
+<priority>MAJOR</priority>
<name><![CDATA[Too Many Static Imports]]></name>
<configKey><![CDATA[rulesets/imports.xml/TooManyStaticImports]]></configKey>
</param>
</rule>
- <rule key="DoNotCallSystemExit" priority="MAJOR">
+ <rule key="DoNotCallSystemExit" >
+<priority>MAJOR</priority>
<name><![CDATA[Do Not Call System Exit]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/DoNotCallSystemExit]]></configKey>
<description><![CDATA[Web applications should not call System.exit(), since only the web container or the application server should stop the JVM.]]></description>
</rule>
- <rule key="StaticEJBFieldShouldBeFinal" priority="MAJOR">
+ <rule key="StaticEJBFieldShouldBeFinal" >
+<priority>MAJOR</priority>
<name><![CDATA[Static EJB Field Should Be Final]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal]]></configKey>
<description>
<![CDATA[According to the J2EE specification (p.494), an EJB should not have any static fields with write access. However, static read only fields are allowed. This ensures proper behavior especially when instances are distributed by the container on several JREs.]]></description>
</rule>
- <rule key="DoNotUseThreads" priority="MAJOR">
+ <rule key="DoNotUseThreads" >
+<priority>MAJOR</priority>
<name><![CDATA[Do Not Use Threads]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/DoNotUseThreads]]></configKey>
<description><![CDATA[The J2EE specification explicitly forbid use of threads.]]></description>
</rule>
- <rule key="MDBAndSessionBeanNamingConvention" priority="MAJOR">
+ <rule key="MDBAndSessionBeanNamingConvention" >
+<priority>MAJOR</priority>
<name><![CDATA[Message Driven Bean And Session Bean Naming Convention]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention]]></configKey>
<description><![CDATA[The EJB Specification state that any MessageDrivenBean or SessionBean should be suffixed by Bean.]]></description>
</rule>
- <rule key="RemoteSessionInterfaceNamingConvention" priority="MAJOR">
+ <rule key="RemoteSessionInterfaceNamingConvention" >
+<priority>MAJOR</priority>
<name><![CDATA[Remote Session Interface Naming Convention]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention]]></configKey>
<description><![CDATA[Remote Home interface of a Session EJB should be suffixed by "Home".]]></description>
</rule>
- <rule key="LocalInterfaceSessionNamingConvention" priority="MAJOR">
+ <rule key="LocalInterfaceSessionNamingConvention" >
+<priority>MAJOR</priority>
<name><![CDATA[Local Interface Session Naming Convention]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention]]></configKey>
<description><![CDATA[The Local Interface of a Session EJB should be suffixed by "Local".]]></description>
</rule>
- <rule key="LocalHomeNamingConvention" priority="MAJOR">
+ <rule key="LocalHomeNamingConvention" >
+<priority>MAJOR</priority>
<name><![CDATA[Local Home Naming Convention]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/LocalHomeNamingConvention]]></configKey>
<description><![CDATA[The Local Home interface of a Session EJB should be suffixed by "LocalHome".]]></description>
</rule>
- <rule key="RemoteInterfaceNamingConvention" priority="MAJOR">
+ <rule key="RemoteInterfaceNamingConvention" >
+<priority>MAJOR</priority>
<name><![CDATA[Remote Interface Naming Convention]]></name>
<configKey><![CDATA[rulesets/j2ee.xml/RemoteInterfaceNamingConvention]]></configKey>
<description><![CDATA[Remote Interface of a Session EJB should NOT be suffixed.]]></description>
</rule>
- <rule key="UseEqualsToCompareStrings" priority="MAJOR">
+ <rule key="UseEqualsToCompareStrings" >
+<priority>MAJOR</priority>
<name><![CDATA[Use Equals To Compare Strings]]></name>
<configKey><![CDATA[rulesets/strings.xml/UseEqualsToCompareStrings]]></configKey>
<description><![CDATA[Using "==" or "!=" to compare strings only works if intern version is used on both sides.]]></description>
</rule>
- <rule key="DoNotExtendJavaLangError" priority="MAJOR">
+ <rule key="DoNotExtendJavaLangError" >
+<priority>MAJOR</priority>
<name><![CDATA[Do Not Extend Java Lang Error]]></name>
<configKey><![CDATA[rulesets/strictexception.xml/DoNotExtendJavaLangError]]></configKey>
<description><![CDATA[Errors are system exceptions. Do not extend them.]]></description>
</rule>
- <rule key="AddEmptyString" priority="MAJOR">
+ <rule key="AddEmptyString" >
+<priority>MAJOR</priority>
<name><![CDATA[Add Empty String]]></name>
<configKey><![CDATA[rulesets/optimizations.xml/AddEmptyString]]></configKey>
<description><![CDATA[Finds empty string literals which are being added. This is an inefficient way to convert any type to a String.]]></description>
</rule>
- <rule key="BooleanGetMethodName" priority="MAJOR">
+ <rule key="BooleanGetMethodName" >
+<priority>MAJOR</priority>
<name><![CDATA[Boolean Get Method Name]]></name>
<configKey><![CDATA[rulesets/naming.xml/BooleanGetMethodName]]></configKey>
</param>
</rule>
- <rule key="XPathRule" priority="MAJOR">
+ <rule key="XPathRule" >
+<priority>MAJOR</priority>
<name><![CDATA[XPath rule template]]></name>
<configKey><![CDATA[net.sourceforge.pmd.rules.XPathRule]]></configKey>