Open johnnychq opened 6 years ago
.editorConfig安装后就会格式化on save,但eslint就不行,需要手动settings
配置
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.fixAll.eslint": false
}
参见:
https://www.digitalocean.com/community/tutorials/linting-and-formatting-with-eslint-in-vs-code
为了表述方便,并顾及一些具体细节,我们以
javascript
作为例子,其他的画瓢即可。既然是代码风格检查套路,那就是不局限与语言;哪种语言,都类似,照葫芦画瓢即可。为了表述方便,并顾及一些具体细节,我们以
javascript
作为例子。代码风格检查的工程化套路,我们希望达到的目的:
代码风格规则
的一致性关于代码风格
代码风格有时过于笼统,实际上可以进一步分为两个层面
因为代码隶属文本,所以文本格式本身应该隶属代码风格的一部分,且是基础,不需要言明的部分,关于文本格式检查的规范很标准,统一采用
.editorconfig
配置即可。在代码语法层面上,是有
偏好
、警告
和错误
之分的,偏好指的是喜好,比如=
前后是否有空格,不影响程序的运行;警告
不是偏好,看到警告需要警醒,很可能程序存在问题,或者自己逻辑不清,比如变量定义却没有使用;错误
就不用说了,代码执行到这一行必定报错,比如重复let
变量。代码语法层面,主要通过AWT抽象语法书分析后给出结果;在工具使用上,一般也不会区分
偏好
,警告
,错误
,但我们心里还是要了解区别的,主要通过.eslintconfig
来统一声明语法规则 。从研发生命周期看代码风格检查
从开发到发布,代码风格检查主要作用在如下五个环节
pre-commit
等工具会在你本地.git仓库中安装钩子,提交代码时,自动触发脚本检查,报警或报错,报错时直接组织提交jenkins
,travis
中触发代码风格检查,如果失败则警告或中断CI/CD按照时间顺序完整的5个过程:
按照使用频率进行的优先级排序(蓝色深度优先级高):
其中 ,
git-commit
工具的普及,部署成本低,标准化高,所以优先级排在第二因为我们
目的2
的要求,在上述5个环节中,想达到代码风格规则的一致性,必须要求有统一的代码风格规则描述介质,在js的世界里,有.editorconfig
,非常幸福,让我们可以跨介质共享配置规则。从行为和体验看代码风格检查
根据代码风格检查的强制性和体验,分为如下6类:
--no-verify
强制跳过检查,所以干扰性可以接受。travis
,jenkins
往往会有管理员功能可以帮你走后门,跳过这个环节。小结
了解了5个部署环节和行为体验,基本上代码风格各手段的利弊得失你就清楚了,根据自己的业务需求,配置出适合自己的一套方案即可。
一般来说,IDE和本地钩子就够了,稍微严谨一些的话,再加一个CI/CD。