Report 如何更改PMD';s复制粘贴检测器(CPD)报告输出

Report 如何更改PMD';s复制粘贴检测器(CPD)报告输出,report,output,pmd,cpd,Report,Output,Pmd,Cpd,我想修改CPD,以便只吐出以下文件中的发现X行(Y标记)重复:…生成报告时,即抑制源代码行。我有/src/文件,并试图通过注释掉来修改/src/net/sourceforge/pmd/cpd/中的SimpleRenderer.java String source = match.getSourceCodeSlice(); if (trimLeadingWhitespace) { String[] lines = source.split("[" + PMD.EOL + "]");

我想修改CPD,以便只吐出以下文件中的
发现X行(Y标记)重复:…
生成报告时,即抑制源代码行。我有/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;
}
String source=match.getSourceCodeSlice();
if(修剪引线空白){
字符串[]行=source.split(“[”+PMD.EOL+“]”);
int trimDepth=StringUtil.maxCommonLeadingWhitespaceForAll(行);
如果(修剪深度>0){
lines=StringUtil.trimStartOn(线条,trimStartOn);
}

对于(int i=0;i有不同的方法来实现这一点:

  • 使用egrep根本不修改PMD/CPD。例如,您可以对报告进行后期筛选:

    bin/run.sh cpd --minimum-tokens 100 --files src --encoding UTF-8 \
      | egrep "^Found a |^Starting at line "
    
    这将只输出以“find a”或“Starting at line”开头的行

  • 修改PMD/CPD以调整报告格式。但是,我建议将此修改后的报告格式作为一种单独的格式实施,例如,将其命名为“text\u without\u sources”,而不是更改默认格式。然后使用
    bin/run.sh CPD调用CPD--format text\u without\u sources…

    在这种情况下,您将需要从源代码构建PMD。PMD用于构建(您可以在开发过程中使用eclipse,但该包是使用maven构建的)。在从克隆源代码的顶部目录中创建
    mvn clean package
    后,您将在
    PMD dist/target/
    目录中找到二进制文件

    看看这些报告是如何集成到中的—您可以添加自己版本的SimpleRenderer

  • 在请求时创建功能


  • 仔细考虑后,我实际上希望通过将源代码格式更改为
    rpt.append(“”).append(mark.gettokenrscid()).append(match.getLineCount()).append(PMD.EOL)来吐出表单中的数据;
    ,但这需要您提供的第二个选项。
    mvn clean package
    生成一个1KB的jar,但我不确定如何执行run.sh cpd脚本以便它实际输出这种新格式。有帮助吗?