我想问一下你是否知道一些免费的C#库(dll)可以计算CK指标(主要是圈复杂度)。
我需要在我的项目中使用它。我知道已经有一些完成的解决方案可以计算CK指标并以各种形式显示给您,但我需要的是一个可以从我的应用程序中使用的解决方案。因此,在开始编写自己的解决方案之前,我首先想询问您。
谢谢
我想问一下你是否知道一些免费的C#库(dll)可以计算CK指标(主要是圈复杂度)。
我需要在我的项目中使用它。我知道已经有一些完成的解决方案可以计算CK指标并以各种形式显示给您,但我需要的是一个可以从我的应用程序中使用的解决方案。因此,在开始编写自己的解决方案之前,我首先想询问您。
谢谢
DrivenMetrics是一个开源的C#命令行工具。核心功能被单独提取为库(Core项目可以在这里找到),与命令行控制台客户端分离。
尽管它非常简单,但它可能适合您的需要:它免费、计算代码行数并计算方法的圈复杂度(潜在代码路径数量)。
这是通过直接分析IL实现的,感谢Mono.Cecil(NDepend依赖的同一库)。这允许对使用C#、VB.Net等编写的代码构建的程序集进行分析。
更新:
另一个选择是来自Mono项目的静态分析工具Gendarme。
以下代码展示了对程序集中每个方法的圈复杂度进行计算的用法示例:
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);
}
}
我正在使用微软提供的一款工具,用于计算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