我的大多数 javascript 代码文件如下所示:
(function() {
var Foo = function() {
...
};
var Bar = function() {
...
};
...
}());
我尝试了很多计算代码圈复杂度的工具,它们都生成了错误的报告(从我的 Angular 来看),即:它们都将包装函数作为最复杂的函数.
问题是所有的报告都被这个事实严重扭曲了:包装函数通常占据了复杂性饼图的一半以上,而且所有的平均数都是有偏差的。
有没有办法获得我的代码的真实复杂性,而不会受到包装函数的影响?
所有这些工具都做错了吗?将我的代码包装在一个函数中以进行范围界定是我做错了吗(我不这么认为)?我在使用这些工具时做错了吗?
编辑
有人建议在计算复杂度之前删除包装函数,我很乐意这样做,但是有可靠的方法自动完成吗?请忽略这个并寻求适当的解决方案。
最佳答案
您可以使用 jsmeter.herokuapp.com在线或在 jsmeter-online 查看源代码使用 jsmeter通过诺亚彼得斯
我插入了这段代码:
(function () {
function testFunction(x) {
var y;
switch (x) {
case 1:
y = x;
break;
case 2:
y = x * 4;
break;
default:
y = 0;
break;
}
return y;
}
var FooBar = function () {
// ...
};
})();
它正确地将内部函数 testFunction
识别为更高的复杂度 (5),并且它被包装在一个具有复杂度 (1) 的匿名函数中。也适用于将函数声明为 var FooBar = function(){...}
看起来像您正在寻找的工具。
已弃用:jsmeter.info 的存档- 看起来当前域是垃圾邮件
关于javascript:包装函数的圈复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16335242/