lang: zh slug: code-quality-tools-eslint-prettier-black-ruff title: ‘代码质量工具指南:ESLint、Prettier、Black、Ruff 等’ description: ‘为任何语言设置代码质量工具:ESLint、Prettier、Black、Ruff、golangci-lint 和 rustfmt。 完整的配置、CI 集成和预提交挂钩。’ tags: [“guide”, “open-source”, “reference”, “tutorial”] date: 2026-05-18 00:00:00+08:00 lastmod: 2026-05-18 00:00:00+08:00 tech_stack: [] application_domain: Dev Utils source_version: ’' licensing_model: Open Source license_type: MIT file_size: ’' file_md5: ’' download_url: ’' backup_url: ’' github_repo: ’' last_maintained: ‘2026-05-18’ draft: false aliases:- /posts/code-quality-tools-eslint-prettier-black-ruff/ featureImage: /images/articles/eslintprettierblackruff.png 常见问题解答:
- q: ’linting 和格式化之间有什么区别?' a: ‘Linting 分析代码中潜在的错误、错误和反模式,例如未使用的变量、无法访问的代码和类型不匹配,从而强制执行正确性。 格式涉及代码表示,例如缩进、行长度和引用样式,以增强一致性。 ESLint 捕获了错误,而 Prettier 使修复看起来统一。
- q:“Ruff 比 Flake8 和 Pylint 快多少?” a:“在典型的 Django 代码库上,Ruff 大约需要 0.3 秒(7,400 个文件/秒)完成,而 Flake8 需要 12.4 秒(180 个文件/秒),Pylint 需要 45.2 秒(49 个文件/秒)。 这种 10-100 倍的加速来自 Ruff 的 Rust 实现,使其能够在每个文件保存上运行,而不会出现明显的延迟。
- q: ‘Ruff 可以在 Python 项目中替换 Black、Flake8 和 isort 吗?’ ‘是的。 Ruff 是一个基于 Rust 的工具,可处理 linting(替换 Flake8 及其插件)、格式化(通过 ruff 格式实现黑色兼容输出)和导入排序(替换 isort),以及 pydocstyle、pyupgrade 和 autoflake 功能。 截至 2025 年初,它实现了 800 多个 lint 规则,让您可以配置一个工具而不是多个工具。
- q: ‘什么替换了 ESLint 9 中的 .eslintrc 配置?’ a:‘ESLint 9 于 2024 年 4 月发布,引入了使用 eslint.config.js 文件的平面配置格式,该文件取代了旧的 .eslintrc 文件。 扁平配置更明确,更容易调试,并且原生支持 JavaScript 配置。 您可以通过运行 npx @eslint/migrate-config .eslintrc.json 来迁移现有配置。
- q:“如何设置预提交挂钩以提高代码质量?” a: ‘使用 pip install pre-commit 安装预提交框架,创建一个 .pre-commit-config.yaml 文件,列出您的钩子(例如 ruff、ruff-format、eslint 和 prettier 镜像),然后运行 pre-commit install 以激活 Git 存储库中的钩子。 使用 pre-commit run –all-files 根据现有文件测试配置。 对于 JavaScript 项目,Husky 提供了一个更简单的替代方案。 featureImage:/images/articles/code-quality-tools-guide-eslint-prettier-black-ruff.png——{</* 资源信息 />}在专业软件开发中,代码质量工具不是可选的。 他们在进入生产之前捕获错误,强制团队成员之间的一致性,并消除有关格式和风格的整个代码审查争论。 没有自动化质量执行的项目会陷入不一致。 拥有正确工具的项目可以通过最少的持续工作来保持可读性和可靠性。本指南涵盖了 JavaScript、TypeScript、Python、Go 和 Rust 的基本检查和格式化工具。 您将找到每种语言的完整设置说明、配置示例、CI/CD 集成模式和预提交挂钩配置。## 为什么代码质量工具至关重要### 代码不一致的成本不一致的代码的维护成本很高。 Stripe 2023 年的一项研究估计,开发人员将 31% 的时间花在处理技术债务上,其中大部分是由不一致的模式造成的,这些模式使代码更难理解和修改。 当项目中的每个文件使用不同的格式、命名约定和样式模式时,开发人员必须不断进行上下文切换。 认知负荷增加。 错误隐藏在混乱中。### Linting 与格式化:了解差异Linting 和格式化有不同的目的:- Linting 分析代码中的潜在错误、错误和反模式。 它捕获未使用的变量、无法访问的代码、类型不匹配和安全漏洞。 Linters 强制执行正确性*。
- 格式涉及代码表示 - 缩进、行长度、引用样式、尾随逗号。 格式化程序强制一致性。这些工具是互补的。 ESLint 捕获了该错误。 Prettier 使修复看起来统一。 两者都在您的编辑器和 CI 管道中运行。### 质量工具如何减少错误和审查时间自动化质量工具通过消除风格争论来减少拉取请求审查时间。 当 Prettier 处理格式时,审阅者重点关注逻辑和架构。 当 ESLint 发现常见错误时,需要人工审查的错误就会减少。 配置良好的工具套件可以捕获 30-50% 的问题,否则需要手动检查。## JavaScript/TypeScript:ESLint 深入探究### What Is ESLint and How It WorksESLint 是 JavaScript 和 TypeScript 的静态分析工具。 它将您的代码解析为抽象语法树 (AST),然后应用规则来检测从风格偏好到潜在运行时错误的各种模式。 ESLint 拥有 300 多个内置规则和数千个第三方规则,是所有语言生态系统中最可配置的 linter。### Setting Up ESLint 9 (Flat Config)ESLint 9 于 2024 年 4 月发布,引入了平面配置格式 (
eslint.config.js),它取代了旧的.eslintrc文件。 扁平配置更明确,更容易调试,并且原生支持 JavaScript 配置。安装 ESLint 9:bas h npm install --save-dev eslint @eslint/js创建eslint.config.js:javascrip t 从'@eslint/js'导入js;ejavascrip t 从’@eslint/js’导入js;
导出默认[ js.configs.recommended, { files: [’/*.js’, ‘/*.jsx’], 语言选项:{ ecma版本:2024, 源类型:‘模块’, 全局变量:{ 控制台:“只读”, 进程:‘只读’, }, }, 规则:{ ’no-unused-vars’: ’error’, ‘无控制台’: ‘警告’, ’eqeqeq’: ‘错误’, }, }, ];
Recommende
d
Rules and Configurations从“js.configs.recommished”开始并逐步添加规则。 Common additions include:| Rule | Purpose | Severity |
|------|---------|----------|
| `no-unused-vars` | Catch declared but unused variables | Error |
| `no-undef` | Catch undeclared variables | Error |
| `eqeqeq` | Require strict equality (`===`) | Error |
| `curly` | Require braces for all control statements |```
bas
h
npx eslint .
```r
a
l
` | Require Error objects for throw | Error |### 与 TypeScript 集成 (@typescript-eslint)对于 TypeScript 项目,添加 TypeScript 解析器和插件:````
bas
h
npm install --save-dev typescript-eslint
````更新`eslint.config.js`:```
javascrip
t
从'@eslint/js'导入js;
从 'typescript-eslint' 导入 tseslint;导出默认[
js.configs.推荐,
...tseslint.configs.recommended,
{
files: ['**/*.ts', '**/*.tsx'],
语言选项:{
解析器:tseslint.parser,
解析器选项:{
project: './tsconfig.json',
},
},
},
];
````### 流行的可共享配置:Airbnb、```
bas
h
npm install --save-dev typescript-eslint
l
e
ESLint 配置:- Airbnb (eslint-config-airbnb) — 最```
javascrip
t
从’@eslint/js’导入js;
从 ’typescript-eslint’ 导入 tseslint;
导出默认[ js.configs.推荐, …tseslint.configs.recommended, { files: [’/*.ts’, ‘/*.tsx’], 语言选项:{ 解析器:tseslint.parser, 解析器选项:{ project: ‘./tsconfig.json’, }, }, }, ];
ESLin
t
Stylistic (`@stylistic/eslint-plugin`) 提供从核心 ESLint 项目中提取的格式化规则。 将其用于需要在单个工具中进行 linting 和基本格式化的项目:```
javascrip
t
从 '@stylistic/eslint-plugin' 导入风格;导出默认[
{
插件:{
'@stylistic':风格,
},
规则:{
'@stylistic/indent': ['error', 2],
'@stylistic/quotes': ['error', 'single'],
'@stylistic/semi': ['error', 'always'],
},
},
];
````## JavaScript/TypeScript: Prettier Setup### What Is Prettier: Opinionated Code Formatter[Prettier](https://prettier.io) 是一个固执己见的代码格式化程序,支持 JavaScript、TypeScript、JSON、CSS、HTML、Markdown 等。 它通过强制执行单一一致的样式来消除开发人员的所有格式化决策。 与可配置格式化程序不同,Prettier 有意限制选项以防止自行车脱落。### Installing and Configuring .prettierrc安装更漂亮:````
bas
h
npm install --save-dev --save-exact 更漂亮
javascrip t 从 ‘@stylistic/eslint-plugin’ 导入风格;
导出默认[ { 插件:{ ‘@stylistic’:风格, }, 规则:{ ‘@stylistic/indent’: [’error’, 2], ‘@stylistic/quotes’: [’error’, ‘single’], ‘@stylistic/semi’: [’error’, ‘always’], }, }, ];
ppin
g
区域 — 两者都可以强制格式化。 The recommended approach is:- **ESLint** 处理代码质量规则(正确性、最佳实践)
- **Prettier** 处理格式规则(缩进、引号、换行符)使用 eslint-config-prettier 禁用与 Prettier 冲突的 ESLint 规则:````
bas
h
npm install --save-dev eslint-config-prettier
Ad
d
to eslint.config.js: javascrip t 从 'eslint-config-prettier' 导入 prettier;导出默认[ // ...其他配置 更漂亮, ]; ````### 编辑器集成(VS Code、Vim、JetBrains)为您的编辑器安装 Prettier 扩展并启用“保存时格式化”。 在 VS Code 中,添加到 `settings.json`:
jso
n
{
“editor.defaultFormatter”: “esbenp.prettier-vscode”,
“editor.formatOnSave”:true
}
````## ```
bas
h
npm install –save-dev –save-exact 更漂亮
p
新项目的设置1.安装依赖项:````
bas
h
npm 安装 --```
jso
n
{
“半”:真实,
“单引号”:正确,
“标签宽度”:2,
"trailingComma": "es5",
“打印宽度”:100
}
```从'@eslint/js'导入js;
从 'typescript-eslint' 导入 tseslint;
从 'eslint-config-prettier' 导入 prettier;导出默认[
js```
节点模块
距离
建造
覆盖范围
*.min.js
``已修复,
{
文件:['**/*.ts', '**/*.tsx'],
语言选项:{
解析器:tseslint.parser,
},
规则:{
'@typescript-eslint/no-unused-vars': '错误',
'@typescript-eslint/explicit-function-return-type': '警告',
},
},
更漂亮,
];
````3. 使用您的格式首选项创建 `.prettierrc`。4.添加package.json脚本:```
jso
n
{
“脚本”:{
"lint": "eslint.",
"lint:fix": "eslint .```
bas
h
npm install --save-dev eslint-config-prettier
check “: “prettier –check .” } } ````### 从 ESLint 旧配置迁移 ``` javascrip t 从 ’eslint-config-prettier’ 导入 prettier;
导出默认[ // …其他配置 更漂亮, ];
on
` 生成入门平面配置
2.查看并调整生成的文件
3.重命名或删除`.eslintrc.json`
4. 使用“npx eslint”进行测试。### 用于自动检查的 CI/CD 集成添加 GitHub Actions 工作流程:````
yam
l
名称:代码质量
上:[pull_request]
职位:
林````
jso
n
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
“editor.formatOnSave”:true
}
actions /setup-node@v4 与: 节点版本:‘20’ 缓存:’npm’
- 运行:npm ci
- 运行:npm run lint
- 运行:npm运行格式:检查 ````## Python:黑色——不妥协的``` bas h npm install –save-dev eslint prettier eslint-config-prettier typescript-eslint
s
.io) 是 Python 最流行的代码格式化程序。 它的理念很简单:有一种正确的方法来格式化 Python c```
javascrip
t
从'@eslint/js'导入js;
从 'typescript-eslint' 导入 tseslint;
从 'eslint-config-prettier' 导入 prettier;
导出默认[
js.configs.推荐,
...tseslint.configs.推荐,
{
文件:['**/*.ts', '**/*.tsx'],
语言选项:{
解析器:tseslint.parser,
},
规则:{
'@typescript-eslint/no-unused-vars': '错误',
'@typescript-eslint/explicit-function-return-type': '警告',
},
},
更漂亮,
];
````''
````### Black With Jupyter NotebooksBlack 通过“black[jupyter]”额外功能支持 Jupyter 笔记本:````
bas
h
pip install "black[jupyter]"
黑色笔记本.ipynb
````### 限制以及何时使用替代方案黑的严格是它的强项和弱点。 它不会格式化文档字符串(使用“docformatter”)、对导入进行排序(使用“isort”或“ruff”)或处理特定的团队约定。 对于需要更大灵活性的团队,Ruff 的格式化程序提供了黑色兼容输出和附加选项。## Python:Ruff — 超快的一体化 Linter
jso n { “脚本”:{ “lint”: “eslint.”, “lint:fix”: “eslint . –fix”, “format”: “prettier –write .”, “format:check”: “prettier –check .” } } ``整个工具链。 一种工具可以处理 linting(Flake8 + 插件)、格式化(Black 兼容)、导入排序(isort)等。 截至 2025 年初,Ruff 实施了 800 多个 lint 规则,并正在积极添加新规则。The consolidation argument alone is compelling. 您无需单独配置 Flake8、Black、isort、pydocstyle、pyupgrade 和 autoflake,只需配置一个工具即可。### 10-100x Faster Than AlternativesRuff 的 Rust 实现提供了非凡的性能。 典型 Django 代码库的基准测试显示:| 工具 |``` yam l 名称:代码质量 上:[pull_request] 职位: 棉绒和格式: 运行:ubuntu-latest 步骤:
- 使用:actions/checkout@v4
- 使用:actions/setup-node@v4 与: 节点版本:‘20’ 缓存:’npm’
- 运行:npm ci
- 运行:npm run lint
- 运行:npm运行格式:检查
``在大多数情况下是黑色兼容输出。 切换:
bas h pip 安装 ruff 领子格式。 # 替换黑色。 领子检查。 # 替换 flake8 皱褶检查-修复。 # 自动修复问题### 完整的 pyproject.toml 配置汤姆 [工具.ruff] 目标版本=“py311” 行长 = 88[工具.ruff.lint] 选择= [ "E", # pycodestyle 错误 “F”,# Pyflakes “我”,# isort "N", # pep8 命名 "W", # pycodestyle 警告 “UP”,#pyupgrade “B”,# flake8-bugbear “C4”,# flake8 理解 “SIM”,# flake8-simplify ] ignore = ["E501"] # 行太长(由格式化程序处理)[工具.ruff.lint.pydocstyle] 惯例=“谷歌”[工具.ruff.格式] 引用-stbas h 点安装黑色 黑色。
````### Migration Guide From Flake8/Black to Ruff1. 从依赖项中删除 Flake8、Black、isort 和相关插件
2. Install Ruff: `pip install ruff`
3. 转换`.flak```
tom
l
[工具.黑色]
行长 = 88
target-version = ['py311']
包含 = '\.pyi?$'
扩展排除 = '''
/(
迁移
)/
'''
```
e
pre-commit hooks and CI pipelines
6. 运行 `ruff format .` 以验证格式是否符合预期## Go: gofmt and golangci-lint### Built-In Formatting With gofmtGo 在标准工具链中包含 `gofmt`。 每一次 ``bash
pip install "black[jupyter]"
黑色笔记本.ipynb
```工具是第三方添加的,Go 将格式化视为一种语言功能。 Go 谚语很明确:“Gofmt 的风格没人喜欢,但 gofmt 却是每个人都喜欢。”Go 代码格式:````
bas
h
戈夫姆特-w。
````大多数
Go 编辑器默认在保存时运行 gofmt。### golangci-lint 用于综合 LintingWhile gofmt handles formatting, linting requires [golangci-lint](https://golangci-lint.run), a meta-linter that runs 30+ individual linters in parallel:```
bas
h
golangci-lint run
```创建`.golangci.yml`:````
yam
l
短绒棉绒:
启用:
- 错误检查
- 简单
- 政府
- 无效分配
- 静态检查
- 未使用
- 批评家
- 戈赛克
````### 配置和 CI 集成添加到 GitHub 操作:````
yam
l
- 名称:golangci-lint
使用:golangci/golangci-lint-action@v6
与:
版本:最新
````## Rust:rustfmt 和 Clippy### rustfmt 用于一致格式Rust 的官方格式化程序“rustfmt”是随 Rustup 一起安装的:````
bas
h
rustfmt src/**/*.rs
````在
`rustfmt.toml` 中配置:````汤姆
最大宽度 = 100
制表符空格 = 4
版本=“2021”
````### Clippy Linting 和代码建议[Clippy](https://doc.rust-lang.org/clippy) 是 Rust 的 linter,具有超过 650 个 lint,范围从样式建议到性能改进和错误检测:````
bas
h
货物剪辑
````启用所有
lint 以进行最大程度的检查:````
bas
h
货物 Clippy -- -W Clippy::all -W Clippy::迂腐
````### 货物整合`rustfmt` 和 `clippy` 都直接与 Cargo 集成。 将别名添加到 `.cargo/confi```
bas
h
pip 安装 ruff
领子格式。 # 替换黑色。
领子检查。 # 替换 flake8
皱褶检查-修复。 # 自动修复问题
```预提交框架简介The
[pre-commit](https://pre-commit.com) framework manages Git pre-commit hooks across languages. It installs hooks that run automatically bef```
tom
l
[tool.ruff]
target-version = "py311"
line-length = 88
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"F", # Pyflakes
"I", # isort
"N", # pep8-naming
"W", # pycodestyle warnings
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"SIM", # flake8-simplify
]
ignore = ["E501"] # Line too long (handled by formatter)
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
```e
p
o
: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-format- 仓库:https://github.com/pre-commit/mirrors-eslint
修订版:v9.0.0
挂钩:
- ID:eslint
附加依赖项:
- eslint@9.0.0
- eslint-config-prettier- 仓库:https://github.com/pre-commit/mirrors-prettier
修订版:v4.0.0-alpha.8
挂钩:
- ID:更漂亮
````针对所有文件运行:````
bas
h
预提交运行 --all-files
````### 流行的 Hooks:尾随空白、文件尾修复器`pre-commit-hooks` 存储库提供了每个项目都应该使用的与语言无关的检查:- `trailing-whitespace` — Removes trailing whitespace
- `end-of-file-fixer` — Ensures files end with exactly one newline
- `check-yaml` — Validates YAML syntax
- `check-added-large-files` — Prevents committing files over a size threshold
- `check-merge-conflict` — Blocks commits with unresolved merge conflict markers### 满足项目特定需求的自定义 Hook您可以为特定于项目的检查定义自定义挂钩:````
yam
l
回购协议:
- 回购:本地
挂钩:
- id:运行测试
名称:运行单元测试
条目: pytest 测试/
语言:系统
类型:[Python]
pass_filenames: false
bas
h
戈夫姆特-w。
``呃
### 用于 JavaScript/TypeScript 项目的 Husky[Husky](https://github.com/typicode/husky) 简化了 JavaScript 项目的 Git 挂钩。 安装和配置:
bas
h
npx husky-init && npm install
`.husky/pre-commit`:````
bas
h
npm 运行 lint
npm ```
bas
h
戈朗吉林特运行
````## CI/CD 集成以提高代码质量### Git```
yam
l
短绒棉绒:
启用:
- 错误检查
- 简单
- 政府
- 无效分配
- 静态检查
- 未使用
- 批评家
- 戈赛克
```
uns
-on: ubuntu-最新版
步骤:
- 使用:actions/checkout@v4
- 使用:actions/setup-node@v4
与:
节点版本:'20'
缓存:'npm'
- 运行:npm ci
- 运行:np```
yam
l
- 名称:golangci-lint
使用:golangci/golangci-lint-action@v6
与:
版本:最新
```使用:actions/checkout@v4
- 使用:actions/setup-python@v5
与:
python-版本:'3.12'
- 运行:pip install ruff
- 运行:ruff 检查。
- 运行: ruff format --check 。
````### GitLab CI 管道```
bas
h
rustfmt src/**/*.rs
阶段:
- 质量lint-js: 阶段:品质 图像``` tom l 最大宽度 = 100 制表符空格 = 4 版本=“2021”
p
m
运行格式:检查lint-python:
阶段:品质
图像:Python:3.12
脚本:
- pip安装ruff
- 领子检查。
- 皱褶格式--检查。
````### 由于 Lint 错误而导致构建失败将 CI 配置为因 lint 错误而失败。 设置bash的退出代码
货物剪辑
``当发现违规时,为零 - 此``bash 中的所有工具
货物 Clippy -- -W Clippy::all -W Clippy::迂腐
``违反质量标准的代码。### 将 Lint 结果报告为 PR 评论像 [reviewdog](https://github.com/reviewdog/reviewdog) 这样的工具将 lint 结果作为 pull reque``toml 发布
[别名]
lint =“clippy -- -W Clippy::all”
checkfmt =“fmt -- --检查”
```接口——而不是埋藏在 CI 日志中。 Reviewdog 支持 ESLint、Ruff、golangci-lint 和数十种其他工具。## 语言对照表| 语言 | 格式化程序| 短绒 | 预提交挂钩 | 配置文件|
|----------|----------|--------|------------------|--------------|
| JavaScript/TypeScript | 更漂亮 | ESLint 9 | `mirrors-prettier`、`mirrors-eslint` | `eslint.config.js`, `.prettierrc` |
| 蟒蛇 | 领口格式| 拉夫````
bas
h
pip install 预提交
预提交安装
```` | 戈朗吉林特 | 定制(本地)| `.golangci.yml` |
| 铁锈| 生锈 | 剪辑| 定制(货物)| `rustfmt.toml` |
| 多```
yam
l
回购协议:
- 仓库:https://github.com/pre-commit/pre-commit-hooks
修订版:v4.6.0
挂钩:
- id: 尾随空白
- id:文件结尾修复程序
- id:检查yaml
- id:检查添加的大文件
- id:检查合并冲突
- 仓库:https://github.com/astral-sh/ruff-pre-commit
修订版:v0.6.0
挂钩:
- id: 拉夫
参数:[--修复]
- id:ruff格式
- 仓库:https://github.com/pre-commit/mirrors-eslint
修订版:v9.0.0
挂钩:
- ID:eslint
附加依赖项:
- eslint@9.0.0
- eslint-config-prettier
- 仓库:https://github.com/pre-commit/mirrors-prettier
修订版:v4.0.0-alpha.8
挂钩:
- ID:更漂亮
````我要正确设置它们。 每一次投入都会带来投资回报。## 常见问题### 我应该一起使用 ESLint 和 Prettier 吗?是的。 ESLint 处理代码质量(正确性、最佳实践),而 Prettier 处理格式(缩进、换行、引号)。 它们是互补的。 使用 eslint-config-prettier 禁用 ESLint 的格式化规则并防止冲突。 配置您的编辑器以在保存时运行两者。### 对于 Python 来说,Ruff 比 Black 更好吗?Ruff 比 Black 更快、更全面。 它在一个工具中取代了 Black(格式化)、Flake8(linting)、isort(导入排序)和众多插件。 Ruff 的格式化程序可生成黑色兼容的输出。 对于新项目```
bas
h
预提交运行 --all-files
``或现有的 Black 用户,切换到 Ruff 格式非常简单,并且可以显着提高性能。### 如何设置预提交挂钩?安装预提交框架:`pip install pre-commit`。 使用您的钩子创建一个“.pre-commit-config.yaml”文件。 运行“pre-commit install”以激活 Git 存储库中的挂钩。 运行“pre-commit run --all-files”以针对现有文件测试配置。 对于 JavaScript 项目,Husky 提供了一个更简单的替代方案。### 我可以将一种工具用于多种编程语言吗?Prettier 处理 JavaScript、TypeScript、JSON、CSS、HTML、Mar```
yam
l
回购协议:
- 回购:本地
挂钩:
- id:运行测试
名称:运行单元测试
条目: pytest 测试/
语言:系统
类型:[Python]
pass_filenames: false
总是运行:真
``e. 没有一个工具可以很好地涵盖所有语言——为每种语言使用最好的工具。### 如何在 CI/CD 管道中强化代码质量?将 lint 和格式检查步骤添加到 CI 管道中。 当发现违规时,使用退出代码使构建失败。 对于 GitHub Actions,“pull_request”触发器对每个 PR 运行检查。 与需要状态 c```
bas
h
的分支保护规则相结合
npx husky-init && npm install
``reviewdog 可以将结果作为公关评论发布,以获得更好的可见性````
bas
h
npm 运行 lint
npm 运行格式:检查
npm测试
```上述工具
24/7 可靠,基础设施很重要:- **{< aff "digitalocean" "footer-cta-legacy" "DigitalOcean" >}}** — 200 美元免费赠金,超过 14 个全球区域,```
yam
l
名称:质量检查
上:[拉请求,推]
职位:
javascript:
运行:ubuntu-latest
步骤:
- 使用:actions/checkout@v4
- 使用:actions/setup-node@v4
与:
节点版本:'20'
缓存:'npm'
- 运行:npm ci
- 运行:npm run lint
- 运行:npm运行格式:检查
蟒蛇:
运行:ubuntu-latest
步骤:
- 使用:actions/checkout@v4
- 使用:actions/setup-python@v5
与:
python-版本:'3.12'
- 运行:pip install ruff
- 运行:ruff 检查。
- 运行: ruff format --check 。
```t
-eslint)
- [ESLint 风格](https://github.com/eslint-stylistic/eslint-stylistic)
- [golangci-lint](https://github.com/golangci/golangci-lint)
- [Clippy](https://github.com/rust-lang/rust-clippy)
- [预提交](https://github.com/pre-commit/pre-commit)
- [预提交挂钩](https://github.com/pre-commit/pre-commit-hooks)
- [哈士奇](https://github.com/typicode/husky)
- [reviewdog](https://github.com/reviewdog/reviewdog)
- [isort](https://github.com/PyCQA/isort)
yam l 阶段:
- 质量
lint-js: 阶段:品质 图片:节点:20 脚本:
- npm ci
- npm 运行 lint
- npm 运行格式:检查
lint-python: 阶段:品质 图像:Python:3.12 脚本:
- pip安装ruff
- 领子检查。
- 皱褶格式–检查。
💬 留言讨论