1 通过pmd-cli源码调试时,需要确保需要调试的模块在pom.xml中的scope不是test。
设置参数后运行,将报找不到category/java/bestpractices.xml 的错误。
将scope注释即可,如果调试其他模块功能,注释对应模块即可。
2 pmd规则文件中描述修改为中文乱码问题
例如修改category/java/codestyle.xml中的描述为中文后,检测报告中的问题描述信息显示乱码。需要设置环境变量PMD_JAVA_OPTS值为-Dfile.encoding=UTF-8 即可解决问题。
<rule name="AtLeastOneConstructor"
language="java"
since="1.04"
message="每个类应至少声明一个构造函数"
class="net.sourceforge.pmd.lang.java.rule.codestyle.AtLeastOneConstructorRule"
externalInfoUrl="${pmd.website.baseurl}/pmd_rules_java_codestyle.html#atleastoneconstructor">
<description>
< 来检测这些类。
]]>
</description>
<priority>3</priority>
<example>
<![CDATA[
public class Foo {
// missing constructor
public void doSomething() { ... }
public void doOtherThing { ... }
}
]]>
</example>
</rule>
环境变量设置
如果cmd窗口显示乱码,可能是cmd窗口需要设置编码。
chcp 65001
65001
是 UTF-8 编码页。更改编码后,CMD 应该能够正确显示中文字符。