是否有任何工具可用于计算Javascript中的循环复杂度?计算Javascript的环复杂度
我发现这是一个非常有用的指标,在过去,而在服务器端代码的工作,并希望能够使用它的客户端的JavaScript我写的。
是否有任何工具可用于计算Javascript中的循环复杂度?计算Javascript的环复杂度
我发现这是一个非常有用的指标,在过去,而在服务器端代码的工作,并希望能够使用它的客户端的JavaScript我写的。
我一直在研究一个JavaScript静态代码分析工具,它可以确定JavaScript的圈复杂度。您可以在这里尝试在线版本的jsmeter:http://jsmeter.info
因为圈复杂度评估计算关键字 数量“的话,交换机,而突破”等。每一个工具,用C工作将做的工作,比如 sourcemonitor: http://www.campwoodsw.com/sourcemonitor.html
其实,在JavaScript中更尝试modulize你的代码,你越会慢下来,所以把它当作一粒盐;)
编辑: 我真的不明白这是怎么回事这个答案,我得到另一个downvote,当我在我的答案,我告诉ag OOD工具,用于计算javascript中的圈复杂度, ,这尤其适用。
对于第二种说法,我的是来自经验评论,我从来没有告诉不modulize你的js代码,我只告诉使注意力做,因为往往有一个权衡速度,当我说话的速度我的意思是2个不同的放缓可能发生的:在下载时间和执行时间(以及类似PDA /智能手机,这是重要的慢速设备)。
由于这样的工具,经常开车到开发商编写更多的代码试图追逐较小的指数可能, 但在JS更多的代码遗憾,这意味着放缓可能发生,这些工具的过度使用是坏。 这些工具可以给你提示,其中你的代码可以改进,但你必须掌握如何使用该工具,而不是盲目依赖它。
所以,如果你再downvote我,请写在你解释你为什么这样做,讨论只能从中受益评论,感谢您和遗憾的发泄。
模块化你的代码是慢下来?这有什么意义? – MDCore 2008-10-17 04:33:06
其实它有意义,因为在JavaScript写更多的代码意味着更多的下载时间(是一个权衡所有知道btw),我写的JavaScript代码运行在非常缓慢的架构,所以,对我而言,这是一个重要的因素。我没有说“不要模块化”,我只是说“被警告” – kentaromiura 2008-10-17 06:29:44
我没有降低你的视觉效果,但它似乎并不像模块化那样降低了JavaScript中的代码,足以证明你的代码在程序风格。但我想这是一个个案的基础。 – 2009-12-13 19:41:39
您可以使用http://www.blunck.info/ccm.html的ccm工具。
它没有java脚本,c/C++和c#。它是免费的,可以在Windows上运行(也可以在Linux和Mac OS X上运行 - 使用单一框架)。
现在有也是衡量尺度:https://github.com/calmh/yardstick
它试图计算圈复杂度为惯用的Javascript,比处理例如jscheckstyle更多的情况下。
我帮着写JavaScript的项目进行软件的复杂性分析的工具:
它报告了一堆不同复杂程度的指标:行代码,大量的参数,圈复杂度,圈密度, Halstead复杂性度量,可维护性指数,一阶密度,变化成本和核心尺寸。
它在MIT许可证下发布,使用Node.js和Esprima JavaScript解析器构建。最近added support
npm i -g complexity-report
JSHint计算代码度量:它可以通过NPM安装,就像这样。您可以为the number of formal parameters allowed(maxparams),how deeply nested code blocks should be(MAXDEPTH),the number of statements allowed per function(maxstatements)设置的最大值,以及the maximum cyclomatic complexity(maxcomplexity)。
每功能允许形式参数的最大数量
/*jshint maxparams:3 */
function login(request, onSuccess) {
// ...
}
// JSHint: Too many parameters per function (4).
function logout(request, isManual, whereAmI, onSuccess) {
// ...
}
每功能允许嵌套代码块的最大数量
/*jshint maxdepth:2 */
function main(meaning) {
var day = true;
if (meaning === 42) {
while (day) {
shuffle();
if (tired) { // JSHint: Blocks are nested too deeply (3).
sleep();
}
}
}
}
每功能允许语句的最大数目
/*jshint maxstatements:4 */
function main() {
var i = 0;
var j = 0;
// Function declarations count as one statement. Their bodies
// don't get taken into account for the outer function.
function inner() {
var i2 = 1;
var j2 = 1;
return i2 + j2;
}
j = i + j;
return j; // JSHint: Too many statements per function. (5)
}
的http://jshint.com新版本出来,并具有很好的圈复杂度计算器
我提出我的jsmeter工具,一个新的网站:http://jsmeter.info – Noah 2010-08-22 02:26:15