9

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

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

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

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

5 回答 5

6

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

于 2009-08-30T21:19:54.870 回答
2

也许你会发现这个分析有趣或有见地:四个内核的故事
编辑: 模式和相应的查询

于 2009-08-30T04:07:15.360 回答
1

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

然后是CRAP指标...

PS NDepend有大约 100 亿个指标,因此可能值得一看。另请参阅反射器的CodeMetrics

哦!我刚刚注意到您已经提到了 NDepend。

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

于 2009-08-30T04:28:46.813 回答
1

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

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

当您有许多开发人员参与一个大型项目时,每个人都有自己的编程方式。每种编程风格都可以解决问题,但有些答案可能不如其他答案有效。

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

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

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

你的开发实践是什么?

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

于 2009-08-30T04:59:57.517 回答
0

软件克隆/重复代码的数量,越少越好。(链接讨论了克隆和各种检测/测量它们的技术。)

于 2009-08-30T04:44:46.797 回答