I hate compiler warnings showing in my IDE. It's messy, and it usually indicates that something is bad. But not always. Sometimes, when working with third party libraries, you can't avoid warnings like unchecked assignments. These are easy to get around though, by using the @SuppressWarnings annotation. The unchecked assignment warning is a standard Java compiler warning. A quick Google will reveal that the name of the unchecked assignment warning to pass to @SuppressWarnings is "unchecked".
IDE's however tend to flag warnings for much more than what the Java compiler flags warnings for. An example that I encountered today is in unit tests, if you have no assertions in your unit test, IDEA will flag a warning telling you so. In my case however, I was using mockito, and my assertions were in the form of verify calls. IDEA does not yet understand mockito, so I am faced with compiler warnings in my code, which, as I said before, I hate. Surely I can use @SuppressWarnings to suppress this warning, but what's its name? Google didn't help me at all here, so I decided to do a little investigation.
After writing a quick shell script that unpacked IDEAs jar files and grepped for the description of the warning, I found that the code that generates these warnings is an IDEA plugin called InspectionGadgets. I found that each warning was checked for by sub classes of com.siyeh.ig.BaseInspection, and that the name of the warning, and its description, can be obtained by instantiating each sub class, and calling methods on them. In the case of my test method with no assertions warning, the class that flagged this was com.siyeh.ig.junit.TestMethodWithoutAssertionInspection, and the name of the warning was JUnitTestMethodWithNoAssertions. I can now suppress my warning.
All that work was probably too much to do for each time that I want to suppress an IDEA warning. So I decided to find every warning, and store it in a table. Obviously I wasn't going to do this manually, so using this neat utility for finding all the classes on the classpath, with a few modifications to limit where it searched, I was able to generate a table of every warning that IDEA can flag. Here it is, sorted in alphabetical order of the description:
Warning Description | Warning Name |
---|---|
"Magic character" | MagicCharacter |
"Magic number" | MagicNumber |
'Comparator.compare()' method does not use parameter | ComparatorMethodParameterNotUsed |
'Connection.prepare*()' call with non-constant string | JDBCPrepareStatementWithNonConstantString |
'Iterator.hasNext()' which calls 'next()' | IteratorHasNextCallsIteratorNext |
'Iterator.next()' which can't throw 'NoSuchElementException' | IteratorNextCanNotThrowNoSuchElementException |
'Statement.execute()' call with non-constant string | JDBCExecuteWithNonConstantString |
'String.equals("")' | StringEqualsEmptyString |
'StringBuffer' may be 'StringBuilder' (JDK 5.0 only) | StringBufferMayBeStringBuilder |
'StringBuffer.toString()' in concatenation | StringBufferToStringInConcatenation |
'assert' statement | AssertStatement |
'assertEquals()' between objects of inconvertible types | AssertEqualsBetweenInconvertibleTypes |
'await()' not in loop | AwaitNotInLoop |
'await()' without corresponding 'signal()' | AwaitWithoutCorrespondingSignal |
'break' statement | BreakStatement |
'break' statement with label | BreakStatementWithLabel |
'catch' generic class | CatchGenericClass |
'clone()' does not call 'super.clone()' | CloneDoesntCallSuperClone |
'clone()' does not declare 'CloneNotSupportedException' | CloneDoesntDeclareCloneNotSupportedException |
'clone()' instantiates objects with constructor | CloneCallsConstructors |
'clone()' method in non-Cloneable class | CloneInNonCloneableClass |
'compareto()' instead of 'compareTo()' | MisspelledCompareTo |
'continue' or 'break' inside 'finally' block | ContinueOrBreakFromFinallyBlock |
'continue' statement | ContinueStatement |
'continue' statement with label | ContinueStatementWithLabel |
'default' not last case in 'switch' | DefaultNotLastCaseInSwitch |
'equal()' instead of 'equals()' | MisspelledEquals |
'equals()' between objects of inconvertible types | EqualsBetweenInconvertibleTypes |
'equals()' called on array type | ArrayEquals |
'equals()' called on java.math.BigDecimal | BigDecimalEquals |
'equals()' method which does not check class of parameter | EqualsWhichDoesntCheckParameterClass |
'equals()' or 'hashCode()' called on java.net.URL object | EqualsHashCodeCalledOnUrl |
'final' class | FinalClass |
'final' method | FinalMethod |
'final' method in 'final' class | FinalMethodInFinalClass |
'finalize()' called explicitly | FinalizeCalledExplicitly |
'finalize()' declaration | FinalizeDeclaration |
'finalize()' does not call 'super.finalize()' | FinalizeDoesntCallSuperFinalize |
'finalize()' not declared 'protected' | FinalizeNotProtected |
'finally' block which can not complete normally | finally |
'for' loop may be replaced by 'while' loop | ForLoopReplaceableByWhile |
'for' loop replaceable by 'for each' | ForLoopReplaceableByForEach |
'for' loop where update or condition does not use loop variable | ForLoopThatDoesntUseLoopVariable |
'for' loop with missing components | ForLoopWithMissingComponent |
'hashcode()' instead of 'hashCode()' | MisspelledHashcode |
'if' statement with identical branches | IfStatementWithIdenticalBranches |
'if' statement with negated condition | IfStatementWithNegatedCondition |
'if' statement with too many branches | IfStatementWithTooManyBranches |
'indexOf()' expression is replaceable by 'contains()' | ListIndexOfReplaceableByContains |
'instanceof' a concrete class | InstanceofInterfaces |
'instanceof' check for 'this' | InstanceofThis |
'instanceof' on 'catch' parameter | InstanceofCatchParameter |
'instanceof' with incompatible interface | InstanceofIncompatibleInterface |
'notify()' or 'notifyAll()' called on java.util.concurrent.locks.Condition object | NotifyCalledOnCondition |
'notify()' or 'notifyAll()' while not synced | NotifyNotInSynchronizedContext |
'notify()' or 'notifyAll()' without corresponding state change | NakedNotify |
'notify()' without corresponding 'wait()' | NotifyWithoutCorrespondingWait |
'private' method declared 'final' | FinalPrivateMethod |
'protected' member in 'final' class | ProtectedMemberInFinalClass |
'public' constructor in non-public class | PublicConstructorInNonPublicClass |
'readObject()' or 'writeObject()' not declared 'private' | NonPrivateSerializationMethod |
'readResolve()' or 'writeReplace()' not declared 'protected' | ReadResolveAndWriteReplaceProtected |
'return' inside 'finally' block | ReturnInsideFinallyBlock |
'serialPersistentFields' field not declared 'private static final ObjectStreamField[]' | SerialPersistentFieldsWithWrongSignature |
'serialVersionUID' field not declared 'private static final long' | SerialVersionUIDWithWrongSignature |
'setUp()' does not call 'super.setUp()' | SetUpDoesntCallSuperSetUp |
'setUp()' with incorrect signature | SetUpWithIncorrectSignature |
'setup()' instead of 'setUp()' | MisspelledSetUp |
'signal()' without corresponding 'await()' | SignalWithoutCorrespondingAwait |
'size() == 0' replaceable by 'isEmpty()' | SizeReplaceableByIsEmpty |
'static' method declared 'final' | FinalStaticMethod |
'static', non-'final' field | StaticNonFinalField |
'suite()' method not declared 'static' | SuiteNotDeclaredStatic |
'switch' statement | SwitchStatement |
'switch' statement with too few branches | SwitchStatementWithTooFewBranches |
'switch' statement with too low of a branch density | SwitchStatementDensity |
'switch' statement with too many branches | SwitchStatementWithTooManyBranches |
'switch' statement without 'default' branch | SwitchStatementWithoutDefaultBranch |
'synchronized' method | SynchronizedMethod |
'tearDown()' does not call 'super.tearDown()' | TearDownDoesntCallSuperTearDown |
'tearDown()' with incorrect signature | TearDownWithIncorrectSignature |
'teardown()' instead of 'tearDown()' | MisspelledTearDown |
'this' reference escaped in object construction | ThisEscapedInObjectConstruction |
'throw' caught by containing 'try' statement | ThrowCaughtLocally |
'throw' inside 'catch' block which ignores the caught exception | ThrowInsideCatchBlockWhichIgnoresCaughtException |
'throw' inside 'finally' block | ThrowFromFinallyBlock |
'tostring()' instead of 'toString()' | MisspelledToString |
'wait()' called on java.util.concurrent.locks.Condition object | WaitCalledOnCondition |
'wait()' not in loop | WaitNotInLoop |
'wait()' or 'await()' without timeout | WaitOrAwaitWithoutTimeout |
'wait()' while holding two locks | WaitWhileHoldingTwoLocks |
'wait()' while not synced | WaitWhileNotSynced |
'wait()' without corresponding 'notify()' | WaitWithoutCorrespondingNotify |
'while' loop replaceable by 'for each' | WhileLoopReplaceableByForEach |
* import | OnDemandImport |
Abstract class extends concrete class | AbstractClassExtendsConcreteClass |
Abstract class which has no concrete subclass | AbstractClassNeverImplemented |
Abstract class which has only one direct inheritor | AbstractClassWithOnlyOneDirectInheritor |
Abstract class without abstract methods | AbstractClassWithoutAbstractMethods |
Abstract method call in constructor | AbstractMethodCallInConstructor |
Abstract method overrides abstract method | AbstractMethodOverridesAbstractMethod |
Abstract method overrides concrete method | AbstractMethodOverridesConcreteMethod |
Abstract method with missing implementations | AbstractMethodWithMissingImplementations |
Access of system properties | AccessOfSystemProperties |
Access to non thread-safe static field from instance | AccessToNonThreadSafeStaticFieldFromInstance |
Access to static field locked on instance data | AccessToStaticFieldLockedOnInstance |
Accessing a non-public field of another object | AccessingNonPublicFieldOfAnotherObject |
Annotation | Annotation |
Annotation class | AnnotationClass |
Annotation naming convention | AnnotationNamingConvention |
Anonymous class variable hides variable in containing method | AnonymousClassVariableHidesContainingMethodVariable |
Anonymous inner class | AnonymousInnerClass |
Anonymous inner class may be a named static inner class | AnonymousInnerClassMayBeStatic |
Anonymous inner class with too many methods | AnonymousInnerClassWithTooManyMethods |
Arithmetic operation on volatile field | ArithmeticOnVolatileField |
Array.length in loop condition | ArrayLengthInLoopCondition |
Assignment replaceable with operator assignment | AssignmentReplaceableWithOperatorAssignment |
Assignment to 'for' loop parameter | AssignmentToForLoopParameter |
Assignment to 'null' | AssignmentToNull |
Assignment to Collection or array field from parameter | AssignmentToCollectionOrArrayFieldFromParameter |
Assignment to Date or Calendar field from parameter | AssignmentToDateFieldFromParameter |
Assignment to catch block parameter | AssignmentToCatchBlockParameter |
Assignment to method parameter | AssignmentToMethodParameter |
Assignment to static field from instance method | AssignmentToStaticFieldFromInstanceMethod |
Assignment used as condition | AssignmentUsedAsCondition |
Auto-boxing | AutoBoxing |
Auto-unboxing | AutoUnboxing |
Boolean constructor call | BooleanConstructorCall |
Boolean method name must start with question word | BooleanMethodNameMustStartWithQuestion |
Busy wait | BusyWait |
C-style array declaration | CStyleArrayDeclaration |
Call to 'Collection.toArray()' with zero-length array argument | ToArrayCallWithZeroLengthArrayArgument |
Call to 'Date.toString()' | CallToDateToString |
Call to 'Runtime.exec()' | CallToRuntimeExecWithNonConstantString |
Call to 'String.compareTo()' | CallToStringCompareTo |
Call to 'String.concat()' can be replaced by '+' | CallToStringConcatCanBeReplacedByOperator |
Call to 'String.equals()' | CallToStringEquals |
Call to 'String.equalsIgnoreCase()' | CallToStringEqualsIgnoreCase |
Call to 'String.toUpperCase()' or 'toLowerCase()' without a Locale | StringToUpperCaseOrToLowerCaseWithoutLocale |
Call to 'System.exit()' or related methods | CallToSystemExit |
Call to 'System.getenv()' | CallToSystemGetenv |
Call to 'System.loadLibrary()' with non-constant string | LoadLibraryWithNonConstantString |
Call to 'System.runFinalizersOnExit()' | CallToSystemRunFinalizersOnExit |
Call to 'System.setSecurityManager()' | CallToSystemSetSecurityManager |
Call to 'Thread.dumpStack()' | CallToThreadDumpStack |
Call to 'Thread.run()' | CallToThreadRun |
Call to 'Thread.setPriority()' | CallToThreadSetPriority |
Call to 'Thread.sleep()' while synchronized | SleepWhileHoldingLock |
Call to 'Thread.start()' during object construction | CallToThreadStartDuringObjectConstruction |
Call to 'Thread.stop()', 'suspend()' or 'resume()' | CallToThreadStopSuspendOrResumeManager |
Call to 'Thread.yield()' | CallToThreadYield |
Call to 'Time.toString()' | CallToTimeToString |
Call to 'intern()' on String constant | ConstantStringIntern |
Call to 'notify()' instead of 'notifyAll()' | CallToNotifyInsteadOfNotifyAll |
Call to 'printStackTrace()' | CallToPrintStackTrace |
Call to 'signal()' instead of 'signalAll()' | CallToSignalInsteadOfSignalAll |
Call to Numeric 'toString()' | CallToNumericToString |
Call to String.replaceAll(".", ...) | ReplaceAllDot |
Call to a native method while locked | CallToNativeMethodWhileLocked |
Call to default 'toString()' | ObjectToString |
Call to simple getter from within class | CallToSimpleGetterFromWithinClass |
Call to simple setter from within class | CallToSimpleSetterFromWithinClass |
Calls to 'System.gc()' or 'Runtime.gc()' | CallToSystemGC |
Cast conflicts with 'instanceof' | CastConflictsWithInstanceof |
Cast to a concrete class | CastToConcreteClass |
Casting to incompatible interface | CastToIncompatibleInterface |
Caught exception is immediately rethrown | CaughtExceptionImmediatelyRethrown |
Chain of 'instanceof' checks | ChainOfInstanceofChecks |
Chained equality comparisons | ChainedEqualityComparisons |
Chained method calls | ChainedMethodCall |
Channel opened but not safely closed | ChannelOpenedButNotSafelyClosed |
Character comparison | CharacterComparison |
Checked exception class | CheckedExceptionClass |
Class escapes defined scope | ClassEscapesDefinedScope |
Class explicitly extends a Collection class | ClassExtendsConcreteCollection |
Class explicitly extends java.lang.Object | ClassExplicitlyExtendsObject |
Class explicitly extends java.lang.Thread | ClassExplicitlyExtendsThread |
Class extends annotation interface | ClassExplicitlyAnnotation |
Class extends utility class | ExtendsUtilityClass |
Class may be interface | ClassMayBeInterface |
Class name differs from file name | ClassNameDiffersFromFileName |
Class name prefixed with package name | ClassNamePrefixedWithPackageName |
Class name same as ancestor name | ClassNameSameAsAncestorName |
Class naming convention | ClassNamingConvention |
Class references one of its subclasses | ClassReferencesSubclass |
Class too deep in inheritance tree | ClassTooDeepInInheritanceTree |
Class with multiple loggers | ClassWithMultipleLoggers |
Class with too many constructors | ClassWithTooManyConstructors |
Class with too many fields | ClassWithTooManyFields |
Class with too many methods | ClassWithTooManyMethods |
Class without 'toString()' | ClassWithoutToString |
Class without constructor | ClassWithoutConstructor |
Class without logger | ClassWithoutLogger |
Class without no-arg constructor | ClassWithoutNoArgConstructor |
Class without package statement | ClassWithoutPackageStatement |
ClassLoader instantiation | ClassLoaderInstantiation |
Cloneable class in secure context | CloneableClassInSecureContext |
Cloneable class without 'clone()' | CloneableClassWithoutClone |
Collection added to self | CollectionAddedToSelf |
Collection declared by class, not interface | CollectionDeclaredAsConcreteClass |
Collection without initial capacity | CollectionWithoutInitialCapacity |
Comparable implemented but 'equals()' not overridden | ComparableImplementedButEqualsNotOverridden |
Comparator class not declared Serializable | ComparatorNotSerializable |
Comparison of 'short' and 'char' values | ComparisonOfShortAndChar |
Comparison to Double.NaN or Float.NaN | ComparisonToNaN |
Concatenation with empty string | ConcatenationWithEmptyString |
Conditional expression (?:) | ConditionalExpression |
Conditional expression with identical branches | ConditionalExpressionWithIdenticalBranches |
Conditional expression with negated condition | ConditionalExpressionWithNegatedCondition |
Conditional that can be simplified to && or || | SimplifiableConditionalExpression |
Confusing 'else' branch | ConfusingElseBranch |
Confusing 'main()' method | ConfusingMainMethod |
Confusing 'null' argument to var-arg method | NullArgumentToVariableArgMethod |
Confusing floating-point literal | ConfusingFloatingPointLiteral |
Confusing octal escape sequence | ConfusingOctalEscapeSequence |
Confusing primitive array argument to var-arg method | PrimitiveArrayArgumentToVariableArgMethod |
Connection opened but not safely closed | ConnectionOpenedButNotSafelyClosed |
Constant StringBuffer may be String | StringBufferReplaceableByString |
Constant call to java.lang.Math or StrictMath | ConstantMathCall |
Constant conditional expression | ConstantConditionalExpression |
Constant declared in abstract class | ConstantDeclaredInAbstractClass |
Constant declared in interface | ConstantDeclaredInInterface |
Constant if statement | ConstantIfStatement |
Constant naming convention | ConstantNamingConvention |
Constant on left side of comparison | ConstantOnLeftSideOfComparison |
Constant on right side of comparison | ConstantOnRightSideOfComparison |
Constructor not 'protected' in 'abstract' class | ConstructorNotProtectedInAbstractClass |
Constructor with too many parameters | ConstructorWithTooManyParameters |
Control flow statement without braces | ControlFlowStatementWithoutBraces |
Covariant 'compareTo()' | CovariantCompareTo |
Covariant 'equals()' | CovariantEquals |
Custom ClassLoader | CustomClassloader |
Custom SecurityManager | CustomSecurityManager |
Deserializable class in secure context | DeserializableClassInSecureContext |
Design for extension | DesignForExtension |
Division by zero | divzero |
Double negation | DoubleNegation |
Double-checked locking | DoubleCheckedLocking |
Duplicate condition in 'if' statement | DuplicateCondition |
Duplicate condition on '&&' or '||' | DuplicateBooleanBranch |
Empty 'catch' block | EmptyCatchBlock |
Empty 'finally' block | EmptyFinallyBlock |
Empty 'synchronized' statement | EmptySynchronizedStatement |
Empty 'try' block | EmptyTryBlock |
Empty class | EmptyClass |
Empty class initializer | EmptyClassInitializer |
Enum 'switch' statement that misses case | EnumSwitchStatementWhichMissesCases |
Enumerated class | EnumClass |
Enumerated class naming convention | EnumeratedClassNamingConvention |
Enumerated constant naming convention | EnumeratedConstantNamingConvention |
Enumeration can be iteration | EnumerationCanBeIteration |
Exception class name does not end with 'Exception' | ExceptionClassNameDoesntEndWithException |
Extended 'for' statement | ForeachStatement |
Externalizable class with 'readObject()' or 'writeObject()' | ExternalizableClassWithSerializationMethods |
Fallthrough in 'switch' statement | fallthrough |
Feature envy | FeatureEnvy |
Field accessed in both synchronized and unsynchronized contexts | FieldAccessedSynchronizedAndUnsynchronized |
Field has setter but no getter | FieldHasSetterButNoGetter |
Field may be 'static' | FieldMayBeStatic |
Field name hides field in superclass | FieldNameHidesFieldInSuperclass |
Field repeatedly accessed in method | FieldRepeatedlyAccessedInMethod |
Floating point equality comparison | FloatingPointEquality |
Hardcoded file separator | HardcodedFileSeparator |
Hardcoded line separator | HardcodedLineSeparator |
Hibernate resource opened but not safely closed | HibernateResourceOpenedButNotSafelyClosed |
I/O resource opened but not safely closed | IOResourceOpenedButNotSafelyClosed |
If statement may be replaced by && or || expression | SimplifiableIfStatement |
Implicit call to 'super()' | ImplicitCallToSuper |
Implicit call to array '.toString()' | ImplicitArrayToString |
Implicit numeric conversion | ImplicitNumericConversion |
Import from same package | SamePackageImport |
Incompatible bitwise mask operation | IncompatibleBitwiseMaskOperation |
Infinite loop statement | InfiniteLoopStatement |
Infinite recursion | InfiniteRecursion |
Inner class field hides outer class field | InnerClassFieldHidesOuterClassField |
Inner class may be 'static' | InnerClassMayBeStatic |
Inner class of interface | InnerClassOfInterface |
Inner class too deeply nested | InnerClassTooDeeplyNested |
Insecure random number generation | UnsecureRandomNumberGeneration |
Inspection suppression annotation | SuppressionAnnotation |
Instance method naming convention | InstanceMethodNamingConvention |
Instance variable may not be initialized | InstanceVariableMayNotBeInitialized |
Instance variable may not be initialized by 'readObject()' | InstanceVariableMayNotBeInitializedByReadObject |
Instance variable naming convention | InstanceVariableNamingConvention |
Instance variable of concrete class | InstanceVariableOfConcreteClass |
Instance variable used before initialized | InstanceVariableUsedBeforeInitialized |
Instantiating a SimpleDateFormat without a Locale | SimpleDateFormatWithoutLocale |
Instantiating a Thread with default 'run()' method | InstantiatingAThreadWithDefaultRunMethod |
Instantiating object to get Class object | InstantiatingObjectToGetClassObject |
Instantiation of utility class | InstantiationOfUtilityClass |
Integer division in floating point context | IntegerDivisionInFloatingPointContext |
Integer multiplication or shift implicitly cast to long | IntegerMultiplicationImplicitCastToLong |
Interface naming convention | InterfaceNamingConvention |
Interface which has no concrete subclass | InterfaceNeverImplemented |
Interface which has only one direct inheritor | InterfaceWithOnlyOneDirectInheritor |
JDBC resource opened but not safely closed | JDBCResourceOpenedButNotSafelyClosed |
JNDI resource opened but not safely closed | JNDIResourceOpenedButNotSafelyClosed |
JUnit TestCase in product source | JUnitTestCaseInProductSource |
JUnit TestCase with non-trivial constructors | JUnitTestCaseWithNonTrivialConstructors |
JUnit abstract test class naming convention | JUnitAbstractTestClassNamingConvention |
JUnit test case with no tests | JUnitTestCaseWithNoTests |
JUnit test class naming convention | JUnitTestClassNamingConvention |
JUnit test method in product source | JUnitTestMethodInProductSource |
JUnit test method without any assertions | JUnitTestMethodWithNoAssertions |
Labeled statement | LabeledStatement |
Large array allocation with no OutOfMemoryError check | CheckForOutOfMemoryOnLargeArrayAllocation |
Limited-scope inner class | LimitedScopeInnerClass |
Local variable hides member variable | LocalVariableHidesMemberVariable |
Local variable naming convention | LocalVariableNamingConvention |
Local variable of concrete class | LocalVariableOfConcreteClass |
Local variable used and declared in different 'switch' branches | LocalVariableUsedAndDeclaredInDifferentSwitchBranches |
Lock acquired but not safely unlocked | LockAcquiredButNotSafelyReleased |
Long literal ending with 'l' instead of 'L' | LongLiteralEndingWithLowercaseL |
Loop statement that does not loop | LoopStatementThatDoesntLoop |
Loop variable not updated inside loop | LoopConditionNotUpdatedInsideLoop |
Loop with implicit termination condition | LoopWithImplicitTerminationCondition |
Malformed @Before or @After method | BeforeOrAfterWithIncorrectSignature |
Malformed @BeforeClass or @AfterClass method | BeforeOrAfterWithIncorrectSignature |
Malformed XPath expression | MalformedXPath |
Malformed format string | MalformedFormatString |
Malformed regular expression | MalformedRegex |
Manual array copy | ManualArrayCopy |
Manual array to collection copy | ManualArrayToCollectionCopy |
Map or Set may contain java.net.URL objects | CollectionContainsUrl |
Map replaceable by EnumMap | MapReplaceableByEnumMap |
Marker interface | MarkerInterface |
Message missing on JUnit assertion | MessageMissingOnJUnitAssertion |
Method call in loop condition | MethodCallInLoopCondition |
Method call violates Law of Demeter | LawOfDemeter |
Method is identical to its super method | RedundantMethodOverride |
Method may be 'static' | MethodMayBeStatic |
Method name same as class name | MethodNameSameAsClassName |
Method name same as parent class name | MethodNameSameAsParentName |
Method names differing only by case | MethodNamesDifferingOnlyByCase |
Method overloads method of superclass | MethodOverloadsMethodOfSuperclass |
Method overrides package local method of superclass located in other package | MethodOverridesPrivateMethodOfSuperclass |
Method overrides private method of superclass | MethodOverridesPrivateMethodOfSuperclass |
Method overrides static method of superclass | MethodOverridesStaticMethodOfSuperclass |
Method parameter naming convention | MethodParameterNamingConvention |
Method parameter of concrete class | MethodParameterOfConcreteClass |
Method return of concrete class | MethodReturnOfConcreteClass |
Method with more than three negations | MethodWithMoreThanThreeNegations |
Method with multiple loops | MethodWithMultipleLoops |
Method with multiple return points. | MethodWithMultipleReturnPoints |
Method with synchronized block could be synchronized method | MethodMayBeSynchronized |
Method with too many exceptions declared | MethodWithTooExceptionsDeclared |
Method with too many parameters | MethodWithTooManyParameters |
Mismatched query and update of collection | MismatchedQueryAndUpdateOfCollection |
Mismatched read and write of array | MismatchedReadAndWriteOfArray |
Misordered 'assertEquals()' parameters | MisorderedAssertEqualsParameters |
Missing @Deprecated annotation | MissingDeprecatedAnnotation |
Missing @Override annotation | override |
Missorted modifers | MissortedModifiers |
Multiple top level classes in single file | MultipleTopLevelClassesInFile |
Multiple variables in one declaration | MultipleVariablesInDeclaration |
Multiply or divide by power of two | MultiplyOrDivideByPowerOfTwo |
Native method | NativeMethod |
Nested 'switch' statement | NestedSwitchStatement |
Nested 'synchronized' statement | NestedSynchronizedStatement |
Nested 'try' statement | NestedTryStatement |
Nested assignment | NestedAssignment |
Nested conditional expression | NestedConditionalExpression |
Nested method call | NestedMethodCall |
No-op method in abstract class | NoopMethodInAbstractClass |
Non-boolean method name must not start with question word | NonBooleanMethodNameMayNotStartWithQuestion |
Non-constant String should be StringBuffer | NonConstantStringShouldBeStringBuffer |
Non-constant field with upper-case name | NonConstantFieldWithUpperCaseName |
Non-constant logger | NonConstantLogger |
Non-exception class name ends with 'Exception' | NonExceptionNameEndsWithException |
Non-final 'clone()' in secure context | NonFinalClone |
Non-final field of exception class | NonFinalFieldOfException |
Non-final field referenced in 'compareTo()' | CompareToUsesNonFinalVariable |
Non-final field referenced in 'equals()' | NonFinalFieldReferenceInEquals |
Non-final field referenced in 'hashCode()' | NonFinalFieldReferencedInHashCode |
Non-final static variable is used during class initialization | NonFinalStaticVariableUsedInClassInitialization |
Non-private field accessed in synchronized context | NonPrivateFieldAccessedInSynchronizedContext |
Non-reproducible call to java.lang.Math | NonReproducibleMathCall |
Non-serializable class with 'readObject()' or 'writeObject()' | NonSerializableClassWithSerializationMethods |
Non-serializable class with 'serialVersionUID' | NonSerializableClassWithSerialVersionUID |
Non-serializable field in a Serializable class | NonSerializableFieldInSerializableClass |
Non-serializable object bound to HttpSession | NonSerializableObjectBoundToHttpSession |
Non-serializable object passed to ObjectOutputStream | NonSerializableObjectPassedToObjectStream |
Non-short-circuit boolean expression | NonShortCircuitBooleanExpression |
Non-static initializer | NonStaticInitializer |
Non-static inner class in secure context | NonStaticInnerClassInSecureContext |
Non-synchronized method overrides synchronized method | NonSynchronizedMethodOverridesSynchronizedMethod |
Number comparison using '==', instead of 'equals()' | NumberEquality |
Number constructor call with primitive argument | CachedNumberConstructorCall |
Numeric cast that loses precision | NumericCastThatLosesPrecision |
Object allocation in loop | ObjectAllocationInLoop |
Object comparison using ==, instead of 'equals()' | ObjectEquality |
Object.equals(null) | ObjectEqualsNull |
Octal and decimal integers in same array | OctalAndDecimalIntegersInSameArray |
Octal integer | OctalInteger |
Overloaded methods with same number of parameters | OverloadedMethodsWithSameNumberOfParameters |
Overloaded variable argument method | OverloadedVarargsMethod |
Overly broad 'catch' block | OverlyBroadCatchBlock |
Overly complex anonymous inner class | OverlyComplexAnonymousInnerClass |
Overly complex arithmetic expression | OverlyComplexArithmeticExpression |
Overly complex boolean expression | OverlyComplexBooleanExpression |
Overly complex class | OverlyComplexClass |
Overly complex method | OverlyComplexMethod |
Overly coupled class | OverlyCoupledClass |
Overly coupled method | OverlyCoupledMethod |
Overly large initializer for array of primitive type | OverlyLargePrimitiveArrayInitializer |
Overly long method | OverlyLongMethod |
Overly nested method | OverlyNestedMethod |
Overly-strong type cast | OverlyStrongTypeCast |
Overridable method call during object construction | OverridableMethodCallDuringObjectConstruction |
Overridden method call during object construction | OverriddenMethodCallDuringObjectConstruction |
Package-visible field | PackageVisibleField |
Package-visible inner class | PackageVisibleInnerClass |
Parameter hides member variable | ParameterHidesMemberVariable |
Parameter name differs from parameter in overridden method | ParameterNameDiffersFromOverriddenParameter |
Pointless 'indexOf()' comparison | PointlessIndexOfComparison |
Pointless arithmetic expression | PointlessArithmeticExpression |
Pointless bitwise expression | PointlessBitwiseExpression |
Pointless boolean expression | PointlessBooleanExpression |
Private member access between outer and inner classes | PrivateMemberAccessBetweenOuterAndInnerClass |
Private method only used from inner class | MethodOnlyUsedFromInnerClass |
Prohibited exception caught | ProhibitedExceptionCaught |
Prohibited exception declared | ProhibitedExceptionDeclared |
Prohibited exception thrown | ProhibitedExceptionThrown |
Protected field | ProtectedField |
Protected inner class | ProtectedInnerClass |
Public field | PublicField |
Public inner class | PublicInnerClass |
Public method not exposed in interface | PublicMethodNotExposedInInterface |
Public method without logging | PublicMethodWithoutLogging |
Public static array field | PublicStaticArrayField |
Public static collection field | PublicStaticCollectionField |
Questionable name | QuestionableName |
Raw use of parameterized class | RawUseOfParameterizedType |
RecordStore opened but not safely closed | RecordStoreOpenedButNotSafelyClosed |
Redundant '.substring(0)' | SubstringZero |
Redundant 'String.toString()' | RedundantStringToString |
Redundant 'if' statement | RedundantIfStatement |
Redundant String constructor call | RedundantStringConstructorCall |
Redundant conditional expression | RedundantConditionalExpression |
Redundant field initialization | RedundantFieldInitialization |
Redundant import | RedundantImport |
Redundant interface declaration | RedundantInterfaceDeclaration |
Redundant local variable | UnnecessaryLocalVariable |
Redundant no-arg constructor | RedundantNoArgConstructor |
Reflective access to a source-only annotation | ReflectionForUnavailableAnnotation |
Refused bequest | RefusedBequest |
Result of method call ignored | ResultOfMethodCallIgnored |
Result of object allocation ignored | ResultOfObjectAllocationIgnored |
Return of 'null' | ReturnOfNull |
Return of 'this' | ReturnOfThis |
Return of Collection or array field | ReturnOfCollectionOrArrayField |
Return of Date or Calendar field | ReturnOfDateField |
Reuse of local variable | ReuseOfLocalVariable |
Scope of variable is too broad | TooBroadScope |
Serializable class in secure context | SerializableClassInSecureContext |
Serializable class with unconstructable ancestor | SerializableClassWithUnconstructableAncestor |
Serializable class without 'readObject()' and 'writeObject()' | SerializableHasSerializationMethods |
Serializable class without 'serialVersionUID' | serial |
Serializable non-static inner class with non-Serializable outer class | SerializableInnerClassWithNonSerializableOuterClass |
Serializable non-static inner class without 'serialVersionUID' | SerializableNonStaticInnerClassWithoutSerialVersionUID |
Set replaceable by EnumSet | SetReplaceableByEnumSet |
Shift operation by inappropriate constant | ShiftOutOfRange |
Simplifiable JUnit assertion | SimplifiableJUnitAssertion |
Single character 'startsWith()' or 'endsWith()' | SingleCharacterStartsWith |
Single character string concatenation | SingleCharacterStringConcatenation |
Single character string parameter in 'String.indexOf()' call | SingleCharacterStringConcatenation |
Single class import | SingleClassImport |
Singleton | Singleton |
Socket opened but not safely closed | SocketOpenedButNotSafelyClosed |
Standard variable names | StandardVariableNames |
Statement with empty body | StatementWithEmptyBody |
Static collection | StaticCollection |
Static field referenced via subclass | StaticFieldReferencedViaSubclass |
Static import | StaticImport |
Static inheritance | StaticInheritance |
Static method naming convention | StaticMethodNamingConvention |
Static method only used from one other class | StaticMethodOnlyUsedInOneClass |
Static method referenced via subclass | StaticMethodReferencedViaSubclass |
Static variable may not be initialized | StaticVariableMayNotBeInitialized |
Static variable naming convention | StaticVariableNamingConvention |
Static variable of concrete class | StaticVariableOfConcreteClass |
Static variable used before initialization | StaticVariableUsedBeforeInitialization |
String comparison using '==', instead of 'equals()' | StringEquality |
String concatenation | StringConcatenation |
String concatenation in loop | StringContatenationInLoop |
String concatenation inside 'StringBuffer.append()' | StringConcatenationInsideStringBufferAppend |
StringBuffer constructor call with 'char' argument | NewStringBufferWithCharArgument |
StringBuffer field | StringBufferField |
StringBuffer or StringBuilder without initial capacity | StringBufferWithoutInitialCapacity |
Subtraction in compareTo() | SubtractionInCompareTo |
Suspicious 'Collections.toArray()' call | SuspiciousToArrayCall |
Suspicious 'System.arraycopy()' call | SuspiciousSystemArraycopy |
Suspicious indentation after control statement without braces | SuspiciousIndentAfterControlStatement |
Suspicious test for oddness | BadOddness |
Synchronization on 'this' | SynchronizeOnThis |
Synchronization on a Lock object | SynchroniziationOnLockObject |
Synchronization on a non-final field | SynchronizeOnNonFinalField |
Synchronization on an object initialized with a literal | SynchronizedOnLiteralObject |
TODO comment | TodoComment |
Tail recursion | TailRecursion |
Test method with incorrect signature | TestMethodWithIncorrectSignature |
Text label in 'switch' statement | TextLabelInSwitchStatement |
Throwable instance not thrown | ThrowableInstanceNeverThrown |
Transient field in non-serializable class | TransientFieldInNonSerializableClass |
Transient field is not initialized on deserialization | TransientFieldNotInitialized |
Type may be weakened | TypeMayBeWeakened |
Type parameter explicitly extends 'java.lang.Object' | TypeParameterExplicitlyExtendsObject |
Type parameter extends final class | TypeParameterExtendsFinalClass |
Type parameter hides visible type | TypeParameterHidesVisibleType |
Type parameter naming convention | TypeParameterNamingConvention |
Unary plus | UnaryPlus |
Unchecked exception class | UncheckedExceptionClass |
Unconditional 'wait()' call | UnconditionalWait |
Unconstructable JUnit TestCase | UnconstructableJUnitTestCase |
Unnecessarily qualified static usage | UnnecessarilyQualifiedStaticUsage |
Unnecessary 'continue' statement | UnnecessaryContinue |
Unnecessary 'default' for enum switch statement | UnnecessaryDefault |
Unnecessary 'final' for local variable | UnnecessaryFinalOnLocalVariable |
Unnecessary 'final' for method parameter | UnnecessaryFinalForMethodParameter |
Unnecessary 'return' statement | UnnecessaryReturnStatement |
Unnecessary 'this' qualifier | UnnecessaryThis |
Unnecessary boxing | UnnecessaryBoxing |
Unnecessary call to 'super()' | UnnecessaryCallToSuper |
Unnecessary code block | UnnecessaryCodeBlock |
Unnecessary enum modifier | UnnecessaryEnumModifier |
Unnecessary fully qualified name | UnnecessaryFullyQualifiedName |
Unnecessary interface modifier | UnnecessaryInterfaceModifier |
Unnecessary label on 'break' statement | UnnecessaryLabelOnBreakStatement |
Unnecessary label on 'continue' statement | UnnecessaryLabelOnContinueStatement |
Unnecessary parentheses | UnnecessaryParentheses |
Unnecessary qualifier for 'this' | UnnecessaryQualifierForThis |
Unnecessary semicolon | UnnecessarySemicolon |
Unnecessary temporary object in conversion from String | UnnecessaryTemporaryOnConversionFromString |
Unnecessary temporary object in conversion to String | UnnecessaryTemporaryOnConversionToString |
Unnecessary unary minus | UnnecessaryUnaryMinus |
Unnecessary unboxing | UnnecessaryUnboxing |
Unpredictable BigDecimal constructor call | UnpredictableBigDecimalConstructorCall |
Unqualified instance field access | UnqualifiedFieldAccess |
Unqualified static usage | UnqualifiedStaticUsage |
Unsafe lazy initialization of static field | NonThreadSafeLazyInitialization |
Unused 'catch' parameter | UnusedCatchParameter |
Unused import | UnusedImport |
Unused label | UnusedLabel |
Use of '$' in identifier | DollarSignInName |
Use of 'assert' as identifier | AssertAsIdentifier |
Use of 'enum' as identifier | EnumAsIdentifier |
Use of AWT peer class | UseOfAWTPeerClass |
Use of DriverManager to get JDBC connection | CallToDriverManagerGetConnection |
Use of Properties object as a Hashtable | UseOfPropertiesAsHashtable |
Use of StringTokenizer | UseOfStringTokenizer |
Use of System.out or System.err | UseOfSystemOutOrSystemErr |
Use of archaic system property accessors | UseOfArchaicSystemPropertyAccessors |
Use of concrete JDBC driver class | UseOfJDBCDriverClass |
Use of index 0 in JDBC ResultSet | UseOfIndexZeroInJDBCResultSet |
Use of java.lang.ProcessBuilder class | UseOfProcessBuilder |
Use of java.lang.reflect | JavaLangReflect |
Use of obsolete collection type | UseOfObsoleteCollectionType |
Use of sun.* classes | UseOfSunClasses |
Using 'Random.nextDouble()' to get random integer | UsingRandomNextDoubleForRandomInteger |
Utility class | UtilityClass |
Utility class with public constructor | UtilityClassWithPublicConstructor |
Utility class without private constructor | UtilityClassWithoutPrivateConstructor |
Value of ++ or -- used | ValueOfIncrementOrDecrementUsed |
Variable argument method | VariableArgumentMethod |
Variables of different types in one declaration | VariablesOfDifferentTypesInDeclaration |
Volatile array field | VolatileArrayField |
Volatile long or double field | VolatileLongOrDoubleField |
While loop spins on field | WhileLoopSpinsOnField |
Zero-length array allocation | ZeroLengthArrayAllocation |
expression.equals("literal") rather than "literal".equals(expression) | LiteralAsArgToStringEquals |
java.lang import | JavaLangImport |
java.lang.Error not rethrown | ErrorNotRethrown |
java.lang.ThreadDeath not rethrown | ThreadDeathNotRethrown |