自动化代码规范工具

本文讲述了在软件开发中,为了提高代码质量和团队协作,通过自动化工具解决代码规范落地难、低质量代码遗漏线上等问题。选择了eslint、stylelint、prettier、yorkie和lint-staged等工具,结合git hooks在本地和DevOps平台实现代码质量检查。同时,介绍了自定义规则开发方法和规则等级管理,以及在实际开发中的落地实践策略。
摘要由CSDN通过智能技术生成

1 技术选型

1.1 痛点

在软件研发过程中,bug越早发现,成本越低。代码扫描和单元测试,就是在早期帮我们发现程序中问题的有效手段。代码扫描不仅能帮我们发现程序的漏洞,也能督促开发人员更规范优雅地写代码。
推动代码规范,提高代码质量,从源头把控软件产品质量,已经在研发体系形成共识。

在梳理公司前端应用时发现很多代码不规范的地方,包括简单的js问题以及代码格式问题,造成了代码可读性下降,可维护性降低,甚至对页面功能的实现和性能产生不好的影响。
例如线上出现的一个问题,其关键代码如下:

if (isValid) {
   
    function setAccount() {
   
        // code...
    }
}

在非函数的代码块内部声明函数,这在“strict”模式下是被禁止的,导致页面在低版本安卓和IOS系统下解析错误,无法正常渲染,影响客户使用业务。这一类的错误理应在开发阶段就得到问题提示,却遗漏到生产环境。

由于团队人数众多,合作开发,每个人风格各异,为了提高代码可读性、可维护性以及性能和兼容性,同时为了回避错误、小纠结和反模式,保证代码质量,便于团队协作,推行前端规范来对代码质量进行统一把控。主要针对的痛点如下:

1)代码规范落地难

部门曾采取过的方式有:

  1. 编写文档类代码规范,比如word、wiki等形式,组织培训宣传,召集开发者进行学习;
  2. 设置code review机制,合并代码时需要多人审查。

这两种方式,存在成本高、收益低、难度大等问题,代码规范审查容易慢慢流于形式,约束力逐渐降低。归根结底在于需要工具去强行保证代码必须经过开发规范的扫描。

2)低质量代码容易遗漏到线上

在实际开发过程中,开发人员可以很轻易地执行git push操作将本地代码推送到远程仓库。如果代码质量低下,就很容易对线上应用质量埋下隐患。在合并的时候再进行code review,问题积压较多,时间不够充分,反馈链路太长。
最好的方式是,本地进行commit的时候,保证当前代码能够满足团队制定的开发规范,如果不通过,commit则无法成功,这样可从源头保证代码质量。

3)代码格式难统一

各个开发成员的代码格式都有很大的不同,有人字符串喜欢用双引号,有人喜欢使用单引号等等。代码格式不统一,将会影响代码可读性,无疑也增加了团队内的沟通成本。仅靠开发者手动修改和开发时注意,效率不够高也容易有遗漏。需要有自动化工具来高效完成格式统一。

4)代码质量文化培养难

通过引入代码质量工具,在开发过程中能够时刻对自身代码质量进行约束,逐渐培养自身对代码质量有“洁癖”的开发观念,同时也会成为团队的质量文化。

1.2 技术栈选型

针对上述痛点,选择eslint + stylelint + prettier + yorkie + lint-staged这几个工具进行组合。以及搭配DevOps平台,对代码进行线下和线上双重检查。
要想防患于未然,防止将存在潜在问题的代码带到线上环境,最好的办法是在本地提交代码时就能够扫描出潜在的错误,并强制将其修改后才能提交,这样就能保证线上代码至少不会存在低级的程序错误。
其中yorkie就是通过git hooks实现强制在pre-commit阶段执行lint指令;lint-stage则保证git 暂存区的代码,即本次修改的代码可得到扫描检查;eslint和stylelint则是实际负责代码规范校验的工具;最后由prettier自动统一代码风格。

当违反所配置的规则,严重等级为error时,就不能提交成功,必须将其修改为符合规范的方可提交。确保最终提交到线上的代码符合代码规范、风格统一。

DevOps平台进行线上检查,还可以提供相关页面报告。

2 规则介绍

2.1 基础规则

eslint和stylelint的推

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值