代码之家  ›  专栏  ›  技术社区  ›  Juri

自由度量计算库(dll)【关闭】

  •  13
  • Juri  · 技术社区  · 16 年前

    我想问一下,您是否知道一些计算CK度量(主要是循环复杂性)的免费C库(DLL)。

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

    谢谢

    5 回复  |  直到 16 年前
        1
  •  16
  •   nulltoken    14 年前

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

    即使非常简单,它也可以满足您的需要:它是免费的,计算行数并计算方法的循环复杂性(潜在代码路径的数量)。

    这是通过直接分析IL来完成的,这要归功于 Mono.Cecil (依赖于同一个库)。这允许对用C、VB.NET等编写的代码生成的程序集执行分析。

    • 这个项目已经宣布 here .
    • 代码源是 可用于 github .
    • 打包发行版也是 available .
    • 它既适用于Windows,也适用于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);
        }
    }
        2
  •  3
  •   Mark Heath    16 年前

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

    我知道它不是一个有管理的图书馆,但你可能会发现它可以做你需要的。

        3
  •  1
  •   Ashley Davis    12 年前

    我使用微软的一个工具来计算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

        4
  •  0
  •   jtruelove    14 年前

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

        5
  •  -1
  •   Patrick from NDepend team    14 年前

    用82 code metrics 支持的ndepend是面向.NET开发人员的代码度量Roll的Royce工具(不过它是一个商业工具)。

    推荐文章