使用NDepend查看代码度量标准中的趋势

时间:2012-02-10 16:41:13

标签: c# visual-studio-2010 static-analysis ndepend cqlinq

我有一个NDepend版本用于构建服务器,并自动生成NDepend报告。因此,每晚构建都会发挥作用,并生成NDepend报告/ XML。我现在想要做的是跟踪一些与时间相关的指标。

因此,例如,在y轴上具有特定类型或命名空间(例如,传入耦合)的图形与x轴上的时间可能是很好的。我知道我可以比较两个NDepend构建并具有代码和度量差异,但我要做的是比较N个构建中的相同单个度量或度量以查看正在进行的趋势。

我有点假设当前没有这样的工具,我必须自己动手,但如果有一个,我肯定会喜欢在投资前听到它时间。那么,NDepend本身是否支持这样的任何东西,或者是否存在我可以使用的某种实用工具?

除了NDepend之外,我也愿意接受能够实现这一目标的其他技术的建议,尽管由于已经投入了NDepend并熟悉它的工作方式,我对NDepend有很强的偏好。

提前致谢。

1 个答案:

答案 0 :(得分:6)

使用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中。

Code metric evolution match

提供了几个默认代码规则来限制代码度量标准趋势: