Ndepend和cppdepend中的CQL,用于查看修订版中度量标准的更改

时间:2010-12-15 22:08:11

标签: ndepend cql cqlinq

CQL可以很容易地找到CodeWasChanged的方法,但我还需要比较指标 - 我想找到修改过的代码,看看它是否有所改进。

我正在评估ndependcppdepend的混合代码库。我对这两者印象非常深刻,尤其是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)

1 个答案:

答案 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,
}

我们建议您在默认组中浏览相关的默认代码规则:代码质量回归