我想问你是否知道一些计算 CK 指标(主要是圈复杂度)的免费 C# 库(dll)。
对于我打算做的项目,我需要它。我知道已经有一些完成的解决方案可以计算 CK 指标并以各种形式显示给您,但我需要的是可以在我的应用程序中使用的解决方案。所以在开始自己写一个之前,我首先想问你。
谢谢
我想问你是否知道一些计算 CK 指标(主要是圈复杂度)的免费 C# 库(dll)。
对于我打算做的项目,我需要它。我知道已经有一些完成的解决方案可以计算 CK 指标并以各种形式显示给您,但我需要的是可以在我的应用程序中使用的解决方案。所以在开始自己写一个之前,我首先想问你。
谢谢
DrivenMetrics是一个开源的 C# 命令行工具。核心功能作为库与命令行控制台客户端隔离(此处提供核心项目)。
即使很简单,它也可能满足您的需求:它是免费的,计算行数并计算方法的圈复杂度(潜在代码路径的数量)。
借助 Mono.Cecil(NDepend 依赖的同一库),这是通过直接分析 IL 来执行的。这允许对使用 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);
}
}
我正在使用SourceMonitor,这是一个不错的免费软件应用程序,可以测量包括 C# 在内的各种语言的代码复杂性和其他指标。我们从命令行驱动它以产生 XML 输出,然后我们使用 LINQ to XML 来提取和排序我们感兴趣的数据。然后我们使用 NVelocity 创建 HTML 报告。
我知道它不是托管库,但您可能会发现它可以满足您的需求。
我正在使用 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
它不是免费的,但我在NCover上对这类事情有很好的体验。它们还与许多 CI 工具很好地集成在一起。
NDepend 支持82 个代码指标,是用于 .NET 开发人员的代码指标 Roll's Royce 工具(但它是一个商业工具)。