【问题标题】:Existing library to calculate code complexity of a block of code用于计算代码块的代码复杂度的现有库
【发布时间】:2009-04-29 01:02:59
【问题描述】:

我得到一个包含任意数量代码的字符串。我想计算一个代表该字符串的代码复杂度的数字。比如:

int complexity = Lib.FindComplexity(someString);

我知道有很多工具可以为您做到这一点。 这些工具不适合我,因为我想以编程方式完成。我希望库是 C# 中的,但此时可以使用任何东西。

提前致谢!

【问题讨论】:

  • 你找到什么了吗??对于你的问题@joeB

标签: c# asp.net static-analysis cyclomatic-complexity


【解决方案1】:

您是否考虑过使用其中一种现有工具并将其包装在库中?例如,您可以使用 NDepend.Console.exe,方法是使用所需参数从代码中调用它,然后解析结果。

【讨论】:

    【解决方案2】:

    NDepend 是一个很棒的工具,虽然在我看到它的时候并不便宜。如果钱不是一种选择,我会考虑使用反射和http://en.wikipedia.org/wiki/Cyclomatic_complexity。它不满足您对任何字符串的要求,但您绝对可以测试您创建的程序集。

    【讨论】:

      【解决方案3】:

      您还可以使用反射器和可用的代码指标插件。

      【讨论】:

        【解决方案4】:

        像这样的库必须能够解析任意语言 片段,然后计算解析片段的复杂度指标。 大多数度量工具充其量只有一个针对整个语言的解析器, 不只是一个片段,所以你可能很难找到 许多解决方案。

        有一个系统可以满足您的需求: 我们的 DMS 软件再造工具包。它提供解析器 适用于多种语言(例如 Java 和 C#; 目前尚不清楚您要分析哪种语言)。 DMS 已被用于实施此类指标 适用于多种语言(Java、C#、JavaScript、COBOL) 并且这样做的过程是直截了当的。 DMS 确实会解析语言片段,令人惊讶的是, 指标实现实际上是在这些片段上运行的。 您可以自定义 DMS 以实现您想要的。 见http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html 对于派生的度量工具, http://www.semdesigns.com/Products/Metrics/index.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-04
          • 2022-01-19
          • 1970-01-01
          • 2021-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多