aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/sonar-findbugs-plugin/src
diff options
context:
space:
mode:
authorsimonbrandhof <simon.brandhof@gmail.com>2011-02-03 17:54:47 +0100
committersimonbrandhof <simon.brandhof@gmail.com>2011-02-03 17:54:47 +0100
commite46c3b1ca566b15d4df793026e55893a73c417d2 (patch)
treedea5628889524c01d63d9c7e861972b66c6099c9 /plugins/sonar-findbugs-plugin/src
parent31af09b42f8aafb2a56522e8670b574603cd9eee (diff)
downloadsonarqube-e46c3b1ca566b15d4df793026e55893a73c417d2.tar.gz
sonarqube-e46c3b1ca566b15d4df793026e55893a73c417d2.zip
SONAR-2166 Cardinality of checkstyle rule Member Name should be updated to multiple + replace the deprecated attribute 'priority' by a node
Diffstat (limited to 'plugins/sonar-findbugs-plugin/src')
-rw-r--r--plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/rules.xml1158
1 files changed, 772 insertions, 386 deletions
diff --git a/plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/rules.xml b/plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/rules.xml
index cb1c9949065..bcd34822b75 100644
--- a/plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/rules.xml
+++ b/plugins/sonar-findbugs-plugin/src/main/resources/org/sonar/plugins/findbugs/rules.xml
@@ -1,13 +1,15 @@
<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>
@@ -21,21 +23,24 @@
<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>
@@ -58,7 +63,8 @@
]]></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>
@@ -66,7 +72,8 @@
<![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>
@@ -74,7 +81,8 @@
<![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>
@@ -82,7 +90,8 @@
<![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>
@@ -90,7 +99,8 @@
<![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>
@@ -98,7 +108,8 @@
<![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>
@@ -124,7 +135,8 @@
<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>
@@ -134,32 +146,37 @@
<!-- 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>
@@ -167,7 +184,8 @@
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>
@@ -175,21 +193,24 @@ A ScheduledThreadPoolExecutor with zero core threads will never execute anything
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>
@@ -197,7 +218,8 @@ While ScheduledThreadPoolExecutor inherits from ThreadPoolExecutor, a few of the
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>
@@ -210,7 +232,8 @@ vulnerabilities that FindBugs doesn't report. If you are concerned about HTTP re
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>
@@ -223,7 +246,8 @@ vulnerabilities that FindBugs doesn't report. If you are concerned about HTTP re
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>
@@ -236,7 +260,8 @@ vulnerabilities that FindBugs doesn't report. If you are concerned about cross s
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>
@@ -250,7 +275,8 @@ vulnerabilities that FindBugs doesn't report. If you are concerned about cross s
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>
@@ -263,7 +289,8 @@ vulnerabilities that FindBugs doesn't report. If you are concerned about cross s
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>
@@ -277,21 +304,24 @@ could result in deadlocks or other related threading issues. A pack call causes
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>
@@ -299,7 +329,8 @@ an infinite recursive loop that will result in a stack overflow.</p>]]></descrip
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>
@@ -311,7 +342,8 @@ are non-volatile. To get volatile array elements, you will need to use
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>
@@ -319,7 +351,8 @@ in Java 5.0).</p>]]></description>
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>
@@ -330,7 +363,8 @@ another package.</p>]]></description>
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>
@@ -339,7 +373,8 @@ If it is null and then synchronized on a NullPointerException will be
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>
@@ -348,7 +383,8 @@ another field.</p>]]></description>
(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>
@@ -359,7 +395,8 @@ should be written to the ZipFile between the calls to
<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>
@@ -370,7 +407,8 @@ should be written to the JarFile between the calls to
<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>
@@ -378,7 +416,8 @@ should be written to the JarFile between the calls to
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>
@@ -387,7 +426,8 @@ should be written to the JarFile between the calls to
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>
@@ -395,7 +435,8 @@ should be written to the JarFile between the calls to
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>
@@ -404,7 +445,8 @@ There are some situations in which this is OK (e.g., you want to control how sub
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>
@@ -417,14 +459,16 @@ which violates the standard contract for clone().</p>
<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>
@@ -432,7 +476,8 @@ in order to compile it in later versions of Java.</p>]]></description>
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>
@@ -440,7 +485,8 @@ will need to be changed in order to compile it in later versions of Java.</p>]]>
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>
@@ -448,7 +494,8 @@ will need to be changed in order to compile it in later versions of Java.</p>]]>
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>
@@ -456,7 +503,8 @@ will need to be changed in order to compile it in later versions of Java.</p>]]>
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>
@@ -464,7 +512,8 @@ will need to be changed in order to compile it in later versions of Java.</p>]]>
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>
@@ -472,7 +521,8 @@ will need to be changed in order to compile it in later versions of Java.</p>]]>
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>
@@ -481,7 +531,8 @@ a Runnable is expected. This is rather unusual, and may indicate a logic error
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>
@@ -491,7 +542,8 @@ See <a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hash
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>
@@ -501,7 +553,8 @@ See <a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hash
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>
@@ -510,7 +563,8 @@ Consider using <code>java.net.URI</code> instead.
(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>
@@ -519,7 +573,8 @@ Consider using <code>java.net.URI</code> instead.
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>
@@ -527,7 +582,8 @@ Consider using <code>java.net.URI</code> instead.
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>
@@ -536,7 +592,8 @@ dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></descriptio
from the <code>String</code> passed as a parameter.&nbsp; 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>
@@ -547,14 +604,16 @@ dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></descriptio
will be represented by the same <code>String</code> object.&nbsp; 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>
@@ -566,7 +625,8 @@ dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></descriptio
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>
@@ -576,7 +636,8 @@ dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></descriptio
only two useful values of this type.&nbsp; 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>
@@ -596,7 +657,8 @@ dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></descriptio
<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>
@@ -611,7 +673,8 @@ dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></descriptio
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>
@@ -620,7 +683,8 @@ dangerous methods in the Java libraries.</em> -- Joshua Bloch</p>]]></descriptio
<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>
@@ -633,7 +697,8 @@ and <code>e2</code> is of type <code>Float</code>, then <code>e1</code> is unbox
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>
@@ -642,14 +707,16 @@ converted to a floating point value, and boxed. See JLS Section 15.25.
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>
@@ -666,14 +733,16 @@ to immediately undo the work of the boxing.
<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>
@@ -684,7 +753,8 @@ to immediately undo the work of the boxing.
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>
@@ -692,7 +762,8 @@ to immediately undo the work of the boxing.
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>
@@ -701,7 +772,8 @@ want to multiple the random value by something else before coercing it to an int
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>
@@ -711,7 +783,8 @@ a prepared statement instead. It is more efficient and less vulnerable to
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>
@@ -720,7 +793,8 @@ If unchecked, tainted data from a user is used in building this String, SQL inje
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>
@@ -728,7 +802,8 @@ be used to make the prepared statement do something unexpected and undesirable.
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>
@@ -738,14 +813,16 @@ be used to make the prepared statement do something unexpected and undesirable.
<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>
@@ -753,21 +830,24 @@ be used to make the prepared statement do something unexpected and undesirable.
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>
@@ -776,7 +856,8 @@ method.]]></description>
actions defined for the superclass will not be performed.&nbsp;
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>
@@ -784,7 +865,8 @@ method.]]></description>
the superclass's <code>finalize()</code> method, making it
redundant.&nbsp; 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>
@@ -793,7 +875,8 @@ method.]]></description>
actions defined for the superclass will not be performed.&nbsp;
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>
@@ -805,7 +888,8 @@ finalize method on all the finalizable object, possibly at the same time in diff
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>
@@ -827,7 +911,8 @@ public boolean equals(Object o) {
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>
@@ -839,7 +924,8 @@ the covariant enum method, and as not equal when compared normally.
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>
@@ -849,7 +935,8 @@ Don't do it.
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>
@@ -859,7 +946,8 @@ Don't do it.
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>
@@ -885,7 +973,8 @@ that the equals method for the subclass just return the result of
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>
@@ -894,7 +983,8 @@ invoking super.equals(o).
<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>
@@ -906,7 +996,8 @@ checks that the argument is an instanceof B, it is quite likely that the equival
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>
@@ -916,7 +1007,8 @@ it might check if <code>Foo.class == o.getClass()</code>).
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>
@@ -925,7 +1017,8 @@ is compatible with the type of the <code>this</code> object. There might not be
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>
@@ -934,7 +1027,8 @@ of their classes are equal. You can have different classes with the same name if
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>
@@ -942,7 +1036,8 @@ different class loaders. Just check to see if the class objects are the same.
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>
@@ -955,7 +1050,8 @@ public boolean equals(Object o) { return this == o; }
</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>
@@ -968,7 +1064,8 @@ that classfile. See <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=
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>
@@ -978,7 +1075,8 @@ that classfile. See <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=
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>
@@ -989,7 +1087,8 @@ that classfile. See <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=
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>
@@ -998,7 +1097,8 @@ that classfile. See <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=
<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>
@@ -1009,7 +1109,8 @@ from Object is unhashable, since it doesn't fulfill the requirement that
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>
@@ -1018,7 +1119,8 @@ and thus doesn't fulfill the requirement that equal objects have equal hashCodes
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>
@@ -1037,7 +1139,8 @@ the recommended <code>hashCode</code> implementation to use is:</p>
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>
@@ -1057,7 +1160,8 @@ should clearly indicate this fact. The recommended language
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>
@@ -1065,7 +1169,8 @@ is "Note: this class has a natural ordering that is inconsistent with equals."
<code>equals()</code> method.&nbsp; 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>
@@ -1083,7 +1188,8 @@ the recommended <code>hashCode</code> implementation to use is:</p>
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>
@@ -1099,7 +1205,8 @@ the recommended <code>hashCode</code> implementation to use is:</p>
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>
@@ -1107,7 +1214,8 @@ the recommended <code>hashCode</code> implementation to use is:</p>
override <code>hashCode()</code>.&nbsp; 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>
@@ -1116,7 +1224,8 @@ the recommended <code>hashCode</code> implementation to use is:</p>
<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>
@@ -1127,7 +1236,8 @@ interned using the <code>String.intern()</code> method, the same string
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>
@@ -1137,7 +1247,8 @@ pass only String constants or interned strings to a method is unnecessarily
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>
@@ -1146,14 +1257,16 @@ using the <code>equals(Object)</code> method instead.</p>]]></description>
<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>
@@ -1164,7 +1277,8 @@ have multiple threads invoke methods on that instance to service multiple
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>
@@ -1192,7 +1306,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
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>
@@ -1207,7 +1322,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
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>
@@ -1218,7 +1334,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
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>
@@ -1231,7 +1348,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
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>
@@ -1244,7 +1362,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
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>
@@ -1256,7 +1375,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
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>
@@ -1265,7 +1385,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
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>
@@ -1274,7 +1395,8 @@ Thus, having a mutable instance field generally creates race conditions.]]></des
infinite loop.&nbsp; 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>
@@ -1297,7 +1419,8 @@ Language Specification</a> for details
</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>
@@ -1315,7 +1438,8 @@ Language Specification</a> for details
</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>
@@ -1328,7 +1452,8 @@ Language Specification</a> for details
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>
@@ -1338,7 +1463,8 @@ This not necessarily a bug, but is worth examining
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>
@@ -1346,7 +1472,8 @@ This not necessarily a bug, but is worth examining
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>
@@ -1356,7 +1483,8 @@ This not necessarily a bug, but is worth examining
method will not necessarily see a consistent state for the object.&nbsp;
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>
@@ -1364,7 +1492,8 @@ This not necessarily a bug, but is worth examining
classes referenced by the bug instance.&nbsp; 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>
@@ -1382,7 +1511,8 @@ public class CircularClassInitialization {
}
</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>
@@ -1392,7 +1522,8 @@ public class CircularClassInitialization {
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>
@@ -1409,7 +1540,8 @@ is locking on something that other code might also be locking. This could result
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>
@@ -1429,7 +1561,8 @@ private static Boolean inited = Boolean.FALSE;
<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>
@@ -1454,7 +1587,8 @@ might replace this with the use of an interned Integer object shared
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>
@@ -1472,7 +1606,8 @@ private static Integer count = 0;
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>
@@ -1486,7 +1621,8 @@ are almost never a better solution
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>
@@ -1510,7 +1646,8 @@ than less contrived solutions.
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>
@@ -1536,7 +1673,8 @@ private Long getNotificationSequenceNumber() {
</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>
@@ -1545,7 +1683,8 @@ private Long getNotificationSequenceNumber() {
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>
@@ -1562,7 +1701,8 @@ defined in an interface references a mutable
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>
@@ -1573,7 +1713,8 @@ defined in an interface references a mutable
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>
@@ -1583,7 +1724,8 @@ defined in an interface references a mutable
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>
@@ -1592,7 +1734,8 @@ defined in an interface references a mutable
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>
@@ -1601,7 +1744,8 @@ defined in an interface references a mutable
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>
@@ -1610,7 +1754,8 @@ defined in an interface references a mutable
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>
@@ -1620,7 +1765,8 @@ defined in an interface references a mutable
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>
@@ -1632,7 +1778,8 @@ thus it will be clear to other readers of your code and to FindBugs
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>
@@ -1643,7 +1790,8 @@ to resolve references and creates many
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>
@@ -1654,7 +1802,8 @@ to resolve references and creates many
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>
@@ -1663,7 +1812,8 @@ This is very confusing because if the capitalization were
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>
@@ -1674,7 +1824,8 @@ seems that the existence of both of these methods is intentional, but is sure is
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>
@@ -1702,7 +1853,8 @@ override the
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>
@@ -1736,13 +1888,15 @@ so this is presumably understood. However, such methods are exceptionally confus
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>
@@ -1752,14 +1906,16 @@ removing or deprecating the method with the similar but not identical signature.
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>
@@ -1771,7 +1927,8 @@ be confusing to users of this class.</p>]]></description>
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>
@@ -1785,7 +1942,8 @@ be confusing to users of this class.</p>]]></description>
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>
@@ -1793,7 +1951,8 @@ be confusing to users of this class.</p>]]></description>
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>
@@ -1801,7 +1960,8 @@ mechanism, it must not be declared as a static method.
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>
@@ -1809,7 +1969,8 @@ This might be intentional and OK, but should be reviewed to ensure it is what is
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>
@@ -1819,7 +1980,8 @@ This may be leftover marking from a previous version of the code in which the cl
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>
@@ -1827,7 +1989,8 @@ it may indicate a misunderstanding of how serialization works.
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>
@@ -1835,7 +1998,8 @@ deserialized instance of the class.
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>
@@ -1845,7 +2009,8 @@ deserialized instance of the class.
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>
@@ -1856,7 +2021,8 @@ deserialized instance of the class.
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>
@@ -1873,7 +2039,8 @@ deserialized instance of the class.
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>
@@ -1886,7 +2053,8 @@ As most comparators have little or no state, making them serializable
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>
@@ -1894,7 +2062,8 @@ is generally easy and good defensive programming.
<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>
@@ -1905,7 +2074,8 @@ is generally easy and good defensive programming.
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>
@@ -1914,7 +2084,8 @@ is generally easy and good defensive programming.
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>
@@ -1923,7 +2094,8 @@ is generally easy and good defensive programming.
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>
@@ -1932,7 +2104,8 @@ is generally easy and good defensive programming.
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>
@@ -1945,7 +2118,8 @@ problem. Making the outer class serializable might also work, but that would
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>
@@ -1955,14 +2129,16 @@ so this won't fail, but it might serialize a lot more data than intended.
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>
@@ -1970,7 +2146,8 @@ of a serializable class.</p>]]></description>
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>
@@ -1978,19 +2155,22 @@ of a serializable class.</p>]]></description>
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.&nbsp; 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.&nbsp; 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>
@@ -1999,7 +2179,8 @@ of a serializable class.</p>]]></description>
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>
@@ -2007,7 +2188,8 @@ of a serializable class.</p>]]></description>
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>
@@ -2016,7 +2198,8 @@ correct if multiple instances are being manipulated,
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>
@@ -2026,7 +2209,8 @@ intended to refer to a different variable, or perhaps the earlier check to see i
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>
@@ -2034,7 +2218,8 @@ variable is null should have been a check to see if it was nonnull).
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>
@@ -2042,7 +2227,8 @@ to read, readLine() will return null and dereferencing that will generate a null
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>
@@ -2053,7 +2239,8 @@ to read, readLine() will return null and dereferencing that will generate a null
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>
@@ -2065,7 +2252,8 @@ to read, readLine() will return null and dereferencing that will generate a null
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>
@@ -2080,7 +2268,8 @@ inner object.&nbsp; This reference makes the instances
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>
@@ -2089,7 +2278,8 @@ inner object.&nbsp; This reference makes the instances
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>
@@ -2099,7 +2289,8 @@ inner object.&nbsp; This reference makes the instances
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>
@@ -2108,7 +2299,8 @@ inner object.&nbsp; This reference makes the instances
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>
@@ -2117,7 +2309,8 @@ inner object.&nbsp; This reference makes the instances
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>
@@ -2125,7 +2318,8 @@ inner object.&nbsp; This reference makes the instances
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>
@@ -2150,7 +2344,8 @@ dateString = dateString.trim();
</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>
@@ -2163,7 +2358,8 @@ If you don't check the result, you won't notice if the method invocation
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>
@@ -2183,7 +2379,8 @@ if (x &lt; 0)
</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>
@@ -2208,21 +2405,24 @@ dateString = dateString.trim();
</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.&nbsp; 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>
@@ -2234,7 +2434,8 @@ this may be a false warning.</p>
<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>
@@ -2243,7 +2444,8 @@ but the parameter is explicitly annotated as being Nullable. Either the use
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>
@@ -2254,7 +2456,8 @@ Of course, the problem might be that the branch or statement is infeasible and t
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>
@@ -2266,7 +2469,8 @@ the null pointer exception can't ever be executed; deciding that is beyond the a
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>
@@ -2279,7 +2483,8 @@ this may be a false warning.</p>
<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>
@@ -2288,7 +2493,8 @@ and the return value of that method is one that should generally be checked
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>
@@ -2299,7 +2505,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
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>
@@ -2311,7 +2518,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
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>
@@ -2322,7 +2530,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
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>
@@ -2333,7 +2542,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
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>
@@ -2342,7 +2552,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
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>
@@ -2352,7 +2563,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
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>
@@ -2362,7 +2574,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
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>
@@ -2373,7 +2586,8 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
(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>
@@ -2385,14 +2599,16 @@ for null. This may lead to a <code>NullPointerException</code> when the code is
(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>
@@ -2404,7 +2620,8 @@ a file descriptor leak.&nbsp; It is generally a good
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>
@@ -2415,7 +2632,8 @@ This may result in a file descriptor leak.&nbsp; It is generally a good
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>
@@ -2430,7 +2648,8 @@ For example, <code>File.listFiles()</code> returns an empty list
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>
@@ -2445,7 +2664,8 @@ block for an <code>if</code> statement:</p>
}
</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>
@@ -2459,7 +2679,8 @@ body of an <code>if</code> statement, e.g.:</p>
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>
@@ -2470,35 +2691,40 @@ Essentially, this code and the previous dereference
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>
@@ -2516,7 +2742,8 @@ for using a JSR-166 lock is:
}
</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>
@@ -2534,7 +2761,8 @@ for using a JSR-166 lock is:
}
</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>
@@ -2543,7 +2771,8 @@ where the correct way to compare instances of this type is generally
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>
@@ -2551,7 +2780,8 @@ not be compared by reference are java.lang.Integer, java.lang.Float, etc.</p>]]>
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>
@@ -2568,7 +2798,8 @@ contract defined by java.lang.Object.equals(Object),
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>
@@ -2586,7 +2817,8 @@ contract defined by java.lang.Object.equals(Object),
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>
@@ -2605,7 +2837,8 @@ contract defined by java.lang.Object.equals(Object),
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>
@@ -2613,7 +2846,8 @@ the result of this comparison will always be false at runtime.
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>
@@ -2621,7 +2855,8 @@ this call should always return <code>false</code>.</p>]]></description>
on the object.&nbsp; 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>
@@ -2629,7 +2864,8 @@ an <code>IllegalMonitorStateException</code> being thrown.</p>]]></description>
on the object.&nbsp; 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>
@@ -2644,7 +2880,8 @@ an <code>IllegalMonitorStateException</code> being thrown.</p>]]></description>
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>
@@ -2658,7 +2895,8 @@ Such assignments are useless, and may indicate a logic error or typo.
</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>
@@ -2672,7 +2910,8 @@ Such assignments are useless, and may indicate a logic error or typo.
</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>
@@ -2686,7 +2925,8 @@ Such assignments are useless, and may indicate a logic error or typo.
</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>
@@ -2697,7 +2937,8 @@ and may indicate a typo or
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>
@@ -2708,7 +2949,8 @@ and may indicate a typo or
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>
@@ -2716,7 +2958,8 @@ a logic error. Double check the computation.
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>
@@ -2724,7 +2967,8 @@ a logic error. Make sure that you are comparing the right things.
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>
@@ -2733,7 +2977,8 @@ a logic error. Make sure that you are comparing the right things.
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>
@@ -2748,7 +2993,8 @@ number; the values are too easily guessable. You should strongly consider using
(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>
@@ -2758,7 +3004,8 @@ generator is <code>Integer.MIN_VALUE</code>, then the result will be negative as
<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>
@@ -2768,7 +3015,8 @@ is <code>Integer.MIN_VALUE</code>, then the result will be negative as well (sin
<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>
@@ -2779,7 +3027,8 @@ can also be negative. Be sure this is intended, and strongly
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>
@@ -2798,14 +3047,16 @@ value of the result of the remainder operation (i.e., use
<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>
@@ -2815,7 +3066,8 @@ To convert a signed byte <code>b</code> to an unsigned value in the range 0..255
use <code>0xff &amp; 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>
@@ -2824,7 +3076,8 @@ use <code>0xff &amp; b</code>
</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>
@@ -2832,7 +3085,8 @@ use <code>0xff &amp; b</code>
the same value (e.g., x &lt;= 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>
@@ -2840,7 +3094,8 @@ the same value (e.g., x &lt;= Integer.MAX_VALUE).
Did you mean (exp &amp; 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>
@@ -2868,7 +3123,8 @@ for(int i = 0; i &lt; 4; i++)
result = ((result &lt;&lt; 8) | (b[i] &amp; 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>
@@ -2896,7 +3152,8 @@ for(int i = 0; i &lt; 4; i++)
result = ((result &lt;&lt; 8) + (b[i] &amp; 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>
@@ -2905,7 +3162,8 @@ which will always compare unequal
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>
@@ -2921,7 +3179,8 @@ to use '!= 0' instead of '&gt; 0'.
<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>
@@ -2937,7 +3196,8 @@ to use '!= 0' instead of '&gt; 0'.
<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>
@@ -2945,7 +3205,8 @@ to use '!= 0' instead of '&gt; 0'.
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>
@@ -2958,7 +3219,8 @@ This may indicate a logic error or typo.</p>
a membership test in a bit set, but uses the bitwise OR
operator ("|") instead of bitwise AND ("&amp;").</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>
@@ -2971,7 +3233,8 @@ For more information, see the
<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>
@@ -2983,7 +3246,8 @@ you have a <em>very serious</em> multithreading bug, unless something else preve
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>
@@ -2992,7 +3256,8 @@ any other thread from accessing the stored object until it is fully initialized.
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>
@@ -3002,7 +3267,8 @@ it is more likely that the method is never used, and should be
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>
@@ -3014,7 +3280,8 @@ override a method declared in a superclass, and due to an typo or other error th
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>
@@ -3027,7 +3294,8 @@ result in poor performance, and could cause the application to
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>
@@ -3039,7 +3307,8 @@ close database resources on all paths out of a method may
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>
@@ -3068,7 +3337,8 @@ a StringBuffer (or StringBuilder in Java 1.5) explicitly.</p>
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>
@@ -3080,7 +3350,8 @@ elements of the collection, then it is populated and returned
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>
@@ -3091,28 +3362,32 @@ the test method, the exception will terminate the thread but not result
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>
@@ -3123,13 +3398,15 @@ or
<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>
@@ -3137,28 +3414,32 @@ or
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>
@@ -3171,7 +3452,8 @@ To compare the
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>
@@ -3181,7 +3463,8 @@ method of Object, calling equals on an array is the same as comparing their addr
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>
@@ -3190,7 +3473,8 @@ This method invokes the Thread.currentThread() call, just to call the interrupte
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>
@@ -3200,7 +3484,8 @@ not the current thread. As the interrupted() method is static, the interrupted m
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>
@@ -3211,7 +3496,8 @@ the write to the parameter will be conveyed back to
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>
@@ -3227,7 +3513,8 @@ final local variables. Because FindBugs is a bytecode-based tool,
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>
@@ -3236,7 +3523,8 @@ This statement assigns to a local variable in a return statement. This assignmen
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>
@@ -3251,7 +3539,8 @@ In Java 5 and later, it does not.
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>
@@ -3260,7 +3549,8 @@ read. This store may have been introduced to assist the garbage collector, but
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>
@@ -3269,7 +3559,8 @@ in this class or a superclass. This may cause the method to
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>
@@ -3278,7 +3569,8 @@ instance field in a superclass. This is confusing, and
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>
@@ -3286,14 +3578,16 @@ the fields when they wanted the other.</p>]]></description>
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>
@@ -3305,7 +3599,8 @@ does not need to be created, just access the static methods directly using the c
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>
@@ -3322,7 +3617,8 @@ does not need to be created, just access the static methods directly using the c
<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>
@@ -3338,7 +3634,8 @@ does not need to be created, just access the static methods directly using the c
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>
@@ -3421,7 +3718,8 @@ just use the constant. Methods detected are:
</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>
@@ -3433,7 +3731,8 @@ just use the constant. Methods detected are:
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>
@@ -3445,7 +3744,8 @@ just use the constant. Methods detected are:
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>
@@ -3456,7 +3756,8 @@ just use the constant. Methods detected are:
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>
@@ -3468,7 +3769,8 @@ just use the constant. Methods detected are:
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>
@@ -3494,7 +3796,8 @@ or
</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>
@@ -3509,7 +3812,8 @@ to Math.round was intended to be performed using
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>
@@ -3524,7 +3828,8 @@ to Math.ceil was intended to be performed using double precision
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>
@@ -3549,7 +3854,8 @@ double value2 = x / (double) y;
</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>
@@ -3558,7 +3864,8 @@ This code seems to be storing a non-serializable object into an HttpSession.
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>
@@ -3567,7 +3874,8 @@ This code seems to be passing a non-serializable object to the ObjectOutput.writ
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>
@@ -3581,7 +3889,8 @@ For example,
<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>
@@ -3592,7 +3901,8 @@ For example, <code>String.format("%d", "1")</code> will generate an exception, s
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>
@@ -3602,7 +3912,8 @@ exception; instead, it will print true for any nonnull value, and false for null
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>
@@ -3613,7 +3924,8 @@ of the array.
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>
@@ -3625,7 +3937,8 @@ but the number of arguments passed does not match with the number of
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>
@@ -3636,7 +3949,8 @@ This won't cause a runtime exception, but the code may be silently omitting
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>
@@ -3646,7 +3960,8 @@ and a runtime exception will occur when
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>
@@ -3656,7 +3971,8 @@ A runtime exception will occur when
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>
@@ -3672,7 +3988,8 @@ A runtime exception will occur when
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>
@@ -3682,7 +3999,8 @@ This code passes a primitive array to a function that takes a variable number of
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>
@@ -3692,7 +4010,8 @@ about the type of <code>o</code>. It should simply return
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>
@@ -3704,7 +4023,8 @@ you are casting to. If all you need is to be able
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>
@@ -3712,7 +4032,8 @@ to iterate through a collection, you don't need to cast it to a Set or List.
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>
@@ -3722,7 +4043,8 @@ Although this is safe, make sure it isn't
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>
@@ -3731,7 +4053,8 @@ This instanceof test will always return false. Although this is safe, make sure
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>
@@ -3743,7 +4066,8 @@ If you really want to test the value for being null, perhaps it would be clearer
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>
@@ -3753,7 +4077,8 @@ the type it is being cast to. Ensure that your program logic ensures that this
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>
@@ -3766,7 +4091,8 @@ point. Unless you have a particular reason to do so, just use the abstract
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>
@@ -3778,7 +4104,8 @@ s.replaceAll(".", "/") will return a String in which <em>every</em>
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>
@@ -3788,7 +4115,8 @@ for regular expressions. This statement will throw a PatternSyntaxException when
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>
@@ -3802,7 +4130,8 @@ regular expression as an escape character. Amoung other options, you can just us
</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>
@@ -3812,7 +4141,8 @@ immediately overwrites it. For example, <code>i = i++</code> immediately
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>
@@ -3823,7 +4153,8 @@ Since the upper bits are discarded, there may be no difference between
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>
@@ -3835,7 +4166,8 @@ value to decide how much to shift by. This probably isn't want was expected,
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>
@@ -3845,7 +4177,8 @@ Be sure you don't have your operator precedence confused. For example
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>
@@ -3858,7 +4191,8 @@ use <code>java.util.Arrays.hashCode(a)</code>.
</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>
@@ -3868,7 +4202,8 @@ such as [C@16f0472. Consider using Arrays.toString to convert the array into a r
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>
@@ -3878,7 +4213,8 @@ such as [C@16f0472. Consider using Arrays.toString to convert the array into a r
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>
@@ -3896,7 +4232,8 @@ in the JDK libraries, and Joshua Bloch
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>
@@ -3906,7 +4243,8 @@ for negative numbers (e.g., (-5) % 2 == -1). If this code is intending to check
for oddness, consider using x &amp; 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>
@@ -3914,7 +4252,8 @@ for oddness, consider using x &amp; 1 == 1, or x % 2 != 0.
(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>
@@ -3923,7 +4262,8 @@ This code passes a constant month
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>
@@ -3931,7 +4271,8 @@ value outside the expected range of 0..11 to a method.
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>
@@ -3941,7 +4282,8 @@ since the hasNext() method is not supposed to change the state of the iterator,
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>
@@ -3953,7 +4295,8 @@ and the next method is supposed to change the state of the iterator.
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>
@@ -3962,7 +4305,8 @@ and the next method is supposed to change the state of the iterator.
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>
@@ -3972,7 +4316,8 @@ and the next method is supposed to change the state of the iterator.
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>
@@ -3989,7 +4334,8 @@ and the next method is supposed to change the state of the iterator.
</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>
@@ -4000,7 +4346,8 @@ and the next method is supposed to change the state of the iterator.
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>
@@ -4010,7 +4357,8 @@ and the next method is supposed to change the state of the iterator.
==, 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>
@@ -4022,7 +4370,8 @@ and the next method is supposed to change the state of the iterator.
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>
@@ -4050,7 +4399,8 @@ and the next method is supposed to change the state of the iterator.
<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>
@@ -4060,7 +4410,8 @@ problems if it were true (such as the computation of the hash code resulting in
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>
@@ -4068,7 +4419,8 @@ It is likely that the wrong value is being passed as a parameter.
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>
@@ -4076,7 +4428,8 @@ always be true, and <code>c.retainAll(c)</code> should have no effect.
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>
@@ -4089,7 +4442,8 @@ random ArrayIndexOutOfBoundsExceptions or IndexOutOfBoundsExceptions in sun.util
<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>
@@ -4099,7 +4453,8 @@ field. This looks suspicous.</p>
<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>
@@ -4111,7 +4466,8 @@ application.</p>
<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>
@@ -4121,7 +4477,8 @@ field. This looks suspicous.</p>
<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>
@@ -4152,7 +4509,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4172,7 +4530,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4183,7 +4542,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4194,7 +4554,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4204,7 +4565,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4214,7 +4576,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4232,7 +4595,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4262,7 +4626,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4272,7 +4637,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4282,7 +4648,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4293,7 +4660,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4303,7 +4671,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4314,7 +4683,8 @@ public @NonNegative Integer example(@Negative Integer value) {
(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>
@@ -4324,7 +4694,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4334,7 +4705,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4346,7 +4718,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4357,7 +4730,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4368,7 +4742,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4379,7 +4754,8 @@ public @NonNegative Integer example(@Negative Integer value) {
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>
@@ -4391,7 +4767,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4401,7 +4778,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4416,7 +4794,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4426,7 +4805,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4437,7 +4817,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4446,7 +4827,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4455,7 +4837,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4494,7 +4877,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4503,7 +4887,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>
@@ -4512,7 +4897,8 @@ public @NonNegative Integer example(@Negative Integer value) {
</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>