以vscode为例,介绍几款常用且必备的代码质量工具:
- editorconfig:用于统一团队代码格式:如每行缩进是空格还是tab
安装地址:vscode搜索editorconfig 或 marketplace.visualstudio.com/items?itemN…
使用方法:每个项目根目录建立.editorconfig文件,随项目签入git 内容示例如下
# 如果找到这个,就不会往更上级目录查找editorconfig文件
root = true
# 对所有文件而言
[*] end_of_line = lf Unix风格换行符(用于windows(或者*nix混合)编程情况,但windows的git一般设置为签出windows(crlf)换行,签入unix换行(lf),因此必要性不大。
insert_final_newline = true 文件末尾是否有换行
# 可以对文件类型、路径做单独设置
[*.{js,py}]
charset = utf-8
# 缩进风格,space空格,或tab
indent_style = space
# 几个空格,或tab
indent_size = 2
# 文件编码
charset = utf-8
# 是否应去掉每行末尾空格
trim_trailing_whitespace = true
每个文件手动格式化代码后生效(shift+alt+f),或于回车新增行时生效(如缩进) editorconfig还可以加入非标准的格式选项,如webstorm可以导出更多设置到editorconfig
- eslint 既是一个npm包,也是一个vscode插件。
插件地址:marketplace.visualstudio.com/items?itemN…
npm包安装 npm install --save-dev eslint eslint建议安装较高版本
建议同时安装prettier格式化代码,并且eslint的规则里应同时加入格式化内容 (应该和editorconfig一致),保证编辑器的格式化和eslint的自动格式化行为一致
npm install --save-dev eslint-plugin-prettier
npm install --save-dev --save-exact prettier
建议:开启eslint保存时自动fix功能. 安装eslint插件之后,在项目的.vscode目录建立settings.json
加入如下内容:
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
示例.eslintrc如下. .eslintrc文件也应该全组统一,并可以加入git-hook自动运行检查和fix
{
"plugins": [ "react", "prettier" ],
"extends": [ "eslint:recommended", "plugin:react/recommended" ],
"rules": {
"no-set-state": "off",
"prettier/prettier": "error"
}
}
可选组件:(建议)
SonarLint:
SonarLint是一个本地版的SonarQube,带有大量的规则
插件安装后如提示找不到Java,需要在扩展设置里设置JRE地址:
如果本机没有安装Java,需要下载www.oracle.com/java/techno… 需要下载Java 11和以上版本
JS的规则集:(也可在vscode内查看,在文件浏览器下面) rules.sonarsource.com/javascript
SonarLint的问题有4个等级,自高到低为:
Blocker 阻塞, Critical 严重, Major 主要, Minor次要。
举例:死循环属于阻塞问题;调用方法少参数属于严重问题,试图用try来捕捉promise问题则为主要问题。
特别的,SonarLint还包括Code Smell规则,比如说函数是不是过于复杂需要拆分了
Iceworks, 或其套件集,这是阿里前端团队之前推荐过的一个套件(developer.aliyun.com/article/775…)
marketplace.visualstudio.com/items?itemN…
优点是中文,就是一套eslint规则集+codemod
(上图是create-react-app直接生成项目的得分)