7

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

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

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

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

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

我还想包括Bob 叔叔的 SOLID 指标以及一些 Chidamber 和 Kemerer OO 指标。困难的部分是找到为 C++ 生成这些的工具。唯一的选择似乎是Krakatau Essential Metrics(我不反对为工具付费)。我使用 CK 度量的愿望部分来自于Henderson-Sellers 的《Object-Oriented Metrics:Measures of Complexity》和更早的《Object-Oriented Software Metrics 》一书。

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

请注意,一个相关问题是关于跨大型代码库测量代码质量。我对衡量变化更感兴趣。

4

3 回答 3

3

我会考虑使用Kiviat 图来表示随时间演变的多个软件指标维度。这些图表表示围绕中心点的凹形外壳中的多个数据点。目视检查将显示特定指标在哪里上升或下降,并且应该能够使用一些启发式区域计算来计算因度量值而有偏差的区域的总体比率。

于 2010-10-13T04:21:46.523 回答
1

您还可以查看有关代码指标的 NDepend 文档免责声明:我是工具 NDepend 的开发者之一。

使用LINQ 上的代码规则和查询 (CQLinq)工具,可以在代码库的两个不同快照中请求代码度量演变/趋势。例如,提出了一个默认规则:避免使复杂的方法变得更加复杂,如下图所示:

避免使复杂的方法更加复杂

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

关于代码度量的可视化,NDepend 允许通过交互式树图可视化代码度量值:

通过 Treemap 可视化的代码度量

于 2010-10-18T17:07:21.647 回答
0

这个话题有一种新的方法。例如 https://github.com/databricks/koalas/pull/840#issuecomment-536949320在此处输入图像描述

有关更多信息,请参阅https://softagram.com/docs/visualizing-code-changes/或使用以下两个关键字在搜索引擎中进行图像搜索:softagram koalas

免责声明:我为 Softagram 工作。

于 2020-10-05T20:07:17.167 回答