2009-06-27 92 views
13

我想问你是否知道一些免费的C#库(dll)来计算CK指标(主要是Cyclomatic Complexity)。免费的C#度量计算库(DLL)

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

感谢

+0

你有没有发现一个图书馆吗?或者你是如何解决这个问题的? – RoflcoptrException 2010-10-21 21:41:48

+0

不,这是我的程序想法的一部分,但不幸的是我目前的时间不允许我继续并创建应用程序。因此,我也没有调查任何进一步的搜索适当的图书馆 – Juri 2010-10-22 05:46:38

+0

好的谢谢。所以我不得不进一步搜索;) – RoflcoptrException 2010-10-22 09:02:55

回答

15

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

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

这是通过直接分析IL得到的,这要归功于Mono.Cecil(与NDepend依赖的库相同)。这样就可以从C#编写,VB.Net,代码生成的程序集进行分析......

  • 该项目已被宣布 here
  • 代码来源012ght可用于github
  • 打包版本也是available
  • 它适用于Windows和Mono。

UPDATE:

另一种选择将是惊人的宪兵,从项目的静态分析工具。

作为使用示例,下面的代码显示程序集中每个方法的圈复杂度。

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
3

我使用SourceMonitor,这是一个很好的免费应用程序,衡量代码的复杂性和其他指标的各种语言,包括C#。我们从命令行驱动它来生成XML输出,然后我们使用LINQ to XML来提取和分类我们感兴趣的数据。然后,我们使用NVelocity创建HTML报告。

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

-1

With 82 code metrics支持NDepend是用于.NET开发人员(但是它是商业工具)的Roll Royce工具的代码指标。

0

它不是没有免费的,但是我对NCover有很好的体验的东西。他们也很好地与很多CI工具集成在一起。