PMD 6.35.0 发布,多语言静态代码自动分析工具
PMD 是一个代码分析器,能够帮助发现常见的编程问题,比如未使用的变量、空的 catch 块、不必要的对象创建等等。最初仅支持 Java 代码,目前还可支持 JavaScript、Salesforce.com Apex 和 Visualforce、PLSQL、Apache Velocity、XML 和 XSL 。
PMD 6.35.0 正式发布,本次更新内容如下:
Javascript 模块现在至少需要 Java 8:
我们使用了最新版本的 JavaScript 实现 Rhino 用于解析 JavaScript 代码,至少需要 Java 8。因此我们决定将 pmd-javascript 模块也升级到 Java 8。这意味着,从现在开始,需要一个 Java 8 或更高版本的运行时,以便来分析 JavaScript 代码。PMD 核心仍然只需要 Java 7。
新规则:
此版本附带 3 个新的 Java 规则:
-
[JUnit5TestShouldBePackagePrivate](<https://pmd.github.io/pmd-6.35.0/pmd_rules_java_bestpractices.html#junit5testshouldbepackageprivate>)强制执行以下约定:JUnit 5 测试应该具有最小的可见性。您可以像下面这样尝试此规则:<rule ref="category/java/bestpractices.xml/JUnit5TestShouldBePackagePrivate" /> -
[CognitiveComplexity](<https://pmd.github.io/pmd-6.35.0/pmd_rules_java_design.html#cognitivecomplexity>)使用 cognitive complexity 指标来查找过于复杂的代码。该度量标准以多种方式改进了类似的循环复杂性,可以像下面这样尝试此规则:<rule ref="category/java/design.xml/CognitiveComplexity" /> -
[MutableStaticState](<https://pmd.github.io/pmd-6.35.0/pmd_rules_java_design.html#mutablestaticstate>)查找非最终的非私有静态字段。这些字段破坏了封装,因为可以在程序中的任何位置修改这些字段。可以像下面这样尝试此规则:
<rule ref="category/java/design.xml/MutableStaticState" />
修改后的规则:
- Java 规则
CompareObjectsWithEquals现在有一个新属性typesThatCompareByReference。通过这个属性,你可以配置应该通过引用进行比较被列入白名单的类型。默认情况下,java.lang.Enum 和 java.lang.Class 是允许的,但是你可以在这里添加自定义类型。 此外,现在还允许对常量进行比较;
废弃的规则:
- Java 规则 DefaultPackage 已经被弃用,取而代之的是 CommentDefaultAccessModifier;
- Java 规则 CloneThrowsCloneNotSupportedException 已被弃用,没有替换;
修复的问题:
- apex
- core
- doc
- #3230: [doc] 删除语言索引页的 "Edit me" 按钮;
- dist
- #2466: [dist] 分发存档不包括所有批处理脚本;
- java
- #3269: [java] 修复 MethodTypeResolution 中的 NPE;
- java-design
- javascript:
更多详情可查看:https://github.com/pmd/pmd/releases/tag/pmd_releases%2F6.35.0