代码度量的树图可视化
代码度量的树图可视化
入门视频
了解如何使用树状图可视化来探索您的代码库。
简介
在 度量视图,代码库通过表示 矩形树图。树状图(Treemapping)是一种使用嵌套矩形显示树形结构数据的方法。CppDepend 树状图中使用的树结构是常见的代码层次结构:
- C/C++项目包含命名空间,
- 命名空间包含类型,
- 类型包含方法和字段。
在树状图中,矩形代表代码元素。该选项 级别 决定单元矩形所代表的代码元素类型。该选项 级别 可以取5个值: 项目, 命名空间, 类型, 方法 和 字段 下面的两张截图显示了同一个代码库,左边按类型级别表示,右边按命名空间级别表示。

选项 代码度量 树状图的此设置决定矩形的大小。例如,如果级别设置为 类型 度量设置为 代码行数,每个单元矩形代表一个类型,单元矩形的大小与相应类型的代码行数成正比。
如果当前正在编辑 PRQL 查询,查询匹配的代码元素集将在树状图上显示为一组蓝色矩形。在下面的屏幕截图中,一个 PRQL 查询匹配了 200 个最大的方法。这里的树状图层级是 方法 度量是 代码行数 正如预期,我们可以看到蓝色矩形代表树状图中最大的 200 个单元矩形。
下面的截图还显示,当前指向的代码元素(此处为项目) XML) 在树图上显示为红色矩形。

常见场景
通过选择适当的组合 度量 和 级别 值, 度量视图 有助于发现用其他方法难以察觉的模式。
太大、太复杂
CppDepend 提供了许多代码度量来发现过大和过于复杂的代码。参数过多、变量过多、代码行数过多、圈复杂度过高的方法等都应该被摒弃。同样,代码行数过多的类型也应该被摒弃。
在下面的截图中,树状图级别设置为 类型 度量是 代码行数。大矩形代表代码库中的大型类型。用鼠标悬停在矩形上会显示该类型的度量值,这里是该类型的代码行数。显然,代码树状图不仅有助于发现过大和过于复杂的代码元素,还有助于比较它们各自的大小和复杂度。

缺陷定位
在下面的屏幕截图中,我们使用 PRQL 查询请求参数过多和变量过多的方法。蓝色矩形在树状图上显示匹配的方法。这里有趣的一点是,一些匹配的方法似乎是分组在一起的。因为树状图是分层视图,如果一组代码元素被分组,则意味着这些代码元素属于同一个父级。事实上,这里分组的 12 个方法属于同一个类型。
如果没有树状图,找出这 12 个方法的父类型会很困难。现在,代码质量审查人员可以将注意力集中在这个似乎比代码库其他部分包含更多缺陷的区域。

自顶向下代码探索
CppDepend 树状图度量视图支持放大和缩小。这使得可以轻松缩放到特定的项目、命名空间或类。这对于探索和比较组件在代码行数方面的体量特别有用。
生产力绝不应该以代码行数来衡量。然而,在给定组织背景的情况下,计算代码行数已被证明是准确估算软件的有用度量。代码库的功能以某种方式划分到程序集、命名空间和类型中。通过树状图,这些工件变成并排排列的矩形。矩形面积,即功能权重,可以进行视觉比较。能够定期通过树状图探索代码规模,是建立对功能权重和功能成本准确认知的独特方式。
在您熟悉的代码库上尝试可视化树状图,您会惊讶地发现意想不到的功能规模。


