CQL可以很容易地找到CodeWasChanged的方法,但我还需要比较指标 - 我想找到修改过的代码,看看它是否有所改进。
我正在评估ndepend和cppdepend的混合代码库。我对这两者印象非常深刻,尤其是cppdepend似乎能够应对我们的传统和现代c ++。
如果我能弄清楚如何做到这一点,那么我可以在CQL中做我需要的所有事情,但是否则必须做一些像外部组合报告的事情。所以我很欣赏有关自动化和比较CQL报告生成作为后备的提示。显然,我会更乐意在VisualCppDepend或VisualNDepend中使用CQL,因此我可以在度量视图中看到查询结果。与其他工具相比,使用这些工具进行实际的结果探索是大不了。
对CodeWasChanged和IsInOlderBuild等其他条款的评论说强制CQL针对旧版本运行,这表明您无法跨修订版进行查询。
我喜欢的那种查询类似于想象语法:
SELECT METHODS WHERE CodeWasChanged and MethodCe > 10
概括为跨版本工作
SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and BaseMethodCe < 10
或者
SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and Older(MethodCe < 10)
答案 0 :(得分:3)
Andy,CQLinq (Code Query and Rule over LINQ)看到代码指标的趋势是可能的,并且希望很容易实现。例如,请参阅默认代码规则Avoid making complex methods even more complex (Source CC):
// <Name>Avoid making complex methods even more complex (Source CC)</Name>
// To visualize changes in code, right-click a matched method and select:
// - Compare older and newer versions of source file
// - Compare older and newer versions disassembled with Reflector
warnif count > 0
from m in JustMyCode.Methods where
!m.IsAbstract &&
m.IsPresentInBothBuilds() &&
m.CodeWasChanged()
let oldCC = m.OlderVersion().CyclomaticComplexity
where oldCC > 6 && m.CyclomaticComplexity > oldCC
select new { m,
oldCC ,
newCC = m.CyclomaticComplexity ,
oldLoc = m.OlderVersion().NbLinesOfCode,
newLoc = m.NbLinesOfCode,
}
我们建议您在默认组中浏览相关的默认代码规则:代码质量回归