All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.plugins.findbugs.rules.xml Maven / Gradle / Ivy

Go to download

FindBugs is a program that uses static analysis to look for bugs in Java code. It can detect a variety of common coding mistakes, including thread synchronization problems, misuse of API methods.

There is a newer version: 3.2
Show newest version
<rules>

  <rule key="BC_IMPOSSIBLE_DOWNCAST">
    <priority>BLOCKER</priority>
    <name><![CDATA[Correctness - Impossible downcast]]></name>
    <configKey><![CDATA[BC_IMPOSSIBLE_DOWNCAST]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="NP_UNWRITTEN_FIELD">
    <priority>MAJOR</priority>
    <name><![CDATA[Correctness - Read of unwritten field]]></name>
    <configKey><![CDATA[NP_UNWRITTEN_FIELD]]></configKey>
  </rule>

  <rule key="UWF_UNWRITTEN_FIELD">
    <priority>MINOR</priority>
    <name><![CDATA[Correctness - Unwritten field]]></name>
    <configKey><![CDATA[UWF_UNWRITTEN_FIELD]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="DMI_UNSUPPORTED_METHOD">
    <priority>MAJOR</priority>
    <name><![CDATA[Dodgy - Call to unsupported method]]></name>
    <configKey><![CDATA[DMI_UNSUPPORTED_METHOD]]></configKey>
  </rule>

  <rule key="DMI_EMPTY_DB_PASSWORD">
    <priority>CRITICAL</priority>
    <name><![CDATA[Security - Empty database password]]></name>
    <configKey><![CDATA[DMI_EMPTY_DB_PASSWORD]]></configKey>
  </rule>

  <rule key="DMI_CONSTANT_DB_PASSWORD">
    <priority>BLOCKER</priority>
    <name><![CDATA[Security - Hardcoded constant database password]]></name>
    <configKey><![CDATA[DMI_CONSTANT_DB_PASSWORD]]></configKey>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <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>
  </rule>

  <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>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <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>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <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>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <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>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <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>
  </rule>

  <rule key="IL_INFINITE_LOOP">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - An apparent infinite loop]]></name>
    <configKey><![CDATA[IL_INFINITE_LOOP]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="RpC_REPEATED_CONDITIONAL_TEST">
    <priority>MAJOR</priority>
    <name><![CDATA[Correctness - Repeated conditional tests]]></name>
    <configKey><![CDATA[RpC_REPEATED_CONDITIONAL_TEST]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="DE_MIGHT_DROP">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Method might drop exception]]></name>
    <configKey><![CDATA[DE_MIGHT_DROP]]></configKey>
  </rule>

  <rule key="DE_MIGHT_IGNORE">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Method might ignore exception]]></name>
    <configKey><![CDATA[DE_MIGHT_IGNORE]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="DM_EXIT">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Method invokes System.exit(...)]]></name>
    <configKey><![CDATA[DM_EXIT]]></configKey>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <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>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <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>
  </rule>

  <rule key="DC_DOUBLECHECK">
    <priority>MAJOR</priority>
    <name><![CDATA[Multithreaded correctness - Possible double check of field]]></name>
    <configKey><![CDATA[DC_DOUBLECHECK]]></configKey>
  </rule>

  <rule key="FI_FINALIZER_NULLS_FIELDS">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Finalizer nulls fields]]></name>
    <configKey><![CDATA[FI_FINALIZER_NULLS_FIELDS]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="FI_EMPTY">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Empty finalizer should be deleted]]></name>
    <configKey><![CDATA[FI_EMPTY]]></configKey>
  </rule>

  <rule key="FI_NULLIFY_SUPER">
    <priority>CRITICAL</priority>
    <name><![CDATA[Bad practice - Finalizer nullifies superclass finalizer]]></name>
    <configKey><![CDATA[FI_NULLIFY_SUPER]]></configKey>
  </rule>

  <rule key="FI_USELESS">
    <priority>MINOR</priority>
    <name><![CDATA[Bad practice - Finalizer does nothing but call superclass finalizer]]></name>
    <configKey><![CDATA[FI_USELESS]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="FI_EXPLICIT_INVOCATION">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Explicit invocation of finalizer]]></name>
    <configKey><![CDATA[FI_EXPLICIT_INVOCATION]]></configKey>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <!-- warning : http://sourceforge.net/tracker/?func=detail&aid=2786054&group_id=96405&atid=614693 -->
  <rule key="EQ_DOESNT_OVERRIDE_EQUALS">
    <name><![CDATA[Dodgy - Class doesn't override equals in superclass]]></name>
    <configKey><![CDATA[EQ_DOESNT_OVERRIDE_EQUALS]]></configKey>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="EQ_UNUSUAL">
    <priority>MINOR</priority>
    <name><![CDATA[Dodgy - Unusual equals method ]]></name>
    <configKey><![CDATA[EQ_UNUSUAL]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="EQ_ALWAYS_TRUE">
    <priority>BLOCKER</priority>
    <name><![CDATA[Correctness - equals method always returns true]]></name>
    <configKey><![CDATA[EQ_ALWAYS_TRUE]]></configKey>
  </rule>

  <rule key="EQ_ALWAYS_FALSE">
    <priority>BLOCKER</priority>
    <name><![CDATA[Correctness - equals method always returns false]]></name>
    <configKey><![CDATA[EQ_ALWAYS_FALSE]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="MSF_MUTABLE_SERVLET_FIELD">
    <priority>MAJOR</priority>
    <name><![CDATA[Multithreaded correctness - Mutable servlet field]]></name>
    <configKey><![CDATA[MSF_MUTABLE_SERVLET_FIELD]]></configKey>
  </rule>

  <rule key="IS2_INCONSISTENT_SYNC">
    <priority>CRITICAL</priority>
    <name><![CDATA[Multithreaded correctness - Inconsistent synchronization]]></name>
    <configKey><![CDATA[IS2_INCONSISTENT_SYNC]]></configKey>
  </rule>

  <rule key="NN_NAKED_NOTIFY">
    <priority>CRITICAL</priority>
    <name><![CDATA[Multithreaded correctness - Naked notify]]></name>
    <configKey><![CDATA[NN_NAKED_NOTIFY]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="UW_UNCOND_WAIT">
    <priority>MAJOR</priority>
    <name><![CDATA[Multithreaded correctness - Unconditional wait]]></name>
    <configKey><![CDATA[UW_UNCOND_WAIT]]></configKey>
  </rule>

  <rule key="UR_UNINIT_READ">
    <priority>MAJOR</priority>
    <name><![CDATA[Correctness - Uninitialized read of field in constructor]]></name>
    <configKey><![CDATA[UR_UNINIT_READ]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="IC_INIT_CIRCULARITY">
    <priority>CRITICAL</priority>
    <name><![CDATA[Dodgy - Initialization circularity]]></name>
    <configKey><![CDATA[IC_INIT_CIRCULARITY]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="ESync_EMPTY_SYNC">
    <priority>MAJOR</priority>
    <name><![CDATA[Multithreaded correctness - Empty synchronized block]]></name>
    <configKey><![CDATA[ESync_EMPTY_SYNC]]></configKey>
  </rule>

  <rule key="IS_INCONSISTENT_SYNC">
    <priority>MAJOR</priority>
    <name><![CDATA[Multithreaded correctness - Inconsistent synchronization]]></name>
    <configKey><![CDATA[IS_INCONSISTENT_SYNC]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <rule key="MS_PKGPROTECT">
    <priority>MAJOR</priority>
    <name><![CDATA[Malicious code vulnerability - Field should be package protected]]></name>
    <configKey><![CDATA[MS_PKGPROTECT]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="NM_VERY_CONFUSING">
    <priority>MAJOR</priority>
    <name><![CDATA[Correctness - Very confusing method names]]></name>
    <configKey><![CDATA[NM_VERY_CONFUSING]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="NM_CONFUSING">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Confusing method names]]></name>
    <configKey><![CDATA[NM_CONFUSING]]></configKey>
  </rule>

  <rule key="NM_METHOD_CONSTRUCTOR_CONFUSION">
    <priority>MAJOR</priority>
    <name><![CDATA[Correctness - Apparent method/constructor confusion]]></name>
    <configKey><![CDATA[NM_METHOD_CONSTRUCTOR_CONFUSION]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="SE_NONSTATIC_SERIALVERSIONID">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - serialVersionUID isn't static]]></name>
    <configKey><![CDATA[SE_NONSTATIC_SERIALVERSIONID]]></configKey>
  </rule>

  <rule key="SE_NONFINAL_SERIALVERSIONID">
    <priority>CRITICAL</priority>
    <name><![CDATA[Bad practice - serialVersionUID isn't final]]></name>
    <configKey><![CDATA[SE_NONFINAL_SERIALVERSIONID]]></configKey>
  </rule>

  <rule key="SE_NONLONG_SERIALVERSIONID">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - serialVersionUID isn't long]]></name>
    <configKey><![CDATA[SE_NONLONG_SERIALVERSIONID]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="SE_INNER_CLASS">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad practice - Serializable inner class]]></name>
    <configKey><![CDATA[SE_INNER_CLASS]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="UUF_UNUSED_FIELD">
    <priority>MAJOR</priority>
    <name><![CDATA[Performance - Unused field]]></name>
    <configKey><![CDATA[UUF_UNUSED_FIELD]]></configKey>
  </rule>

  <rule key="URF_UNREAD_FIELD">
    <priority>MAJOR</priority>
    <name><![CDATA[Performance - Unread field]]></name>
    <configKey><![CDATA[URF_UNREAD_FIELD]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="UWF_NULL_FIELD">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Field only ever set to null]]></name>
    <configKey><![CDATA[UWF_NULL_FIELD]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="RV_RETURN_VALUE_IGNORED">
    <priority>MINOR</priority>
    <name><![CDATA[Correctness - Method ignores return value]]></name>
    <configKey><![CDATA[RV_RETURN_VALUE_IGNORED]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="RV_RETURN_VALUE_IGNORED2">
    <priority>MAJOR</priority>
    <name><![CDATA[Correctness - Method ignores return value]]></name>
    <configKey><![CDATA[RV_RETURN_VALUE_IGNORED2]]></configKey>
  </rule>

  <rule key="NP_ALWAYS_NULL">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Null pointer dereference]]></name>
    <configKey><![CDATA[NP_ALWAYS_NULL]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Method call passes null for nonnull parameter (ALL_TARGETS_DANGEROUS)]]></name>
    <configKey><![CDATA[NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <rule key="UCF_USELESS_CONTROL_FLOW">
    <priority>CRITICAL</priority>
    <name><![CDATA[Dodgy - Useless control flow]]></name>
    <configKey><![CDATA[UCF_USELESS_CONTROL_FLOW]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="RC_REF_COMPARISON">
    <priority>CRITICAL</priority>
    <name><![CDATA[Bad practice - Suspicious reference comparison]]></name>
    <configKey><![CDATA[RC_REF_COMPARISON]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="EC_UNRELATED_TYPES">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Call to equals() comparing different types]]></name>
    <configKey><![CDATA[EC_UNRELATED_TYPES]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="EC_NULL_ARG">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Call to equals() with null argument]]></name>
    <configKey><![CDATA[EC_NULL_ARG]]></configKey>
  </rule>

  <rule key="MWN_MISMATCHED_WAIT">
    <priority>CRITICAL</priority>
    <name><![CDATA[Multithreaded correctness - Mismatched wait()]]></name>
    <configKey><![CDATA[MWN_MISMATCHED_WAIT]]></configKey>
  </rule>

  <rule key="MWN_MISMATCHED_NOTIFY">
    <priority>CRITICAL</priority>
    <name><![CDATA[Multithreaded correctness - Mismatched notify()]]></name>
    <configKey><![CDATA[MWN_MISMATCHED_NOTIFY]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="SA_FIELD_SELF_ASSIGNMENT">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Self assignment of field]]></name>
    <configKey><![CDATA[SA_FIELD_SELF_ASSIGNMENT]]></configKey>
  </rule>

  <rule key="SA_FIELD_DOUBLE_ASSIGNMENT">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Double assignment of field]]></name>
    <configKey><![CDATA[SA_FIELD_DOUBLE_ASSIGNMENT]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="INT_VACUOUS_COMPARISON">
    <priority>CRITICAL</priority>
    <name><![CDATA[Dodgy - Vacuous comparison of integer value]]></name>
    <configKey><![CDATA[INT_VACUOUS_COMPARISON]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="BIT_AND">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Incompatible bit masks (BIT_AND)]]></name>
    <configKey><![CDATA[BIT_AND]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="BIT_AND_ZZ">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Check to see if ((...) & 0) == 0]]></name>
    <configKey><![CDATA[BIT_AND_ZZ]]></configKey>
  </rule>

  <rule key="BIT_IOR">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Incompatible bit masks (BIT_IOR)]]></name>
    <configKey><![CDATA[BIT_IOR]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="IJU_NO_TESTS">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - TestCase has no tests]]></name>
    <configKey><![CDATA[IJU_NO_TESTS]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="RI_REDUNDANT_INTERFACES">
    <priority>MAJOR</priority>
    <name><![CDATA[Dodgy - Class implements same interface as superclass]]></name>
    <configKey><![CDATA[RI_REDUNDANT_INTERFACES]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="VA_FORMAT_STRING_ILLEGAL">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Illegal format string]]></name>
    <configKey><![CDATA[VA_FORMAT_STRING_ILLEGAL]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="BC_IMPOSSIBLE_CAST">
    <priority>BLOCKER</priority>
    <name><![CDATA[Correctness - Impossible cast]]></name>
    <configKey><![CDATA[BC_IMPOSSIBLE_CAST]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="BC_IMPOSSIBLE_INSTANCEOF">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - instanceof will always return false]]></name>
    <configKey><![CDATA[BC_IMPOSSIBLE_INSTANCEOF]]></configKey>
  </rule>

  <rule key="BC_VACUOUS_INSTANCEOF">
    <priority>CRITICAL</priority>
    <name><![CDATA[Dodgy - instanceof will always return true]]></name>
    <configKey><![CDATA[BC_VACUOUS_INSTANCEOF]]></configKey>
  </rule>

  <rule key="BC_UNCONFIRMED_CAST">
    <priority>CRITICAL</priority>
    <name><![CDATA[Dodgy - Unchecked/unconfirmed cast]]></name>
    <configKey><![CDATA[BC_UNCONFIRMED_CAST]]></configKey>
  </rule>

  <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>
  </rule>

  <rule key="RE_POSSIBLE_UNINTENDED_PATTERN">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - "." used for regular expression]]></name>
    <configKey><![CDATA[RE_POSSIBLE_UNINTENDED_PATTERN]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="DLS_OVERWRITTEN_INCREMENT">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Overwritten increment]]></name>
    <configKey><![CDATA[DLS_OVERWRITTEN_INCREMENT]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Invocation of toString on an anonymous array]]></name>
    <configKey><![CDATA[DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="DMI_BAD_MONTH">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Bad constant value for month]]></name>
    <configKey><![CDATA[DMI_BAD_MONTH]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="STCAL_STATIC_CALENDAR_INSTANCE">
    <priority>CRITICAL</priority>
    <name><![CDATA[Multithreaded correctness - Static Calendar]]></name>
    <configKey><![CDATA[STCAL_STATIC_CALENDAR_INSTANCE]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness -  Value required to not have type qualifier, but marked as unknown]]></name>
    <configKey><![CDATA[TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK]]></configKey>
  </rule>

  <rule key="TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK">
    <priority>CRITICAL</priority>
    <name><![CDATA[Correctness - Value required to have type qualifier, but marked as unknown]]></name>
    <configKey><![CDATA[TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
    <status>DEPRECATED</status>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="NM_LCASE_HASHCODE">
    <priority>CRITICAL</priority>
    <name><![CDATA[Class defines hashcode(); should it be hashCode()?]]></name>
    <configKey><![CDATA[NM_LCASE_HASHCODE]]></configKey>
    <status>DEPRECATED</status>
  </rule>

  <rule key="NM_LCASE_TOSTRING">
    <priority>MAJOR</priority>
    <name><![CDATA[Class defines tostring(); should it be toString()?]]></name>
    <configKey><![CDATA[NM_LCASE_TOSTRING]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="CD_CIRCULAR_DEPENDENCY">
    <priority>INFO</priority>
    <name><![CDATA[Experimental - Test for circular dependencies among classes]]></name>
    <configKey><![CDATA[CD_CIRCULAR_DEPENDENCY]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="FB_UNEXPECTED_WARNING">
    <priority>INFO</priority>
    <name><![CDATA[Experimental - Unexpected/undesired warning from FindBugs]]></name>
    <configKey><![CDATA[FB_UNEXPECTED_WARNING]]></configKey>
  </rule>

  <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>
  </rule>

  <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>
  </rule>

  <rule key="AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION">
    <priority>MAJOR</priority>
    <name><![CDATA[Sequence of calls to concurrent abstraction may not be atomic]]></name>
    <configKey><![CDATA[AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION]]></configKey>
  </rule>

  <rule key="BX_UNBOXING_IMMEDIATELY_REBOXED">
    <priority>MAJOR</priority>
    <name><![CDATA[Boxed value is unboxed and then immediately reboxed]]></name>
    <configKey><![CDATA[BX_UNBOXING_IMMEDIATELY_REBOXED]]></configKey>
  </rule>

  <rule key="CO_COMPARETO_RESULTS_MIN_VALUE">
    <priority>MAJOR</priority>
    <name><![CDATA[compareTo()/compare() returns Integer.MIN_VALUE]]></name>
    <configKey><![CDATA[CO_COMPARETO_RESULTS_MIN_VALUE]]></configKey>
  </rule>

  <rule key="DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD">
    <priority>MAJOR</priority>
    <name><![CDATA[Dead store to local variable that shadows field]]></name>
    <configKey><![CDATA[DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD]]></configKey>
  </rule>

  <rule key="DMI_ARGUMENTS_WRONG_ORDER">
    <priority>MINOR</priority>
    <name><![CDATA[Reversed method arguments]]></name>
    <configKey><![CDATA[DMI_ARGUMENTS_WRONG_ORDER]]></configKey>
  </rule>

  <rule key="DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE">
    <priority>MAJOR</priority>
    <name><![CDATA[BigDecimal constructed from double that isn't represented precisely]]></name>
    <configKey><![CDATA[DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE]]></configKey>
  </rule>

  <rule key="DMI_DOH">
    <priority>MAJOR</priority>
    <name><![CDATA[D'oh! A nonsensical method invocation]]></name>
    <configKey><![CDATA[DMI_DOH]]></configKey>
  </rule>

  <rule key="DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS">
    <priority>MAJOR</priority>
    <name><![CDATA[Adding elements of an entry set may fail due to reuse of Entry objects]]></name>
    <configKey><![CDATA[DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS]]></configKey>
  </rule>

  <rule key="DM_DEFAULT_ENCODING">
    <priority>MAJOR</priority>
    <name><![CDATA[Reliance on default encoding]]></name>
    <configKey><![CDATA[DM_DEFAULT_ENCODING]]></configKey>
  </rule>

  <rule key="ICAST_INT_2_LONG_AS_INSTANT">
    <priority>MAJOR</priority>
    <name><![CDATA[int value converted to long and used as absolute time]]></name>
    <configKey><![CDATA[ICAST_INT_2_LONG_AS_INSTANT]]></configKey>
  </rule>

  <rule key="INT_BAD_COMPARISON_WITH_INT_VALUE">
    <priority>MAJOR</priority>
    <name><![CDATA[Bad comparison of int value with long constant]]></name>
    <configKey><![CDATA[INT_BAD_COMPARISON_WITH_INT_VALUE]]></configKey>
  </rule>

  <rule key="JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT">
    <priority>MAJOR</priority>
    <name><![CDATA[Using monitor style wait methods on util.concurrent abstraction]]></name>
    <configKey><![CDATA[JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT]]></configKey>
  </rule>

  <rule key="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">
    <priority>MAJOR</priority>
    <name><![CDATA[Read of unwritten public or protected field]]></name>
    <configKey><![CDATA[NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD]]></configKey>
  </rule>

  <rule key="OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE">
    <priority>CRITICAL</priority>
    <name><![CDATA[Method may fail to clean up stream or resource on checked exception]]></name>
    <configKey><![CDATA[OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE]]></configKey>
  </rule>

  <rule key="PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS">
    <priority>MAJOR</priority>
    <name><![CDATA[Don't reuse entry objects in iterators]]></name>
    <configKey><![CDATA[PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS]]></configKey>
  </rule>

  <rule key="RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE">
    <priority>MAJOR</priority>
    <name><![CDATA[Code checks for specific values returned by compareTo]]></name>
    <configKey><![CDATA[RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE]]></configKey>
  </rule>

  <rule key="RV_NEGATING_RESULT_OF_COMPARETO">
    <priority>MINOR</priority>
    <name><![CDATA[Negating the result of compareTo()/compare()]]></name>
    <configKey><![CDATA[RV_NEGATING_RESULT_OF_COMPARETO]]></configKey>
  </rule>

  <rule key="RV_RETURN_VALUE_IGNORED_INFERRED">
    <priority>MINOR</priority>
    <name><![CDATA[Method ignores return value, is this OK?]]></name>
    <configKey><![CDATA[RV_RETURN_VALUE_IGNORED_INFERRED]]></configKey>
  </rule>

  <rule key="SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD">
    <priority>MAJOR</priority>
    <name><![CDATA[Self assignment of local rather than assignment to field]]></name>
    <configKey><![CDATA[SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD]]></configKey>
    <status>DEPRECATED</status>
  </rule>

  <rule key="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD">
    <priority>INFO</priority>
    <name><![CDATA[Unread public/protected field]]></name>
    <configKey><![CDATA[URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD]]></configKey>
  </rule>

  <rule key="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD">
    <priority>INFO</priority>
    <name><![CDATA[Unused public or protected field]]></name>
    <configKey><![CDATA[UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD]]></configKey>
  </rule>

  <rule key="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD">
    <priority>MINOR</priority>
    <name><![CDATA[Unwritten public or protected field]]></name>
    <configKey><![CDATA[UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD]]></configKey>
  </rule>

  <rule key="VA_FORMAT_STRING_USES_NEWLINE">
    <priority>MAJOR</priority>
    <name><![CDATA[Format string should use %n rather than \n]]></name>
    <configKey><![CDATA[VA_FORMAT_STRING_USES_NEWLINE]]></configKey>
  </rule>

  <rule key="VO_VOLATILE_INCREMENT">
    <priority>CRITICAL</priority>
    <name><![CDATA[An increment to a volatile field isn't atomic]]></name>
    <configKey><![CDATA[VO_VOLATILE_INCREMENT]]></configKey>
  </rule>

  <rule key="PT_ABSOLUTE_PATH_TRAVERSAL">
    <priority>MAJOR</priority>
    <name><![CDATA[Absolute path traversal in servlet]]></name>
    <configKey><![CDATA[PT_ABSOLUTE_PATH_TRAVERSAL]]></configKey>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <rule key="PT_RELATIVE_PATH_TRAVERSAL">
    <priority>MAJOR</priority>
    <name><![CDATA[Relative path traversal in servlet]]></name>
    <configKey><![CDATA[PT_RELATIVE_PATH_TRAVERSAL]]></configKey>
    <tag>owasp-top10</tag>
    <tag>cwe</tag>
  </rule>

  <rule key="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR">
    <priority>CRITICAL</priority>
    <name><![CDATA[Nonnull field is not initialized]]></name>
    <configKey><![CDATA[NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR]]></configKey>
  </rule>

  <rule key="MS_SHOULD_BE_REFACTORED_TO_BE_FINAL">
    <priority>MAJOR</priority>
    <name><![CDATA[Field isn't final but should be refactored to be so]]></name>
    <configKey><![CDATA[MS_SHOULD_BE_REFACTORED_TO_BE_FINAL]]></configKey>
  </rule>

  <rule key="BC_UNCONFIRMED_CAST_OF_RETURN_VALUE">
    <priority>CRITICAL</priority>
    <name><![CDATA[Unchecked/unconfirmed cast of return value from method]]></name>
    <configKey><![CDATA[BC_UNCONFIRMED_CAST_OF_RETURN_VALUE]]></configKey>
  </rule>

  <rule key="TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS">
    <priority>MAJOR</priority>
    <name><![CDATA[Comparing values with incompatible type qualifiers]]></name>
    <configKey><![CDATA[TQ_COMPARING_VALUES_WITH_INCOMPATIBLE_TYPE_QUALIFIERS]]></configKey>
  </rule>

  <rule key="TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED">
    <priority>MAJOR</priority>
    <name><![CDATA[Value without a type qualifier used where a value is required to have that qualifier]]></name>
    <configKey><![CDATA[TQ_UNKNOWN_VALUE_USED_WHERE_ALWAYS_STRICTLY_REQUIRED]]></configKey>
  </rule>

  <rule key="DLS_DEAD_LOCAL_INCREMENT_IN_RETURN">
    <priority>MAJOR</priority>
    <name><![CDATA[Useless increment in return statement]]></name>
    <configKey><![CDATA[DLS_DEAD_LOCAL_INCREMENT_IN_RETURN]]></configKey>
  </rule>

  <rule key="DM_BOXED_PRIMITIVE_FOR_PARSING">
    <priority>MAJOR</priority>
    <name><![CDATA[Boxing/unboxing to parse a primitive]]></name>
    <configKey><![CDATA[DM_BOXED_PRIMITIVE_FOR_PARSING]]></configKey>
  </rule>

  <rule key="NP_METHOD_RETURN_RELAXING_ANNOTATION">
    <priority>MAJOR</priority>
    <name><![CDATA[Method relaxes nullness annotation on return value]]></name>
    <configKey><![CDATA[NP_METHOD_RETURN_RELAXING_ANNOTATION]]></configKey>
  </rule>

  <rule key="NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION">
    <priority>MAJOR</priority>
    <name><![CDATA[Method tightens nullness annotation on parameter]]></name>
    <configKey><![CDATA[NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION]]></configKey>
  </rule>

  <rule key="NP_OPTIONAL_RETURN_NULL">
    <priority>MAJOR</priority>
    <name><![CDATA[Method with Optional return type returns explicit null]]></name>
    <configKey><![CDATA[NP_OPTIONAL_RETURN_NULL]]></configKey>
  </rule>

  <rule key="IIO_INEFFICIENT_INDEX_OF">
    <priority>MAJOR</priority>
    <name><![CDATA[Inefficient use of String.indexOf(String)]]></name>
    <configKey><![CDATA[IIO_INEFFICIENT_INDEX_OF]]></configKey>
  </rule>

  <rule key="IIO_INEFFICIENT_LAST_INDEX_OF">
    <priority>MAJOR</priority>
    <name><![CDATA[Inefficient use of String.lastIndexOf(String)]]></name>
    <configKey><![CDATA[IIO_INEFFICIENT_LAST_INDEX_OF]]></configKey>
  </rule>

  <rule key="CNT_ROUGH_CONSTANT_VALUE">
    <priority>MAJOR</priority>
    <name><![CDATA[Rough value of known constant found]]></name>
    <configKey><![CDATA[CNT_ROUGH_CONSTANT_VALUE]]></configKey>
  </rule>

</rules>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy