Complexity:一个测量 C 代码复杂性的工具

complexity

复杂性测量工具提供几条信息,它们可以:

  1. 对于不熟悉的代码,可以查找可疑的区域。
  2. 了解要理解代码需要多少工作量。
  3. 了解测试代码库需要的工作量。
  4. 给自己一个提醒。你可以很明显的看出你已经写了什么,但是其他人不能。提示哪些代码可能比较难被人理解是有用的,然后再决定是否需要重新做。

但是为什么需要另一个复杂性分析者?McCabe分析工具已经存在,但是它所做的工作对测定复杂性来说太粗糙了。每一个代码路径都应该被测试,pmccabe程序提供了代码路径的计数。然而,这并不是影响人们理解力的唯一问题。这个项目试图把其它影响人们理解能力的因素考虑进来。

复杂性计算

从根本上讲,这个程序的主要目标是计算没有注解的源码行的数目,乘以每一个层次的逻辑嵌套和分裂比例因子的嵌套因素,这样典型的结果和pmccabe结果分布在相同的范围内。这个恰好大约是20。

示例输出

这是一个自我参照的例子。输出是通过进入复杂源目录,并运行以下命令:

阈值被设为3是因为所有的函数得分都低于默认阈值30。它不是0是因为有太多琐碎的函数在一个短的例子中。

执行结果:

调用的复杂性

计算源代码的复杂性不仅要计数代码路径,还要通过逻辑层次嵌套计算放大的行数。complexity忽略了所有的cpp预处理指令——计算代码显示的复杂性,而不是预处理之后操作代码的复杂性。例如,getchar(3)将会扩展称相当复杂的代码。

本章由AutoGen生成,使用了agtexi-cmd模板和complexity程序的选项描述。

这个软件是在GNU通用公共许可证下发布的。

开发资源

官方网站:https://www.gnu.org/software/complexity/
开源地址:http://ftp.gnu.org/gnu/complexity/

1 收藏

资源整理者简介:贺贺

生命本无意义,你给它什么意义,它就有什么意义。我爱程序员。 个人主页 · 贡献了5个资源


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer