13

我想问你是否知道一些计算 CK 指标(主要是圈复杂度)的免费 C# 库(dll)。

对于我打算做的项目,我需要它。我知道已经有一些完成的解决方案可以计算 CK 指标并以各种形式显示给您,但我需要的是可以在我的应用程序中使用的解决方案。所以在开始自己写一个之前,我首先想问你。

谢谢

4

5 回答 5

16

DrivenMetrics是一个开源的 C# 命令行工具。核心功能作为库与命令行控制台客户端隔离(此处提供核心项目)。

即使很简单,它也可能满足您的需求:它是免费的,计算行数并计算方法的圈复杂度(潜在代码路径的数量)。

借助 Mono.Cecil(NDepend 依赖的同一库),这是通过直接分析 IL 来执行的。这允许对使用 C#、VB.Net、... 编写的代码构建的程序集执行分析。

  • 该项目已在 此处公布。
  • 代码源可在github上找到。
  • 提供打包发行版。
  • 它适用于 Windows 和 Mono。

更新:

另一种选择是令人惊叹的 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);
    }
}
于 2010-10-23T17:03:11.877 回答
3

我正在使用SourceMonitor,这是一个不错的免费软件应用程序,可以测量包括 C# 在内的各种语言的代码复杂性和其他指标。我们从命令行驱动它以产生 XML 输出,然后我们使用 LINQ to XML 来提取和排序我们感兴趣的数据。然后我们使用 NVelocity 创建 HTML 报告。

我知道它不是托管库,但您可能会发现它可以满足您的需求。

于 2009-06-27T08:26:50.183 回答
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

于 2013-02-23T05:22:54.850 回答
0

它不是免费的,但我在NCover上对这类事情有很好的体验。它们还与许多 CI 工具很好地集成在一起。

于 2010-10-29T02:41:44.610 回答
-1

NDepend 支持82 个代码指标,是用于 .NET 开发人员的代码指标 Roll's Royce 工具(但它是一个商业工具)。

于 2010-08-30T16:40:47.053 回答