4

ソナー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();
    }

ここでは多くのブロックを持っていますが、2 つのブロックとして考えています。

ソナー 3.4.1 によるこの重複検出の正確なプロセスを教えてください。

この http://docs.sonarsource.org/3.1/apidocs/src-html/org/sonar/plugins/cpd/SonarEngine.htmlで

一定のブロック サイズが 10 であることがわかりました。しかし、私の観察ではこれを関連付けることができます。

4

1 に答える 1

0

ブロックは、釣り合った中かっこの間のコード行です。一定のブロック サイズは、ブロック内に 10 行のコードが一致する必要があることを意味します。したがって、複製するには、これを試してください。

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

private void bar(){
//.... the same 10 lines of code
}
于 2013-02-13T07:02:45.937 に答える