声纳CPD检测块重复

时间:2013-02-13 06:53:12

标签: java sonarqube cpd

我已经对sonar cpd如何检测到重复块做了很多分析。但是我无法准确触发检测块或代码行所需的过程。具有任何最小行数。

例如,如果我写的如下,它没有检测到任何代码重复,即使我重复了20次。

        System.out.println("this is good");
        System.out.println("this is good");

        System.out.println("this is good");
        System.out.println("this is good");

        System.out.println("this is good");

        System.out.println("this is good");

        System.out.println("this is good");

        System.out.println("this is good");

        System.out.println("this is good");

        System.out.println("this is good");

后来我尝试过块重复

     try
    {
    connection = null;
    }
    catch(Exception e){
        e.printStackTrace();
    }
    try
    {
    connection = null;
    }
    catch(Exception e){
        e.printStackTrace();
    }
    try{
    connection = null;
    }
    catch(Exception e){
        e.printStackTrace();
    }
    try{
    connection = null;
    }
    catch(Exception e){
        e.printStackTrace();
    }

这里考虑的是两块,即使它有很多块。

请通过声纳3.4.1

告知我此重复检测的确切过程

在此 http://docs.sonarsource.org/3.1/apidocs/src-html/org/sonar/plugins/cpd/SonarEngine.html

我发现一个恒定的块大小为10.但我能够在观察中将其与此相关联。

1 个答案:

答案 0 :(得分:0)

块是平衡括号之间的代码行。常量块大小意味着块中必须有10行代码才能匹配。所以要重复试试这个。

public void foo(){
//... 10 lines of code
}

private void bar(){
//.... the same 10 lines of code
}