如何更改PMD的复制粘贴检测器(CPD)报告输出

时间:2015-10-30 17:31:58

标签: report output pmd cpd

我想修改CPD以仅在生成报告时吐出Found a X line (Y tokens) duplication in the following files: ...,即禁止源代码行。我有/ src / files并尝试通过注释来修改/ 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?

1 个答案:

答案 0 :(得分:1)

有不同的方法可以实现这一目标:

  1. 完全不使用egrep修改PMD / CPD。你可以,例如对报告进行过滤后:

    bin/run.sh cpd --minimum-tokens 100 --files src --encoding UTF-8 \
      | egrep "^Found a |^Starting at line "
    

    现在只输出以“Found a”或“Starting at line”开头的行。

  2. 修改PMD / CPD以调整报告格式。但是,我建议将此修改后的报告格式作为单独的格式实施,例如将其命名为“text_without_sources”,而不是更改默认格式。然后,您将使用bin/run.sh cpd --format text_without_sources ...调用CPD。

    在这种情况下,您需要从源代码构建PMD。 PMD使用Maven来构建(您可以在开发期间使用eclipse - 但是包使用maven构建)。在https://github.com/pmd/pmd克隆源的顶级目录中mvn clean package之后,您将在目录pmd-dist/target/中找到二进制文件。

    查看报告在CPDConfiguration.java中的集成方式 - 您可以添加自己的SimpleRenderer版本。

  3. https://sourceforge.net/p/pmd/bugs/

  4. 处创建功能请求