我想问你是否了解一些计算CK指标的免费C#库(dll)(主要是Cyclomatic Complexity)。
对于我打算做的项目,我需要这样做。我知道已经有一些完成的解决方案可以计算CK指标并以各种形式显示给你,但我需要的是我可以在我的应用程序中使用的解决方案。所以在开始写自己之前,我首先想问你。
由于
答案 0 :(得分:16)
DrivenMetrics 是一个开源的C#命令行工具。核心功能作为库与命令行控制台客户端隔离(核心项目可用here)。
即使非常简单,它也可能符合您的需求:它是免费的,计算行数并计算方法的圈复杂度(潜在代码路径的数量)。
这是通过直接分析IL来执行的,感谢Mono.Cecil(NDepend依赖于相同的库)。这允许对使用C#,VB.Net,...
编写的代码构建的程序集执行分析<强>更新强>
另一种选择是惊人的 Gendarme ,这是 Mono 项目中的静态分析工具。
作为使用示例,下面的代码显示了程序集中每个方法的圈复杂度。
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);
}
}
答案 1 :(得分:3)
我正在使用SourceMonitor,这是一个很好的免费软件应用程序,可以测量各种语言(包括C#)的代码复杂性和其他指标。我们从命令行驱动它来生成XML输出,然后我们使用LINQ to XML来提取和排序我们感兴趣的数据。然后我们使用NVelocity创建HTML报告。
我知道它不是托管库,但您可能会发现它可以满足您的需求。
答案 2 :(得分:1)
Microsoft正在使用一种工具来计算C#程序集的代码指标。
它包括环状复合物,可维护性指数等。
详细信息:
http://blogs.msdn.com/b/camerons/archive/2011/01/28/code-metrics-from-the-command-line.aspx
在此下载:
http://www.microsoft.com/en-us/download/details.aspx?id=9422
答案 3 :(得分:0)
这不是免费的,但我对NCover这方面有很好的经验。他们还很好地集成了很多CI工具。
答案 4 :(得分:-1)
支持82 code metrics NDepend是针对.NET开发人员的代码指标Roll's Royce工具(但它是一种商业工具)。