Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 圈复杂度路径计数_Javascript_Cyclomatic Complexity - Fatal编程技术网

Javascript 圈复杂度路径计数

Javascript 圈复杂度路径计数,javascript,cyclomatic-complexity,Javascript,Cyclomatic Complexity,我正在读一本关于可测试JS的书,其中有一章是关于圈复杂度的,但它并没有真正告诉我们如何计算它。它只是说 圈复杂度是对代码中独立路径数量的度量 它给出了这个例子,说明它的圈复杂度为2: function sum(a, b) { if (typeof(a) !== typeof(b)) { throw new Error("Cannot sum different types!"); } else { return a + b; } } 因此

我正在读一本关于可测试JS的书,其中有一章是关于圈复杂度的,但它并没有真正告诉我们如何计算它。它只是说

圈复杂度是对代码中独立路径数量的度量

它给出了这个例子,说明它的圈复杂度为2:

function sum(a, b) {
    if (typeof(a) !== typeof(b)) {
        throw new Error("Cannot sum different types!");
    } else {
        return a + b;
    }
}
因此,我想知道这个虚构的示例是否具有3的圈复杂度:

function madeup(a) {
    if (typeof(a) === "string") {
        if (a === "some") {
            console.log("is a some");   
        } else {
            console.log("not a some");
        }
    } else {
        console.log("not a string");
    }
}
这是第4条:

function madeup(a) {
    if (typeof(a) === "string") {
        if (a === "some") {
            console.log("is a some");   
        } else {
            console.log("not a some");
        }
    } else {
        if (a === 5) {
            console.log("is a 5");  
        } else {
            console.log("not a 5");
        }
    }
}

是的,你数对了。我想这就是我所能说的

如果不确定,可以将函数放入,它将告诉您圈复杂度是什么。

在第一个示例中,“抛出新异常”和RETURN语句导致方法结束,所有变量都不在范围内

第二个和第三个示例中的方法都在代码的最后一行之后终止。第二个和第三个方法只在最后一行退出代码

如果在console.log方法之后有一个RETURN语句,那么您应该是正确的


目前,示例2和示例3的圈复杂度为1。

正如您所说,您只需计算路径。你算对了。谢谢,是的,我在IDE中使用这个jshint的特性来检查代码。