用pmccabe进行环复杂度测量

我经常收到的一个常见问题是“我应该使用哪种McCabe环复杂性工具?”现在,这始终是一个部分加载的问题,因为尽管我真的很喜欢很多,但是大多数开发人员确实在问我可以向他们推荐哪些免费工具。我一直使用的最喜欢的免费软件,开源软件和完全基于命令行的软件之一是pmccabe。

pmccabe是一种圈复杂度测量工具,自1990年代初以来,一直被Hewlett Packard一直用于C和C ++代码。该工具是从Linux或MacOS中的命令行运行的(或者可能是从Cygwin在Windows上运行的,但我没有尝试过)。首先,尽管需要根据所使用的操作系统使用以下任一命令行进行安装:

对于Mac:

酿造安装pmccabe

对于Linux:

sudo apt-get更新-y

须藤apt-get install -y pmccabe

安装了圈复杂度工具后,通过该工具运行文件就像在源文件中导航到目录并键入以下命令一样简单:

pmccabe *

现在,作为今天帖子中的一个简短示例,让我们看一下我经常使用的通信解码状态机文件。该文件名为packet.c,因此我们可以使用以下命令来测量圈复杂度:

pmccabe -v packet.c

现在,我使用-v开关,以便该工具将打印列标题,以便我了解每一列的含义。结果将类似于以下内容:

如我们所见,我遵循良好的编程习惯,并将所有功能保持在10的圈复杂度以下。

我非常喜欢此工具的一件事是,它可以轻松地集成到基于Linux的构建服务器中,并且从脚本的角度来看并不需要太多的钱来运行测试,然后解析它们以得到结果。在大多数情况下,我只想查看代码库中哪个函数的复杂度大于10,而我通常希望将它们按11 – 20、21 – 30、31 – 40和40+的组显示。

借助该工具的易用性和开放源代码这一事实,开发人员确实没有借口不监视其软件的复杂程度。 (即使在Windows上,您也可以在Virtual Box VM上安装Ubuntu,以使其与测试工具一起运行。)因此,如果您正在寻找一种出色的解决环复杂性的工具,那么这个工具可能会帮您。

4 thoughts 上 “用pmccabe进行环复杂度测量”

  1. I’我对圈复杂度指标有些怀疑。首先,最高复杂度等级a‘switch/case’结构得到。这可能在形式上是合理的,但是人类可以很容易地阅读,理解和维护它们。
    在使用非阻塞式有限状态机进行设计时,我不会’甚至不知道如何在不弄乱代码的情况下不使用它们。
    对于较大的项目,RTOS很好,但是对于较小的项目(例如,适合ATtiny的项目),它会被过度设计。

    1. 关于pmccabe,这是我喜欢的一件事,它显示了传统的复杂性度量以及将开关案例视为1的修改后的度量。我个人使用它来帮助通过功能指导独立线性路径的测试案例开发。

    1. I’我没有用过那个。我将不得不尝试一下。 (我计划在将来的某个时候发布5种复杂度测量工具)。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.