java中的圈复杂度计算_java – 如何计算项目(不是类/函数)的圈复杂度?

整本书都是根据代码指标编写的,所以你很幸运,你提出了一个更具体的问题.对于Java圈复杂度,您可以找到超过圈复杂度5或6的方法数(您可以在此处选择数字).如果这个数字超过你方法数量的某个百分比,则整体圈复杂度很差.百分比的一个很好的数字完全取决于项目的大小,因此可能不是仅仅通过方法的数量来划分,而是可以通过使其对于大数字缓慢增长来减轻分区中的方法计数,例如一个平方根或对数,以便在项目增长时使其更稳定.

也许是这样的:

public double evaluateCyclomaticComplexity(List methodStats) {

int bad = 0;

for (MethodStat methodStat : methodStats)

if (methodStat.getCyclomaticComplexity() >= 6)

bad++;

double denominator = Math.sqrt(methodStats.size());

return bad * 100.0 / denominator;

}

返回的数字越小越好.对于非常糟糕的项目,这将返回大于100的东西.

分母函数应该表示随着代码库的增长,复杂性增长的速度有多快.通常情况下,随着代码的增长,您希望CC的功能越来越低,以便它保持可维护状态,因此随着项目大小的增加,增长速度会变慢.

测试它,调整它等等.最终,代码指标很难得到正确的,我可以在阅读几篇关于使用数字来表示“可维护性”的开源软件的期刊论文后证明这一点.如果花费足够的时间,我们在这里可以提出的任何事情都可能会大大改善.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值