Rule Description KPI url
DoubleCheckedLocking Partially created objects can be returned by the Double Checked Locking pattern when used in Java. An optimizing JRE may assign a reference to the baz variable before it calls the constructor of the object the reference points to. Note: With Java 5, you can make Double checked locking work, if you declare the variable to be `volatile`. Robustness https://pmd.github.io/pmd/pmd_rules_java.html
AvoidUsingShortType Java uses the ‘short’ type to reduce memory usage, not to optimize calculation. In fact, the JVM does not have any arithmetic capabilities for the short type: the JVM must convert the short into an int, do the proper calculation and convert the int back to a short. Thus any storage gains found through use of the ‘short’ type may be offset by adverse impacts on performance. Efficiency https://pmd.github.io/pmd/pmd_rules_java.html
ConstructorCallsOverridableMethod Calling overridable methods during construction poses a risk of invoking methods on an incompletely constructed object and can be difficult to debug. It may leave the sub-class unable to construct its superclass or forced to replicate the construction process completely within itself, losing the ability to call super(). If the default constructor contains a call to an overridable method, the subclass may be completely uninstantiable. Note that this includes method calls throughout the control flow graph – i.e., if a constructor Foo() calls a private method bar() that calls a public method buz(), this denotes a problem. Accuracy https://pmd.github.io/pmd/pmd_rules_java.html
CloseResource Ensure that resources (like Connection, Statement, and ResultSet objects) are always closed after use. Resource Utilization https://pmd.github.io/pmd/pmd_rules_java.html
NonThreadSafeSingleton Non-thread safe singletons can result in bad state changes. Eliminate static singletons if possible by instantiating the object directly. Static singletons are usually not needed as only a single instance exists anyway. Other possible fixes are to synchronize the entire method or to use an initialize-on-demand holder class (do not use the double-check idiom). Robustness https://pmd.github.io/pmd/pmd_rules_java.html
VariableNamingConventions A variable naming conventions rule – customize this to your liking. Currently, it checks for final variables that should be fully capitalized and non-final variables that should not include underscores. Understandability https://pmd.github.io/pmd/pmd_rules_java.html
MethodNamingConventions Method names should always begin with a lower case character, and should not contain underscores. Understandability https://pmd.github.io/pmd/pmd_rules_java.html
ClassNamingConventions Class names should always begin with an upper case character. Understandability https://pmd.github.io/pmd/pmd_rules_java.html
AvoidThrowingNullPointerException Avoid throwing NullPointerExceptions. These are confusing because most people will assume that the virtual machine threw it. Consider using an IllegalArgumentException instead; this will be clearly seen as a programmer-initiated exception. Analyzability https://pmd.github.io/pmd/pmd_rules_java.html