【问题标题】:How would you measure code "quality" across a large project您将如何衡量大型项目中的代码“质量”
【发布时间】:2009-08-30 03:41:21
【问题描述】:

我正在一家相当大的公司从事一个相当大的项目,几年前的筹备工作,我正在承担推动提高整体代码质量的任务。

我想知道在这种情况下您会使用什么样的指标来衡量质量和复杂性。我不是在寻找绝对的措施,而是一系列随着时间的推移可以改进的项目。鉴于这是对数百个项目的宏观操作(我已经看到一些关于更小项目的问题),我正在寻找更自动化和更全面的东西。

到目前为止,我的列表如下所示:

  • 全功能测试期间的代码覆盖率
  • BVT 故障反复发生
  • 依赖关系图/分数,基于 nDepend 等工具
  • 构建警告数
  • 发现/抑制的 FxCop/StyleCop 警告数
  • “catch”语句的数量
  • 手动部署步骤数
  • 项目数量
  • “死”的代码/项目的百分比,例如,未在任何地方引用
  • 代码审查期间的 WTF 数量
  • 代码总行数,可能按层细分

【问题讨论】:

标签: software-quality


【解决方案1】:

您应该围绕六个主要的软件质量特征来组织工作:功能性、可靠性、可用性、效率、可维护性和可移植性。我放了一个描述这些特征的diagram online。然后,为每个特征确定您想要并能够跟踪的最重要的指标。例如,一些指标,如 Chidamber 和 Kemerer 的指标,适用于面向对象的软件,而其他指标,如圈复杂度,则更通用。

【讨论】:

    【解决方案2】:

    也许你会发现这个分析很有趣或很有见地:A Tale of Four Kernels
    编辑: schema, and the corresponding queries

    【讨论】:

      【解决方案3】:

      圈复杂度是一个不错的“质量”指标。不过,如果它是唯一的指标,我相信开发人员可以找到一种“游戏”它的方法! :)

      然后是C.R.A.P. 指标...

      附: NDepend 有大约 100 亿个指标,所以这可能值得一看。有关反射器,另请参阅 CodeMetrics

      天啊!我刚刚注意到你已经提到了 NDepend。

      跟踪报告的错误数量也很有趣...

      【讨论】:

      • 快照。 CodeMetrics PS 可能值得单独询问。
      • 我们有很多人在内部打开和跟踪错误。我的应用程序和每个版本的其他程序中存在数以万计的错误。就像我说的......大。
      【解决方案4】:

      如果您承担了推动提高整体代码质量的任务。你可以看看:

      • 您目前有多少未解决的问题,需要多长时间才能解决?
      • 您有什么流程来收集需求?
      • 您的员工是否遵循最佳做法?
      • 您是否定义了用于描述贵公司编程方法的 sop。

      如果您有多个开发人员参与一个大型项目,那么每个人都有自己的编程方式。每种编程风格都能解决问题,但有些答案的效率可能低于其他答案。

      在攻击新功能或修复现有代码时,您如何利用员工。让开发人员按照编程标准在团队中工作会迫使每个人都成为更好的代码。

      当您的人员按照规则更有效地编码时,您的开发时间应该会更快。

      你可以获得所有你想要的指标,但我说首先你必须看看事情是如何完成的:

      你们的开发实践是什么?

      在不知道事情目前进展如何的情况下,您可以获得所需的所有指标,但您永远看不到任何改进。

      【讨论】:

      • 我喜欢这个答案,因为它说明了我的问题的另一面……我为开发制定了哪些标准?我想我正在研究推动这些标准的指标,但我们可以从两个方向来解决这个问题。
      【解决方案5】:

      software cloning/duplicate code 的数量,显然越少越好。 (Link 讨论了克隆和检测/测量它们的各种技术。)

      【讨论】:

      • 路过举报人:您可以有礼貌地解释您为什么反对这个。
      猜你喜欢
      • 1970-01-01
      • 2010-09-20
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多