鼓励表演性加班
鼓励“拖延症”
员工满意度降低
鼓励冗余代码凑数据
鼓励大幅增删
员工成就感降低
直接解析代码规模及复杂度,排除代码风格、换行习惯等噪音干扰
识别移动代码、粘贴代码、修改数据等操作,并适当调整权重,鼓励重要且有创造性的工作
代码当量作为核心指标,与 DevOps 不同域的指标结合,可更精准度量效能,发现可优化的问题。例如:
代码当量+需求=需求颗粒度,更准确地判断需求大小,推算研发产能与项目交付计划。
代码当量+bug 数=千当量 bug 率,相对单一 bug 数量指标,可更准确量化当前项目、团队人员的代码质量。
工时等指标并不是完全没有意义,它们只是不适合用来度量软件研发的工作量。
事实上,当我们将代码当量和这些指标进行交叉分析,可能会获得额外洞见。例如:
将修改前后的代码分别解析为抽象语法树(AST),排除代码风格、注释格式等与代码逻辑无关的因素干扰。
使用 tree diff 算法,计算修改前后 AST 之间的编辑脚本(Edit Script)。编辑脚本是对语法树节点的一系列编辑操作。
操作类型有插入、删除、移动、更新共四种;节点类型包括Function、If、Assignment 等。
对不同操作类型和节点类型赋予不同权重。例如,插入代码的权重高于移动代码,更新代码逻辑的权重高于更新数据。
计算编辑脚本一系列编辑操作的加权总和,得到本次修改的代码当量。