【问题标题】:Available Code Metric Systems? [closed]可用的代码度量系统? [关闭]
【发布时间】:2009-08-13 11:15:22
【问题描述】:

除了圈复杂度之外,还有哪些其他代码度量系统?

【问题讨论】:

    标签: code-metrics


    【解决方案1】:
    【解决方案2】:

    维基百科提供了一个 simple overview of metrics.

    实际上有很多很多指标。事实上,任何将源代码映射到测量尺度(整数、实数、分类枚举)的源代码函数都可以被认为是一个度量。

    大多数代码指标的问题在于它们往往与 SLOC 成正比,如果是这种情况,SLOC 也一样好。使用指标最好的方法是现在测量您的代码,并跟踪指标如何随时间变化;上升或下降的趋势会告诉你几乎比指标本身更多的信息。向上意味着坏消息;代码越来越复杂了。

    结合错误率考虑代码(复杂性)指标也很有用。一个模块中的高复杂性,以及同一模块中的高错误率表明,重新设计该模块可能是防止该领域进一步麻烦的好主意。高复杂性和低错误率表明代码看起来很吓人,但实际上并非如此。

    【讨论】:

      【解决方案3】:

      Halstead's Software Science 是一个出色的指标套件,可以让您深入了解程序的实际结构。

      Card 和 Glass 也创建了一个模型,但我不确定这是否适用于书籍之外。无论如何,我都会寻找它。

      【讨论】:

        【解决方案4】:

        查看集成在 Visual Studio 2012、2010 和 2008 中的工具 NDepend 支持的 82 个code metrics 定义。免责声明:我是该工具的开发人员之一

        请注意,这些代码指标可以通过CQLinq queries and rules 组合来定义您自己的自定义代码指标。

        例如,循环复杂度以外的一种流行代码度量是C.R.A.P metric。基本上,C.R.A.P 将糟糕的代码定义为复杂的方法(具有很高的循环复杂度),很少被测试覆盖。定义 C.R.A.P 指标的 default CQLinq rule 是:

        // <Name>C.R.A.P method code metric</Name>
        // Change Risk Analyzer and Predictor (i.e. CRAP) code metric
        // This code metric helps in pinpointing overly complex and untested code.
        // Reference: http://www.artima.com/weblogs/viewpost.jsp?thread=215899
        // Formula:   CRAP(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)
        warnif count > 0
        from m in JustMyCode.Methods
        
        // Don't match too short methods
        where m.NbLinesOfCode > 10
        
        let CC = m.CyclomaticComplexity
        let uncov = (100 - m.PercentageCoverage) / 100f
        let CRAP = (CC * CC * uncov * uncov * uncov) + CC
        where CRAP != null && CRAP > 30
        orderby CRAP descending, m.NbLinesOfCode descending
        select new { m, CRAP, CC, uncoveredPercentage = uncov*100, m.NbLinesOfCode }
        

        【讨论】:

          猜你喜欢
          • 2011-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-14
          • 1970-01-01
          相关资源
          最近更新 更多