Deriving Cyclomatic Complexity in .NET

ぃ、小莉子 提交于 2019-12-01 06:03:53
Paco

I use NDepend for stuff like that. You can create CQL queries in NDepend and execute them.
Example:

SELECT METHODS  WHERE CC > 8

returns the methods with a cyclomatic complexity greater than 8.

nulltoken

As described in this answer, one can leverage the API of the Gendarme open source tool to calculate the cyclomatic complexity of a method

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);
    }
}

There is no API. But you can read an XML file generated by the Code Metrics Power Tool. So you would generate the code metrics XML file by command line like:

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

Then grab the data you want out of MetricsResults.xml.

More info on the power tool here.

If you want to run code metrics in your TFS build, see here and here for options.

I don't -- does Visual Studio have any APIs of that sort? -- but computing cyclomatic complexity is reasonably easy. Gendarme might be your answer.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!