Visual C++ 是使用最广泛的 C++ 开发环境之一,为开发者提供了许多实用功能。每个新版本都会带来重大改进,还有众多扩展可用于增强开发体验。在本文中,我将介绍CppDepend提供的一些实用功能。
可视化您的代码库
依赖图
依赖图是表示代码元素之间依赖关系最常用的方式之一,Visual Studio 提供了一个实用的实现。而 CppDepend 提供的依赖图更侧重于代码质量:方框大小和连线粗细可以与多种可用度量中的任意一种成正比。

依赖矩阵
DSM(依赖结构矩阵)是表示和浏览组件之间依赖关系的一种紧凑方式。DSM 表示的信息与依赖图相同,但在以下情况下更为实用:
- 涉及的代码元素很多。
- 您需要确定元素之间的依赖权重。
- 您需要轻松识别代码元素之间的循环依赖。

矩形树图
在度量视图中,代码库使用Treemap表示。矩形树图(Treemap)是一种使用嵌套矩形展示树状结构数据的方法。所用的树结构就是常见的代码层级:
- C/C++ 项目包含命名空间
- 命名空间包含类型
- 类型包含方法和字段
每个矩形的大小与所选度量成正比;默认情况下是NbLinesOfCode。度量视图还可以通过为矩形树图元素着色来显示第二个度量,从而同时可视化两个代码度量。
例如,在这张矩形树图中,矩形大小表示代码行数,而颜色表示圈复杂度。这样可以轻松地一眼找出最大、最复杂的方法。

度量信息
项目、命名空间、类、方法和字段都有许多可用的度量。信息视图会报告其中一些度量,让开发过程中评估实现质量变得更加容易。

定义规则
CQLinq 也许是 CppDepend 提供的最强大的功能。它让我们能够轻松定义高级查询并搜索特定的代码元素。CQLinq 编辑器提供了许多实用功能来创建自定义规则,结果会实时计算。

获取诊断信息
使用 CppDepend,您可以轻松获取 Clang、Cppcheck 和 Vera++ 报告的问题。还可以通过 API 集成其他工具。

趋势图
趋势图对于跟踪某个度量随代码变化而演变的情况非常有用。默认提供了许多图表,您也可以轻松创建自己的图表。

高级搜索
有时,按代码大小、圈复杂度、注释百分比、耦合度等度量来搜索方法是很有用的。
CppDepend 提供了这一功能,允许您使用各种度量来搜索代码元素。

结论
CppDepend可以帮助您更好地理解代码库,并发现实现和设计上的缺陷。不过,正如前面提到的,其丰富的功能集可能会让初学者觉得有些难以上手。您需要花上几个小时来熟悉它的部分功能。
