1. Sourc Lines of Code (SLOC)
统计代码行数多是最简单的方法。它能体现软件的规模,为项目的发展和计划提供一些数据支撑。例如,咱们每月统计一次代码的行数,咱们就能大致知道项目的发展状况。固然,这不是一个值得信赖的标准,由于有重构以及设计的因素。
SLOC 最好是统计 Source Logical Line of Code (SLLOC) 以得到更准确的信息。Logical code lines 不包含空行,单个括号行以及注释行。你能够经过 Metrics 这样的工具很容易的统计 SLLOC。
代码行数不该该被用来衡量开发效率。不然容易形成重复的,不易维护的和不专业的代码。html
2. Bugs per code_section/module/time_period
问题跟踪是保证测试和可维护性的关键步骤。假如全部的问题(bug)都是有跟踪的话,每一个代码单元,每一个模块或者某个特定时间(day, week, month...)的问题就很容易被统计(例如 Mantis 工具)。当咱们有了这些数据之后,问题的根源就能够被尽早发现并处理。
问题数量能够做为衡量开发质量的一个标准,但必须用的很当心。假如过度强调 bug 数量,那么开发和测试的关键就会很紧张。在一个有效率的公司,全部的员工都应该融洽的相处。
为了更好的对代码质量进行评估。Bug 能够分为 low, medium, high 三种级别,由于它们的重要性和修复的成本是不同的。java
3. Code Coverage
Code coverage 代表了代码被测试的程度。有不少工具能够自动统计这个数据,例如 Cobertura 。
Code coverage 不能说明单元测试的总体质量,可是能说明测试的覆盖面。它能够和其余一些指标一块儿用来衡量软件的质量。固然,咱们也须要常常回顾单元测试代码和集成测试的用例。node
4. Design/Development Contraints
软件开发中有不少设计规则,例如:
- 类/方法的长度
- 方法/属性的数量
- 方法的参数数量
- 特殊数值以及字符串的使用量
- 注释的比例
这些规则都是保证代码可读性和可维护性的重要指标。开发团队应该选择一些或者所有的规则来实施(例如 maven pmd plugin )。这将帮助提升软件产品的质量。apache
5. Cyclomatic Complexity(环路复杂度)
把环路复杂度单独列出来说是由于它和其余的设计准侧不太同样。环路复杂度是关于代码实现和执行。它也能够经过工具自动计算,例如 pmd 。 maven
这个数值是独立的代码执行路径数量。例如: 工具
Cyclomatic Complexity = E(edges) - N(nodes) + 2P (exit nodes)
So, Cyc.Cmp. = 8 - 7 + 2*1 = 3
你也能够看到,从起点到终点,有三条不一样的路径。这个值每每是针对方法来计算。根据不一样的项目类型,咱们能够设定这个值的上限,例如6,8,或者10。
一个指标不能说明整个项目的质量。使用更多的指标,会让你对项目的质量有更全面的了解。post