PMD 6.34.0 发布,多语言静态代码自动分析工具
PMD 是一个代码分析器,能够帮助发现常见的编程问题,比如未使用的变量、空的 catch 块、不必要的对象创建等等。最初仅支持 Java 代码,目前还可支持 JavaScript、Salesforce.com Apex 和 Visualforce、PLSQL、Apache Velocity、XML 和 XSL 。
PMD 6.34.0 正式发布,本次更新内容如下:
新规则
- 新的 Java 规则
UseStandardCharsets可以查看Charset.forName.的使用情况,因此可以使用StandardCharsets来代替,该规则也是 Java 快速启动规则集(rulesets/java/quickstart.xml)的一部分; - 新的 Java 规则
UnnecessaryImport取代了以下规则UnusedImports、DuplicateImports、ImportFromSamePackage和DontImportJavaLang,该规则也是 Java 快速启动规则集(rulesets/java/quickstart.xml)的一部分;
修改后的规则
- Apex 规则
ApexCRUDViolation不再忽略 getters,并且还标记了 SOQL/SOSL/DML 操作在 getters 中没有访问许可检查。这对于 VF getter 方法将产生误报,但我们无法可靠地检测一个 getter 是否是 VF getter。在这种情况下,违规行为应该被制止。
废弃的规则
- java-bestpractices
UnusedImports: 使用UnnecessaryImport规则代替
- java-codestyle
DuplicateImports:使用UnnecessaryImport规则来代替。DontImportJavaLang:使用UnnecessaryImport规则来代替。
- java-errorprone
ImportFromSamePackage:使用UnnecessaryImport规则来代替。
修正的问题
- apex-performance
- OperationWithLimitsInLoopRule: 支持更多限制消耗的静态方法调用
- apex-security
- ApexCRUDViolationRule 未能报告 COUNT() 查询中的 CRUD 违规情况;
- ApexCRUDViolationRule 在非 VF getter 上误报;
- java-bestpractices
- 使用
StandardCharsets而不是Charset.forName; - UnusedAssignment 在有嵌套记录时崩溃;
- 使用
- java-codestyle
- 新规则 UnnecessaryImport,弃用 DuplicateImports、 ImportFromSamePackage、UnusedImports;
- java-errorprone
- CloseResource: 支持 Lombok 注解;
- CheckSkipResult: 使用模式绑定时的 NPE;
更多详情可查看:https://github.com/pmd/pmd/releases/tag/pmd_releases%2F6.34.0