SourceMonitor 是用于代码的圈复杂度测量的一款很好的工具,被运用各类编程语言的开发者广泛使用。她能以窗口模式运行,也可以作为开发工具的插件使用,但是只工作在 Windows 系统下。我个人认为将 SourceMonitor 以插件的方式在开发环境下进行调用更为方便。
SourceMonitor 工具是免费的,下载地址是:http://www.campwoodsw.com/
由于我使用的编辑器是 SourceInsight,使用的语言为 C语言,所以下面简单介绍一下在 SourceInsight 中插件方式调用 SourceMonitor 的方法(听起来像绕口令)。设置很简单:
1)在 SourceInsight 中点击“Options -> Custom Commands”,在弹出的对话框中点击“Add...”按钮设定一个调用 SourceMonitor 的命令并点击“OK”。我将其直接命名为“SourceMonitor”。
2)这时会自动回到“Custom Commands”对话框。在“Command”对应的输入框中选择步骤1 中自定义的名字(对于我来说选择的就是“SourceMonitor”),在“Run:”对应的输入框中输入命令的具体内容:
“E:\Software\SourceMonitor\SourceMonitor.exe” /D-C %s
【注意】上面这句命令是我电脑上的设置,不同的计算机命令不同,所以不可直接复制。
解释一下这个命令各部分的含义。
a、引号里的是 SourceMonitor.exe 的绝对路径,和你安装她的位置有关。相信大家都懂这是什么意思。
b、参数 /D-C 表示测量的语言为C语言。如果你要测量 C++,这里可以写成 /D-C++,同理,还可以是 /D-C# 或者 /D-Java 等。
c、参数 %s 表示对编辑器中选定区域的代码进行测量。比如你就只用鼠标拖选了 DataProcessing.c 文件中的函数 calcPos(),那 么 SourceMonitor 就只会对函数 calcPos() 进行测量并报告结果。如果要对整个文件进行测量,可以在此处使用参数 %f。
3)在“Dir:”对应的输入框中输入 SourceMonitor.exe 所在的目录(对于我来说应该输入 E:\Software\SourceMonitor)。
4)设定快捷键。在“Custom Commands”窗口中点击“Keys...”按钮,在弹出的“Key Assignments”窗口左侧列表中选中步骤1 中自定义 的命令(同样,与我而言应该选择“Custom Command: SourceMonitor”),再点击“Assign New Key...”按钮自定义快捷键,设定完 成后点击“OK”。
5)将 SourceMonitor 命令插入编辑器菜单。在“Custom Commands”窗口中点击“Menu...”按钮进行设置。这不是必须设定项,设置也 很简单,感兴趣的话可以自己看看。
6)现在可以在 SourceInsight 中使用 SourceMonitor 了。在 SourceInsight 中拖动鼠标或双击左侧的列表中的函数以选中希望测量的 代码,按下步骤4 中设定的快捷键,这样就可以看到 SourceMonitor 的测量结果了。
---------------------------------------------------- 分 --------------------------- 割--------------------------- 线 ----------------------------------------------------
测量结果窗口的左下角会出现一个 Kiviat 图。
下面的内容引用自 SourceMonitor 的官方帮助文档 SourceMonitor.chm,文章路径为 /Source Monitor User InterfaceNavigation/The Chart View:
....
Kiviat Graph(Project and Checkpoint views):
The third type of chart shows the collective results for selected metrics in a polar plot. You can specify the metrics to be included in this graph, as well as your lower and upper targets for each metric.A Kiviat graph shows at a glance how the metrics you care most about compare to your target metric values.
....
意思是 Kiviat 图中的绿色环形区域即被测量维度的期望值,维度上的点则是测量得到的实际值。当一个维度上的点位于绿色环形区域中时表明这个维度的测量结果是符合期望的。
【参考文献】
[1]《将SourceMonitor集成到SourceInsight中》
[2]《代码度量工具SourceMonitor的学习和使用》