本篇文章主要介绍一下我们团队开发过程中,如何做代码质量的把控和提升。
背景
代码质量是一个项目最重要部分,更好的质量的代码,能够产生更少的 bug,从而让项目的质量得到提升。业务快速增长,随之而来的前端需求激增,同时经过我们的分析,发现当前我们开发流程存在的一些问题:
- 如何高效团队 CR?
- 开发人员怎么衡量项目的质量?
- 每个公司都有一个安全团队,他们负责公司一些代码安全,但是如果他万一发生一些问题的时候,通知到我们团队的时候,我们如何响应他们?
- 团队沉淀、基建落地如何量化提供一个参考依据
- 重构后的代码,除了一些我们通过一些生产或者性能对比,如何从代码层面来展示我们的量化结果。
面对上面的问题,就需要我们通过一些技术手段来实现,通过代码的扫描来找到潜在的问题。我们构建出衡量项目质量的模型,通过模型对项目分析输出评估结果反馈对进行质量趋势分析来推动优化。
如何定义质量模型?
衡量质量基础是要可量化,结合我们目前项目常用的标准主要从、技术选型、开发规范、可维护性和安全四个方面:
- 技术选型
主要关注框架的技术选型是否先进、主流、收敛,例如:框架、请求库、UI 库。 - 编码规范
主要包含是否遵守了最佳实践和团队编码规范(readme
、npm script、git 工作流、Mock、Eslint、团队最佳实践
)。 - 可维护性
代码分层、模块化、圈复杂度、重复率、大文件、文档等得出可读性及复杂度评分。 - 安全
基于团队开发规范,检测可能存在的安全风险(外链、敏感成词、token、npm 包等)。
如何检测?
通过代码静态分析的方式检测代码质量,平台整体架构分成四部分:
- 代码分析计算服务:用于仓库代码元数据采集和规则检测,质量计算
- 数据平台后端服务:用于存储采集的数据,为前端展示提供数据
- 数据平台前端服务:用于对采集的数据可视化分析展示
- 数据平台 web 可视化界面
系统工作流程主要分为两种: - 自动脚本服务定时拉取分析仓库代码,通过代码静态分析匹配规则生成检测结果计算出质量分,通过邮件、飞书等形式发送本次扫描报告,开发人员可以通过报告查看负责的项目详情做进一步处理。
- 开发人员主动触发,通过指定项目分支主动触发分析脚本,根据检测结果分析。
同时为了能够实现编码事前修改,我们将部分检测规则的 lint 继承的本地开发环境来保证做到事前检测提升效率。
质量分计算
根据质量模型把各项指标加权求和,可以得到一个工程的度总分,代表它的综合评估结果,同时对质量分的历史趋势做出预判。
实践效果
后续计划
未来我们会进一步的在检测维度上继续增加,同时持续优化可视化界面的用户体验,最终目标是打造一个完善的项目质量保障平台,能够为团队项目质量带来更大的提升。