我有一个用于构建服务器的NDepend版本,并且已自动生成了NDepend报告。因此,每天晚上构建都会执行其操作,并且会生成NDepend报告/ XML。我现在想做的是跟踪一些指标作为时间的函数。

因此,例如,最好在y轴上有特定类型或名称空间的图,例如传入耦合,在x轴上有时间。我知道我可以比较两个NDepend构建并具有代码和度量差异,但是我要做的是比较N个构建中的一个或多个相同度量,以查看持续的趋势。

我有点假设当前没有一种工具可以执行此操作,但是我必须自己动手使用它,但是如果有一个工具,我肯定会在投入时间之前先听听它。那么,NDepend本身是否支持类似的功能,或者是否存在可以使用的某种实用程序?

除了对NDepend而言,我也很乐意接受其他可以实现此目的的技术的建议,尽管由于对NDepend的投资和熟悉它的工作原理,我对NDepend的偏好很高。

提前致谢。

最佳答案

使用NDepend,您可以编写Code Query over LINQ (CQLinq)来匹配任何代码指标的演变。例如,您可以从查询开始:

from t in JustMyCode.Types
where t.IsPresentInBothBuilds() &&
      t.CodeWasChanged()
let tOld = t.OlderVersion()

let newLoC = t.NbLinesOfCode
let oldLoC = tOld.NbLinesOfCode
let newCC = t.CyclomaticComplexity
let oldCC = tOld.CyclomaticComplexity
let newCov = t.PercentageCoverage
let oldCov = tOld.PercentageCoverage
where newLoC > oldLoC || newCC > oldCC || newCov < oldCov
select new { t, newLoC, oldLoC, newCC, oldCC, newCov, oldCov }


...并在Visual Studio中获得即时结果。该规则可集成到您的CI TFS build process中,也可以显示在HTML+javascript report中。



提供了一些默认代码规则来限制代码度量趋势:


Avoid making complex methods even more complex
Types that used to be 100% covered but not anymore
From now, all types added or refactored should respect basic quality principles
Avoid adding methods to a type that already had many methods
Avoid making large methods even larger

10-04 16:35