腾讯代码分析-圈复杂度扫描功能 #1113
xiohuang9
announced in
Announcements
腾讯代码分析-圈复杂度扫描功能
#1113
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
了解圈复杂度
圈复杂度(Cyclomatic Complexity),也称为条件复杂度或循环复杂度,是一种软件度量,一种代码复杂度的衡量标准。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立执行路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数,即合理的预防错误所需要测试的最少路径条数。
代码案例
if条件为true时候,会执行string = "String"语句;if条件为false时候,将不会执行string = "String"语句。这样就会形成了两种程序执行路径,并且是有你无我、有我无你的相互独立的关系。这样,我知道这个test函数的独立执行路径是2,圈复杂度也就是2。
所以圈复杂度的多少决定于代码中有多少流程控制语句,包括但不限于 if、else if、for、while、switch、||、&& 等等。
圈复杂度划分为一下几个等级:
为何要解决高圈复杂度
圈复杂度是函数中独立执行路径的数量。高圈复杂度的函数意味着逻辑结构复杂,代码可理解性低、可维护性低。测试人员难以编写足够的测试用例覆盖所有情况,导致需要投入大量人力成本进行测试和维护。
研究发现,圈复杂度和缺陷个数有高度的正相关:圈复杂度最高的模块及方法,其中的缺陷个数也最多。我们可以根据圈复杂度的高低来推测一个模块缺陷的多少。
使用扫描说明
新建分析方案时,会默认勾选圈复杂度扫描功能




也可以在方案页面中度量配置里,调整圈复杂度的启用和阈值
项目扫描完成之后,便可在项目分析页面下的圈复杂度内,看得到结果。
联系我们
欢迎访问我们的平台:腾讯云代码分析

使用文档:腾讯云代码分析帮助文档
持续为您的代码助力!
扫描可进开源群畅聊技术&答疑解惑
Beta Was this translation helpful? Give feedback.
All reactions