代码之家  ›  专栏  ›  技术社区  ›  Alix Axel

可用的代码度量系统?[关闭]

  •  2
  • Alix Axel  · 技术社区  · 15 年前

    除了圈复杂度之外,还有什么其他的代码度量系统?

    4 回复  |  直到 11 年前
        2
  •  2
  •   Ira Baxter    15 年前

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

    实际上有很多,很多的度量标准。事实上, 任何 将源代码映射到度量尺度(整数、实数、分类枚举)的源代码的函数可以视为度量。

    大多数代码度量的问题是,它们往往与SLOC成比例,如果是这样,那么SLOC也一样好。使用度量的最佳方法是现在测量代码,并跟踪度量随时间的变化;向上或向下的趋势将告诉您比度量本身更多的信息。向上意味着坏消息;代码越来越复杂。

    考虑代码(复杂性)度量和错误率也是很有用的。模块的高度复杂性, 同一模块中的高错误率表明,重新设计该模块可能是防止该领域进一步出现问题的一个好主意。高复杂性和低错误率意味着代码看起来很可怕,但事实并非如此。

        3
  •  1
  •   JoshJordan    15 年前

    Halstead's Software Science 是一个很棒的度量套件,可以让您对程序的实际构造有有趣的了解。

    还有一个用卡片和玻璃制作的模型,但我不确定书外是否有。不管怎样,我都会找它的。

        4
  •  0
  •   Patrick from NDepend team    12 年前

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

    注意,这些代码度量可以通过 CQLinq queries and rules 定义自己的自定义代码度量。

    例如,除了 圈复杂度 C.R.A.P metric . 基本上, 中华人民共和国 将蹩脚的代码定义为复杂的方法(高 圈复杂度 )测试覆盖不足。这个 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 }
    
    推荐文章