了解圈复杂度

时间:2013-08-08 15:56:47

标签: checkstyle cyclomatic-complexity

我有一些基本上看起来像这样的代码:

public MyObject getData(boolean someFlag) {

    String select1 = "SELECT * FROM myTable WHERE someInteger = ?";
    SqlHostvariablen hostvars = new SqlHostvara();
    hostvars.addInteger(myField.getSomeInteger);
    String[][] selarray = SqlHelper.doSelectAsMatrix(select1, hostvars);
    if (selarray.length == 0) {
        throw new IllegalArgumentException("Nothing found");
    }
    MyObject foo = new MyObject();
    int i = 0;
    foo.setSomething1(selarray[0][i++]);
    foo.setSomething2(selarray[0][i++]);
    foo.setSomething3(selarray[0][i++]);
    foo.setSomething4(selarray[0][i++]);
    foo.setSomething5(selarray[0][i++]);
    foo.setSomething6(selarray[0][i++]);
    foo.setSomething7(selarray[0][i++]);
    foo.setSomething8(transformSomething8(selarray[0][i++]));
    foo.setSomething9(selarray[0][i++]);
    foo.setSomething10(selarray[0][i++]);
    String someValue1 = selarray[0][i++];
    String someValue2 = selarray[0][i++];
    foo.setSomething11(selarray[0][i++]);

    doSomethingWithFoo(foo, someFlag, someValue1, someValue2);
    doSomethingElseWithFoo(foo);

    return foo;
}

标识符和SQL语句是匿名的,但我的方法看起来是一样的。

现在Checkstyle声称如果这个方法是12,那么圈复复杂性。我一直以为我知道CC是什么,据我所知,我会说这个方法CC是2.有一个if创造了一个新的因此,通过代码和控制流程图的路径具有2个路径/出口点。我没有看到其他地方应该有通过代码的路径。

我完全错过了什么或者Checkstyle错了吗?

1 个答案:

答案 0 :(得分:2)

原来这是一个Checkstyle错误。虽然甚至没有清理问题就行了,但在系统重启之后,警告就消失了。 Eclipse重新启动可能已经足够了,无法确切知道。