圈复杂度的计算
程序环路复杂性也即为McCabe复杂性度量,它一般常用圈复杂度来描述,记录为V(G)。它用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表现为独立路径的条数,即合理地预防错误所需测试的最少路径条数,圈复杂度大的程序,说明其代码可能质量低且难于测试和维护。经验表明,程序的可能存在的Bug数和圈复杂度有着很大的相关性。
圈复杂度的计算方法很简单,计算公式为:V(G)=e-n+2。其中,e表示控制流图中边的数量,n表示控制流图中节点的数量。其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数,对应的计算公式为:V(G)=区域数=判定节点数+1。
对于多分支的CASE结构或IF-ELSEIF-ELSE结构,统计判定节点的个数时需要特别注意一点,要求必须统计全部实际的判定节点数,也即每个ELSEIF语句,以及每个CASE语句,都应该算为一个判定节点。判定节点在模块的控制流图中很容易被识别出来,所以,针对程序的控制流图计算圈复杂度V(G)时,最好还是采用第一个公式,也即V(G)=e-n+2;而针对模块的控制流图时,可以直接统计判定节点数,这样更为简单。
分享到:
相关推荐
圈复杂度插件
根据sonar分析结果,获取圈复杂度和方法来计算最大平均圈复杂度。
Cyclo-C语言的圈复杂度工具 原始版本的版权(c)1993 Roger Binns 更新版权(c)2016 Stephen L Arnold 这些工具由Roger Binns作为英国大学计算机科学系的四年级项目(作为计算机科学学位的一部分)生产,用于...
该脚本计算可从任何函数到达的函数的圈复杂度之和。 计算结果以_cc%d形式附加到函数名称中。 呈现结果 最近我开始相信将元信息存储在名称中,以便在浏览任何代码表示时立即可见(部分受此启发)。 话虽如此,将这些...
从圈复杂度谈谈代码质量.在软件行业里,几乎所有的开发人员都在谈代码质量,而每个人对代码质量都有一套自己的看法。甚至术语代码味道(codesmell)也已进入大众词汇表,成为描述代码需要改进的一种方式。 在软件...
如何计算程序圈复杂度,找出程序的线性独立路径
一个pybuilder插件,使用radon检查项目的圈复杂度。 有关radon的更多信息,请参考。 要将这个插件添加到您的pybuilder项目中,请在build.py顶部添加以下行: use_plugin ( 'pypi:pybuilder_radon' , '~=0.1.0' ) ...
函数的圈复杂度是根据以下规则计算的: 1 is the base complexity of a function +1 for each 'if', 'for', 'case', '&&' or '||' 具有较高圈复杂度的功能需要更多的测试用例才能覆盖所有可能的路径,并且可能更难...
Python复杂度计算 这个单一的软件包将McCabe和Campbell的力量联合起来,提供了Python代码的圈复杂度和认知复杂度测量。 调用方式 usage: run.py [-h] [-i FILENAME] [-d PROJECT_DIR] [-c] [--clear] Python code ...
该工具通过使用Profiler数据计算静态复杂度(Halstead指标)和动态复杂度来衡量模型的总体复杂度。
CCM概述CCM是一种工具,可以分析c,c ++,c#,javascript和TypeScript代码,并使用圈复杂度度量标准进行报告。 安装程序包含两个部分: CCM.exe; 一个命令行可执行文件,它将分析代码库并使用圈复杂度度量进行报告...
蜥蜴 Lizard是可扩展的Cyclomatic Complexity Analyzer,适用于许多... 它很重要nloc(无注释的代码行), CCN(圈复杂度数), 功能的令牌计数。 功能的参数计数。 您可以设置CCN限制(-C),参数数量(-a)。 超出
complexity并不打算直接模仿本文中的方法,尽管本文所讨论的动机(尤其是由于时间和语言要求而考虑到AST解析和分析的要求,尤其是避免计算圈复杂度( ))存在很大的重叠。 安装 带有Homebrew的MacOS brew tap ...
▄█▄ ▄ █ ██ ████▄ ▄▄▄▄▄ █▀▄▀█ ▄███▄ ▄▄▄▄▀ ▄███▄ █▄▄▄▄ █▀ ▀▄ █ █ █ █ █ █ █ ▀▄ █ █ █ █▀ ▀ ▀▀▀ █ █▀ ▀ █ ▄▀ █ ▀ ██▀▀█ █▄▄█ ...
Understand 源码阅读工具的说明书
解络器 用于测量 Clojure 代码复杂性的实验性 Leiningen 插件。 用法 将[uncomplexor "0.1.0-SNAPSHOT"]放入 ... 它模仿了圈复杂度的经典度量。 Uncomplexor 根据一个简单的公式计算复杂度数: function declar
sourceMonitor V2.6.3.104 计算圈复杂度的工具 代码重构的必备工具
1、从程序代码生成程序图 2、计算圈复杂度 3、确定基路径集合 4、设计测试用例
(2) 画出程序图,并计算圈复杂度; (3) 采用基路径方法,设计测试用例,要求写出每个测试用例的执行路径(用语句编号表示),根据设计的测试用例对程序进行测试; (4) 采用定义/使用测试方法,列出程序中每个变量的...