如何更改 PMD 的复制粘贴检测器 (CPD) 报告输出
How to change PMD's Copy Paste Detector (CPD) report output
我想修改 CPD 以仅在生成报告时吐出 Found a X line (Y tokens) duplication in the following files: ...
,即抑制源代码行。我有 /src/ 文件并试图通过注释掉
来修改 /src/net/sourceforge/pmd/cpd/ 中的 SimpleRenderer.java
String source = match.getSourceCodeSlice();
if (trimLeadingWhitespace) {
String[] lines = source.split("[" + PMD.EOL + "]");
int trimDepth = StringUtil.maxCommonLeadingWhitespaceForAll(lines);
if (trimDepth > 0) {
lines = StringUtil.trimStartOn(lines, trimDepth);
}
for (int i=0; i<lines.length; i++) {
rpt.append(lines[i]).append(PMD.EOL);
}
return;
}
但是报告没有改变。我有点 Java 新手,所以请记住这一点。我需要以某种方式在 Eclipse 中重建 pmd-4.2.x 吗?
有不同的方法可以实现:
使用 egrep 完全不修改 PMD/CPD。你可以例如post-筛选报告:
bin/run.sh cpd --minimum-tokens 100 --files src --encoding UTF-8 \
| egrep "^Found a |^Starting at line "
这将只输出以 "Found a " 或 "Starting at line " 开头的行。
正在修改PMD/CPD以调整报告格式。但是,我建议将这种修改后的报告格式作为一种单独的格式来实施,例如将其命名为 "text_without_sources",而不是更改默认格式。然后,您可以使用 bin/run.sh cpd --format text_without_sources ...
.
调用 CPD
在这种情况下,您需要从源代码构建 PMD。 PMD 使用 Maven to build (you can use eclipse during development - but the package is built with maven). After a mvn clean package
in the top-directory of the cloned sources from https://github.com/pmd/pmd 你会在目录 pmd-dist/target/
.
中找到二进制文件
查看报告如何集成到 CPDConfiguration.java - 您可以添加自己的 SimpleRenderer 版本。
创建功能请求
我想修改 CPD 以仅在生成报告时吐出 Found a X line (Y tokens) duplication in the following files: ...
,即抑制源代码行。我有 /src/ 文件并试图通过注释掉
String source = match.getSourceCodeSlice();
if (trimLeadingWhitespace) {
String[] lines = source.split("[" + PMD.EOL + "]");
int trimDepth = StringUtil.maxCommonLeadingWhitespaceForAll(lines);
if (trimDepth > 0) {
lines = StringUtil.trimStartOn(lines, trimDepth);
}
for (int i=0; i<lines.length; i++) {
rpt.append(lines[i]).append(PMD.EOL);
}
return;
}
但是报告没有改变。我有点 Java 新手,所以请记住这一点。我需要以某种方式在 Eclipse 中重建 pmd-4.2.x 吗?
有不同的方法可以实现:
使用 egrep 完全不修改 PMD/CPD。你可以例如post-筛选报告:
bin/run.sh cpd --minimum-tokens 100 --files src --encoding UTF-8 \ | egrep "^Found a |^Starting at line "
这将只输出以 "Found a " 或 "Starting at line " 开头的行。
正在修改PMD/CPD以调整报告格式。但是,我建议将这种修改后的报告格式作为一种单独的格式来实施,例如将其命名为 "text_without_sources",而不是更改默认格式。然后,您可以使用
调用 CPDbin/run.sh cpd --format text_without_sources ...
.在这种情况下,您需要从源代码构建 PMD。 PMD 使用 Maven to build (you can use eclipse during development - but the package is built with maven). After a
中找到二进制文件mvn clean package
in the top-directory of the cloned sources from https://github.com/pmd/pmd 你会在目录pmd-dist/target/
.查看报告如何集成到 CPDConfiguration.java - 您可以添加自己的 SimpleRenderer 版本。
- 创建功能请求