在.NET中推导出循环复杂性

时间:2009-04-07 21:57:00

标签: .net visual-studio cyclomatic-complexity

我知道通过右键单击并选择“计算代码指标”,我可以在Visual Studio 2008团队资源管理器中访问我的代码的圈复杂度。我想公开这个数据,以便Web应用程序显示它。有人知道通过API访问这些数据的方法吗?

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

我使用NDepend这样的东西。您可以在NDepend中创建CQL查询并执行它们 示例:

SELECT METHODS  WHERE CC > 8

返回圈复杂度大于8的方法。

答案 1 :(得分:2)

answer 所述,可以利用 Gendarme 开源工具的API来计算方法的圈复杂度

ModuleDefinition module = ModuleDefinition.ReadModule(fullPathToTheAssembly);

foreach (var type in module.Types)
{
    foreach (var me in type.Methods)
    {
        if (!me.HasBody || me.IsGeneratedCode() || me.IsCompilerControlled)
            continue;
        var r = AvoidComplexMethodsRule.GetCyclomaticComplexity(me);

        Console.WriteLine("{0}: {1}", me.ToString(), r);
    }
}

答案 2 :(得分:1)

没有API。但是您可以读取Code Metrics Power Tool生成的XML文件。因此,您将通过命令行生成代码度量XML文件,如:

metrics /f:MyAssembly.dll /o:MetricsResults.xml

然后从MetricsResults.xml中获取您想要的数据。

有关电动工具here的更多信息。

如果您想在TFS版本中运行代码指标,请参阅herehere了解相关选项。

答案 3 :(得分:-1)

我没有 - Visual Studio是否有这种类型的 API? - 但计算圈复杂度相当容易。 Gendarme可能是您的答案。