多语言展示
当前在线:238今日阅读:84今日分享:32

SourceInsight集成圈复杂度检测工具

最近一直在优化我们代码中的圈复杂度问题,然而优化完了之后圈复杂度是否满足要求了呢?靠我们人去算真的非常困难,而且也不准确。因为根据圈复杂度的计算公式,圈复杂度V(G)=e-n+p,其中,e表示控制流图中边的数量,n表示控制流图中节点的数量,p图的连接组件数目(图的组件数是相连节点的最大集合)。因为控制流图都是连通的,所以p为1。或者圈复杂度V(G)=区域数=判定节点数+1。使用第一种计算方法必须画出控制流图,非常麻烦,而且也很容易画错。使用第二种方法比较简单,但是对于for循环、冒号运算符的判定节点数如何算呢,至今我也没搞清楚,所以很有必要使用工具来计算圈复杂度。这里我推荐SourceMonitor检测工具,它的功能比较多,可以单独执行,也可以集成到Source Insight实时检测,非常好用,下面介绍如何将SourceMonitor的功能集成到Source Insight中。
工具/原料
1

sourceInsight

2

SourceMonitor

方法/步骤
2

打开Source Insight软件,单击Source Insight的“options”菜单,如下图

3

单击 “custom commands”菜单,弹出如下界面:

4

单击上图界面的Add按钮,弹出如下界面

5

在上图文本框中填上命令的名称,然后点击OK按钮后显示如下界面,比如你可以填:ComplexityTest界面图如下:

6

在上图Run中输入以下信息:'C:\Program Files (x86)\SourceMonitor\SourceMonitor.exe' /DC++ %s,其中C:\Program Files (x86)\SourceMonitor\ SourceMonitor.exe为SourceMonitor的安装路径。

7

点击上图的Keys按钮,弹出如下界面:

8

单击上图界面的Assign New Key按钮,弹出如下界面:

9

根据上图提示输入你自己想要的快捷键,比如ALT+1,界面如下:

10

单击上图界面的OK按钮。你还可以单击Menu按钮设置菜单,这里不做介绍。至此全部设置完成,下面就是使用了。

11

选中你要检测的文件或者某个函数,按下ALT+1键,弹出如下结果:

12

因为我这里选中的是一个函数,从上图看该函数的圈复杂度是2。如果你选中的是整个文件可以看到该文件所有函数的圈复杂度,界面如下:

13

从上图我们可以看到该文件每个函数的圈复杂度(图中第一列)。

推荐信息