使用NDepend和CppDepend中的CQL查询跨版本查看指标变化

3

CQL使查找代码更改的方法变得轻松,但我还需要比较指标-我想找到已修改的代码并查看其是否有所改进。

我正在评估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个回答

3

Andy,使用CQLinq(Code Query and Rule over LINQ)可以看到代码指标的趋势,并且希望能够轻松实现。例如,查看默认代码规则避免使复杂方法变得更加复杂(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,
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接