Understand怎么分析代码复杂度?可以先查看函数的圈复杂度,再结合嵌套层数和代码行数定位值得检查的函数。如果指标突然升高、同一段代码前后数值不一致,先核对统计口径和项目解析结果。Understand提供普通、严格、修正等多种圈复杂度算法,选用的算法不同,数值也可能不同。
一、Understand怎么分析代码复杂度
建议先看函数,再看文件或项目的汇总值。这样既能找到具体代码位置,也能避免把多个函数的复杂度之和误认为单个函数的数值。
1、查看单个函数的指标
①打开已分析的项目,依次点击【Metrics】→【Browse Metrics】。
②在左侧选中目标函数,查看其【Cyclomatic Complexity】、嵌套层数等指标。
③切换到该函数所在的文件,分别查看平均值、最大值和总和值,确认正在比较的是同一种统计口径。
2、筛选复杂度较高的函数
①依次点击【View】→【Entity Locator】,将实体范围设为函数。
②添加圈复杂度指标列,点击列标题按数值排序。
③打开排在前面的函数,结合源码查看分支、循环和多条件判断的位置。
3、用图形查看项目分布
①依次点击【Metrics】→【Metrics Treemap】,将统计对象设为函数。
②选择代码行数作为面积指标,选择圈复杂度作为颜色指标。
③生成树状图,点击颜色较深的函数块,查看对应源码和具体指标。
二、Understand代码复杂度指标异常如何调整
遇到异常值,先检查指标名称和对象范围,再检查源码是否被正确解析。调整配置后重新分析项目,才能用同一口径比较新旧结果。
1、核对圈复杂度的计算方式
①依次点击【Project】→【Configure Project】→【Metrics】→【Complexity】。
②查看圈复杂度当前选择的是【Normal】、【Strict】、【Modified】还是【StrictModified】。
③按项目采用的统计口径选择对应方式,保存设置并重新查看函数指标。严格算法会计入条件中的逻辑运算符,修正算法对多分支结构采用不同计数方式。
2、确认比较的是函数值还是汇总值
①在【Browse Metrics】中分别选中函数和它所在的文件。
②核对指标名称中的平均、最大、总和含义,再与此前记录逐项比较。
③如果需要定位异常函数,返回函数列表排序查看,避免只依据文件总和值判断是哪段代码发生变化。
3、检查统计范围是否变化
①依次点击【Project】→【Configure Project】,查看源码文件列表。
②检查是否新加入了生成代码、第三方文件,或遗漏了本应统计的源文件。
③修正文件范围后,点击【Project】→【Analyze All Files】,再核对项目和文件指标。
4、检查头文件、宏和解析错误
①查看异常函数的源码,确认预期统计的条件编译分支是否处于启用状态。
②依次点击【Project】→【Improve Project Accuracy】→【Missing Includes】,补充缺少的头文件路径。
③再查看【Undefined Macros】,按实际构建配置补充宏,随后点击【Project】→【Analyze All Files】。缺少构建信息时,代码解析及相应指标可能与实际编译结果不一致。
三、数值确认后怎样定位具体代码
配置核对完成,若函数复杂度仍然较高,就可以回到代码本身。圈复杂度适合提示检查方向,是否修改函数还需结合业务逻辑和测试情况判断。
1、查看函数的控制流程
①在源码中右键点击目标函数,依次选择【Graphical Views】→【Control Flow】。
②沿图中的分支查看多层判断、循环和提前返回的位置。
③对照源码确认复杂度集中在哪一段,再评估是否需要拆分函数或简化判断条件。
2、保存同口径的指标记录
①依次点击【Metrics】→【Export Metrics】,选择需要保存的复杂度指标。
②在导出设置中确认函数名称、所属文件及输出位置,导出CSV。
③记录本次代码版本和圈复杂度算法;下次分析后按相同口径比较同一函数。
总结
复杂度数值最有用的地方,是帮人从大量代码中找到需要仔细阅读的函数。看到异常时,先确认算法、统计对象和解析配置;这些一致后,再判断代码本身是否发生变化。把每次分析的版本和口径一同保存,后续比较也会更清楚。希望这篇关于Understand复杂度分析与异常指标调整的介绍对大家有帮助;如有Understand相关需求,欢迎联系我们咨询。