PMD 6.36.0 发布,多语言静态代码自动分析工具
PMD 是一个代码分析器,能够帮助发现常见的编程问题,比如未使用的变量、空的 catch 块、不必要的对象创建等等。最初仅支持 Java 代码,目前还可支持 JavaScript、Salesforce.com Apex 和 Visualforce、PLSQL、Apache Velocity、XML 和 XSL 。
PMD 6.36.0 正式发布,本次更新内容如下:
改进的增量分析
长期以来,增量分析一直帮助我们的用户获得了更快的分析结果,然而,它的实现在检测运行时和类型解析类路径的变化时往往过于谨慎,产生不必要的缓存失效。我们现在已经改进了启发式方法,以消除一些错误的无效,并略微加快了缓存的的使用。
PMD 现在将忽略:
- 类路径中的非类文件和被引用的 jar/zip 文件;
- 更改 jar / zip 中文件条目的顺序;
- jar / zip 中文件元数据的更改;
新规则
-
新的 Apex 规则
[AvoidDebugStatements](<https://pmd.github.io/pmd-6.36.0/pmd_rules_apex_performance.html#avoiddebugstatements>)System.debug查找System.debug调用的用法。即使没有捕获调试日志,调试语句也会导致更长的事务并消耗 Apex CPU 时间。你可以像这样尝试这个规则:
<rule ref="category/apex/performance.xml/AvoidDebugStatements" /> -
新的 Apex 规则
[InaccessibleAuraEnabledGetter](<https://pmd.github.io/pmd-6.36.0/pmd_rules_apex_errorprone.html#inaccessibleauraenabledgetter>)AuraEnabled检查AuraEnabled获取器是公共的还是全局的。你可以像这样尝试这个规则:
<rule ref="category/apex/errorprone.xml/InaccessibleAuraEnabledGetter" />
重命名的规则
- Java 规则
BadComparison已被重命名为ComparisonWithNaN,以更好地反映该规则实际检测的内容。
修正的问题
- apex
- 避免调试语句,因为它影响性能;
- 新增规则,以检测不可访问的 AuraEnabled 获取器;
- CognitiveComplexity - "else if" 的增量不正确;
- core
- 错误加载样式表 cpdhtml.xslt;
- 在 SARIF 报告中添加 fullDescription 和标签;
- java-bestpractices
- #3340: [java] NullPointerException applying rule GuardLogStatement
- java-bestpractices
- GuardLogStatement:编译时常量参数误报
- UnusedAssignment 在增量 expr 中使用时报告未使用的变量;
- UnusedAssignment 在报告未使用的变量时误报;
- LiteralsFirstInComparisons 两个常量的误报;
- JUnitTestsShouldIncludeAssert 应该支持 Junit 5;
- NullPointerException 应用规则 GuardLogStatement;
- java-代码样式
- 更新 UnnecessaryImport 以识别 javadoc
@exception标签中导入类型的用法;
- 更新 UnnecessaryImport 以识别 javadoc
更多详情可查看:https://github.com/pmd/pmd/releases/tag/pmd_releases%2F6.36.0