是否有任何工具可用于计算每种方法的平均代码行数?
我想知道每种方法的平均大小,而不仅仅是项目中的总行数。每个方法计数将使我能够衡量每种方法的简单程度。
这将作为构建过程的一部分进行计算,并显示在仪表板上。这个想法是我们可以看到每种方法的平均大小是否在增加。这将标志着代码复杂性正在增加的可能性,我们可能需要考虑重构。
是否有任何工具可用于计算每种方法的平均代码行数?
我想知道每种方法的平均大小,而不仅仅是项目中的总行数。每个方法计数将使我能够衡量每种方法的简单程度。
这将作为构建过程的一部分进行计算,并显示在仪表板上。这个想法是我们可以看到每种方法的平均大小是否在增加。这将标志着代码复杂性正在增加的可能性,我们可能需要考虑重构。
在您的项目中进行递归“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;
不过要小心运行此代码。如果你用这个运行它,就像我所做的那样,那么你可能会遇到堆栈溢出(我做过)。
short fast and dirty : grep for ";",计算行数,这会给你一个语句数的估计。
您可能还想了解其他指标。无论如何计算行数,只要确保它不会面对没有“function”关键字或花括号定义的函数。现实世界的例子:
var negate = bind1st(compose, not);
(这里的 negate 是从函数 bind1st、compose 和 not 构建的函数)
将行定义为“\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
我不知道可以自动执行此操作的工具。但是,尝试自己制作一个会很有趣。
我不确定它是否这样做,但是在您之前的帖子之后搜索什么是圈复杂度,我去了指向代码分析器的相关维基百科页面。他们在那里说:
在计算 HTML 或 JSP 文件时,它将正确计算嵌入在 <script> 标记中的 javascript 和 vbscript 代码的 LoC。
我不知道这个计数是否按方法分派,但可能值得一看(它是一个免费工具)。