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

来源:互联网 发布:ackerman函数 JAVA 编辑:程序博客网 时间:2024/05/17 04:07

http://hao.jobbole.com/complexity/

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

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

  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/

0 0
原创粉丝点击