如何可视化大型代码库质量的变化?

时间:2010-10-06 06:18:34

标签: metrics code-metrics

我一直在考虑的事情之一是我们如何使用某种衡量标准来衡量变化,我们是否会倒退?这是在我们正在改进的大型遗留代码库的背景下。大多数代码都是带有C遗产的C ++。一些新功能和GUI是用C#编写的。

首先,我们至少可以检查代码中的简单复杂性级别是否随时间而变化。困难在于有一个表示 - 我们可以做一个3D表面,其中2D地图代表代码,我们有一个颜色的热图表示复杂性,3D表面凸出进出以显示变化。

一旦你能够生成一些数字的数字,就会有大量的数学系统来处理这样的事情。

随着时间的推移,我希望在那里有更复杂的数字,但用相同的可视化技术来代表变化。

我喜欢Crap4j中关于复杂性与覆盖该代码的单元测试数量之间的比例的想法。

我还想包括Uncle Bob's SOLID metrics以及一些Chidamber和Kemerer OO指标。困难的部分是找到为C ++生成这些工具的工具。唯一的选择似乎是Krakatau Essential Metrics(我不反对支付工具费用)。我使用CK指标的愿望部分来自亨德森 - 塞勒斯和早期Object-Oriented Metrics:Measures of Complexity的书Object-Oriented Software Metrics

如果我们开始使用这些指标中的一些,我们最终会得到十个左右的数字,这些数字会随着时间的推移而变化。我对统计数据一无所知,但跟踪一堆这样的指标然后注意哪些指标往往变化可能会很有趣。

请注意,相关问题与measuring code quality across a large code base有关。我对测量更改更感兴趣。

3 个答案:

答案 0 :(得分:3)

我会考虑使用Kiviat Diagram来表示随着时间推移而演变的多个软件指标维度。这些图表示围绕中心点的凹壳中的多个数据点。目视检查将显示特定指标上升或下降的位置,并且应该能够使用某些区域计算来计算由度量值偏置的区域的总体比率。

答案 1 :(得分:1)

您还可以浏览NDepend documentation about code metrics免责声明:我是NDepend工具的开发人员之一。

使用Code Rule and Query over LINQ (CQLinq)工具,可以在代码库的两个不同快照中请求代码度量标准演变/趋势。例如,建议使用默认规则:Avoid making complex methods even more complex,如下面的屏幕截图所示:

Avoid making complex methods even more complex

提出了几个度量趋势规则,如:

关于代码度量的可视化,NDepend允许通过interactive treemap可视化代码度量值:

Code Metric viualized through Treemap

答案 2 :(得分:0)

有一个针对此主题的新方法。 例如。 enter image description here https://github.com/databricks/koalas/pull/840#issuecomment-536949320

有关更多信息,请参见https://softagram.com/docs/visualizing-code-changes/或使用两个关键字在软件中进行图像搜索:软字无尾熊

免责声明:我为Softagram工作。