PMD 是一个代码分析器,能够帮助发现常见的编程问题,比如未使用的变量、空的 catch 块、不必要的对象创建等等。最初仅支持 Java 代码,目前还可支持 JavaScript、Apex 和 Visualforce、PLSQL、Apache Velocity、XML 和 XSL 。
PMD 6.51 正式发布,本次更新内容如下:
新规则
- 新的 Apex 规则
ApexUnitTestClassShouldHaveRunAs
,确保单元测试至少使用一次System.runAs() 。测试更加健壮,并且独立于运行它的用户。
<rule ref="category/apex/bestpractices.xml/ApexUnitTestClassShouldHaveRunAs"/>
该规则是 quickstart.xml 规则集的一部分。
修改规则
- Java 规则
TestClassWithoutTestCases
有一个新属性testClassPattern
,用于按名称检测空测试类。以前此规则只能正确检测空的 JUnit3 测试用例。要切换回旧行为,可以将此属性设置为空值,从而禁用按模式检测测试类。
已修复的问题
- apex
- #4149 : [apex] 新规则:ApexUnitTestClassShouldHaveRunAs
- java-最佳实践
- #4140 : [java] [doc] 使用 Java 11 隐藏的 AccessorClassGeneration 违规
- java代码风格
- #4139 : [java] UnnecessaryFullyQualifiedName FP 当当前包中存在相同的简单类名时
- java文档
- #4141 : [java] UncommentedEmptyConstructor FP 当构造函数使用 @Autowired 注释时
- java性能
- #1167 : [java] AvoidArrayLoops 双重赋值误报
- #2080 : [java] StringToString 规则误报与字段访问
- #2692 : [java] [doc] AvoidArrayLoops 将同一数组中的复制分配标记为次优
- #3437 : [java] StringToString 不会在 Bar.class.getSimpleName().toString() 上触发
- #3681 : [java] StringToString 不会在字符串文字上触发
- #3847 : [java] AvoidArrayLoops 应该考虑最终变量
- #3977 : [java] StringToString 误报与本地方法名称混淆
- #4091 : [java] 使用 do-while 循环避免ArrayLoops 误报
- #4148 : [java] UseArrayListInsteadOfVector 在导入其他类时忽略 Vector
- java 容易出错
- #929 : [java] 与 TestClassWithoutTestCases 不一致的结果
- #2636 : [java] TestClassWithoutTestCases 误报 JUnit5 ParameterizedTest
- javascript
- #4165 : [javascript] InaccurateNumericLiteral 下划线分隔符号误报
更多详情可查看:https://github.com/pmd/pmd/releases/tag/pmd_releases%2F6.51.0