是否有任何工具可用于计算每种方法的平均代码行数?
我想知道每种方法的平均大小,而不仅仅是项目中的总行数。每个方法计数将允许我测量每种方法的简单程度。
这将作为构建过程的一部分进行计算,并显示在仪表板上。我们的想法是,我们可以看到每种方法的平均大小是否在增加。这将标志着代码复杂性增加的可能性,我们可能需要考虑重构。
答案 0 :(得分:1)
执行递归“for(i in this)”搜索项目,如果对象(i)是函数,则调用“test.toString()。split(”\ n“)。length”。这会计算函数中的换行符数。如果它不是函数,而是对象,则在该对象中调用此函数。还要计算找到的函数数量,然后将换行符的总数除以函数总数,然后得到平均值。
修改
function calculateMethodSize(obj){
var fcount = 0;
var fsize = 0;
for(i in obj){
if(obj[i] instanceof Function){
fcount++;
fsize += obj[i].toString().split(";\n").length;
}else if(obj[i] instanceof Object){
var ret = calculateMethodSize(obj[i]);
fcount += ret.fcount;
fsize += ret.fsize;
}
}
return {fsize:fsize, fcount:fcount};
}
var data = calculateMethodSize(this);
var average = data.fsize / data.fcount;
小心运行此代码。如果你像这样运行它,那么你可能会得到堆栈溢出(我做了)。
答案 1 :(得分:0)
我不确定是否这样做,但是在你之前的帖子之后搜索了什么是圈复杂度,我去了相关的维基百科页面,它指向Code Analyzer。 他们在那里说:
在计算HTML或JSP文件时,它会正确计算LoC 嵌入在< script>中的javascript和vbscript代码标签
我不知道是否按照方法调度此计数,但是可能值得一看(这是一个免费工具)。
答案 2 :(得分:0)
简短快速和脏:grep为“;”,计算行数,这将给出估计语句数。
答案 3 :(得分:0)
将行定义为“\ n”或“;”,
您可以尝试使用以下简单算法:
FOR each line in a javascript file (or chunk of text)
IF the line starts with "function " THEN
PUSH the first left-curly brace you find onto a stack
WHILE the stack is non-empty
PUSH any left-curly braces in the current line
POP any left-curly braces when you encounter a right-curly brace
Increment your line-count by 1
Increment your line counter (as mentioned in the FOR loop above)
END WHILE
Store your total lines for this function
ELSE
//ignore the line because it's probably a global var or blank
END IF
END FOR
我不知道可以自动执行此操作的工具。但是,尝试自己制作一个会很有趣。
答案 4 :(得分:0)
您可能也希望了解其他指标。无论如何计算线条, 只要确保在没有“function”关键字或花括号的情况下定义的函数不会出现问题。现实世界的例子:
var negate = bind1st(compose, not);
(这里否定是一个由函数bind1st构建的函数,compose而不是)