免费的C#指标计算库(DLL)

时间:2009-06-27 07:06:29

标签: c# code-metrics

我想问你是否了解一些计算CK指标的免费C#库(dll)(主要是Cyclomatic Complexity)。

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

由于

5 个答案:

答案 0 :(得分:16)

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

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

这是通过直接分析IL来执行的,感谢Mono.Cecil(NDepend依赖于相同的库)。这允许对使用C#,VB.Net,...

编写的代码构建的程序集执行分析
  • 该项目已经公布 here
  • 代码来源是 可在github上找到。
  • 打包版本也是available
  • 它适用于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);
    }
}
  • 该项目描述为here
  • 代码源位于github
  • 打包版本也是available
  • 适用于Windows和Mono

答案 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工具(但它是一种商业工具)。