计算圈复杂度为Javascript [关闭](Calculate Cyclomatic Comple

2019-07-28 20:55发布

是否有任何工具可在Javascript计算圈复杂度?

我发现这是一个非常有用的指标,在​​过去的服务器端代码工作时,并希望能够使用它的客户端的JavaScript我写的。

Answer 1:

我帮着写的工具对JavaScript的执行项目软件的复杂性分析:

复杂性报告

它报告一群不同的复杂度指标:代码行,多个参数,圈复杂,圈密度,霍尔斯特德复杂措施,可维护性索引,一阶密度,变化的成本和核心大小。

它是在MIT许可下发布的,并了解如何使用Node.js和内置Esprima JavaScript分析器。 它可以通过NPM安装,就像这样:

npm i -g complexity-report


Answer 2:

对于答案的完整性,我前一段时间寻找同样的工具,并没有发现任何行之有效的可视化,所以我写了柏拉图

样品报告:

  • jQuery的
  • 咕噜
  • marionettejs

它采用了菲尔的复杂性报告(如上所述),也从jshint汇总数据(最终,其他)。



Answer 3:

因为圈复杂度评估计算关键字的数量“的话,交换机,而突破”等。每一个与C工作工具,将做的工作,比如sourcemonitor: http://www.campwoodsw.com/sourcemonitor.html

事实上,在JavaScript中更尝试modulize你的代码,你越会慢下来,所以把它当作一粒盐;)

编辑:我真的不明白这是怎么回事这个答案,我得到另一个downvote,当我的回答,我告诉尤其是作品中的JavaScript计算圈复杂度的好工具,这非常好。

对于第二个说法,我的是来自经验评论,我从来不告诉不modulize你的js代码 ,我只能告诉做出关注这样做 ,因为经常有与速度的权衡,当我说话的速度我的意思是2个不同的放缓可能发生:在下载时间执行时间 (和类似PDA /智能手机慢的设备,这是很重要)。

由于这样的工具,经常开车到开发商编写更多的代码试图追逐较小的指数可能的,但在JS更多的代码遗憾,这意味着放缓可能发生,这些工具的过度使用是坏的。 Surelly这些工具可以给你的地方你的代码可以提高线索,但你已经掌握了如何使用工具,而不是blindy依赖它。

所以,如果你再downvote我,请写在你解释你为什么这样做,讨论只能从中受益评论,感谢您和遗憾的发泄。



Answer 4:

JSHint最近增加了支持计算代码度量。 您可以设置最大值形式参数允许的数量 (maxparams), 嵌套的代码块应该有多深是 (MAXDEPTH), 每个功能允许的语句数 (maxstatements),以及最大圈复杂度 (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)
}


Answer 5:

新版本的http://jshint.com是出来,并具有很好的圈复杂度计算器



Answer 6:

您可以使用来自CCM工具http://www.blunck.info/ccm.html 。

它的Java脚本,C / C ++和C#。 它是免费的,在Windows上运行(可以在Linux和Mac OS X上运行,以及 - 使用单框架)。



Answer 7:

现在有也是衡量尺度: https://github.com/calmh/yardstick

它试图计算圈复杂度为惯用的Javascript,比处理例如jscheckstyle更多的情况下。



文章来源: Calculate Cyclomatic Complexity for Javascript [closed]