Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
pmd-doc-5.5.4.zip | 2017-02-25 | 60.4 MB | |
pmd-src-5.5.4.zip | 2017-02-25 | 28.3 MB | |
pmd-bin-5.5.4.zip | 2017-02-25 | 58.8 MB | |
PMD 5.5.4 (25-Februar-2017).tar.gz | 2017-02-25 | 27.0 MB | |
PMD 5.5.4 (25-Februar-2017).zip | 2017-02-25 | 28.3 MB | |
README.md | 2017-02-25 | 4.8 kB | |
Totals: 6 Items | 202.7 MB | 0 |
PMD Release Notes
25-Februar-2017 - 5.5.4
The PMD team is pleased to announce PMD 5.5.4
Table Of Contents
New and noteworthy
New Rules
AccessorMethodGeneration (java-design)
When accessing a private field / method from another class, the Java compiler will generate a accessor methods with package-private visibility. This adds overhead, and to the dex method count on Android. This situation can be avoided by changing the visibility of the field / method from private to package-private.
For instance, it would report violations on code such as:
public class OuterClass {
private int counter;
/* package */ int id;
public class InnerClass {
InnerClass() {
OuterClass.this.counter++; // wrong, accessor method will be generated
}
public int getOuterClassId() {
return OuterClass.this.id; // id is package-private, no accessor method needed
}
}
}
This new rule is part of the java-design
ruleset.
Modified Rules
- The Java rule
UnusedModifier
(ruleset java-unusedcode) has been expanded to consider more redundant modifiers. - Annotations marked as
abstract
. - Nested annotations marked as
static
. - Nested annotations within another interface or annotation marked as
public
. - Classes, interfaces or annotations nested within an annotation marked as
public
orstatic
. - Nested enums marked as
static
. - The Java rule
UnnecessaryLocalBeforeReturn
(ruleset java-design) no longer requires the variable declaration and return statement to be on consecutive lines. Any variable that is used solely in a return statement will be reported.
Fixed Issues
- General
- #234: [core] Zip file stream closes spuriously when loading rulesets
- #256: [core] shortnames option is broken with relative paths
- apex-complexity
- #251: [apex] NCSS Type length is incorrect when using method chaining
- apex-security
- #264: [apex] ApexXSSFromURLParamRule shouldn't enforce ESAPI usage. String.escapeHtml4 is sufficient.
- java-basic
- #232: [java] SimplifiedTernary: Incorrect ternary operation can be simplified.
- java-coupling
- #270: [java] LoD false positive
- java-design
- #933: [java] UnnecessaryLocalBeforeReturn false positive for SuppressWarnings annotation
- #1496: [java] New Rule: AccesorMethodGeneration - complements accessor class rule
- #216: [java] [doc] NonThreadSafeSingleton: Be more explicit as to why double checked locking is not recommended
- #219: [java] UnnecessaryLocalBeforeReturn: ClassCastException in switch case with local variable returned
- #240: [java] UnnecessaryLocalBeforeReturn: Enhance by checking usages
- java-optimizations
- #215: [java] RedundantFieldInitializer report for annotation field not explicitly marked as final
- java-unusedcode
- #246: [java] UnusedModifier doesn't check annotations
- #247: [java] UnusedModifier doesn't check annotations inner classes
- #248: [java] UnusedModifier doesn't check static keyword on nested enum declaration
- #257: [java] UnusedLocalVariable false positive
External Contributions
- #227: [apex] Improving detection of getters
- #228: [apex] Excluding count from CRUD/FLS checks
- #229: [apex] Dynamic SOQL is safe against Integer, Boolean, Double
- #231: [apex] CRUD/FLS rule - add support for fields
- #266: [java] corrected invalid reporting of LoD violation
- #268: [apex] Support safe escaping via String method
- #273: [apex] Shade jackson on apex