代码质量工具大揭秘:ESLint、Prettier、Black、Ruff 2026 版

对比 ESLint、Prettier、Black、Ruff 等代码质量工具。格式化、Linting、自动修复。提升代码可维护性。

  • JavaScript
  • Python
  • TypeScript
  • MIT
  • 更新于 2026-05-18

什么是代码质量工具? #

代码质量工具帮助开发者写出「干净、一致、可维护」的代码。通过 Linting(检查)和 Formatting(格式化)。

工具分类 #

类型JavaScriptPython通用
LinterESLintflake8, pylintgolangci-lint
FormatterPrettierBlack, YAPFclang-format
RunnerRuff

JavaScript 生态 #

ESLint:JavaScript Linter #

// .eslintrc.json
{
  "extends": ["eslint:recommended"],
  "env": { "node": true, "es2021": true },
  "rules": {
    "no-unused-vars": "error",
    "semi": ["error", "always"]
  }
}

常见规则 #

规则说明
no-console禁止 console
no-debugger禁止 debugger
prefer-const推荐 const
no-var禁止 var

Prettier:代码格式化 #

// .prettierrc
{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5"
}

常用配置 #

配置说明
semi分号
singleQuote单引号
tabWidth缩进宽度
printWidth行宽

ESLint + Prettier 集成 #

npm install --save-dev eslint prettier eslint-config-prettier eslint-plugin-prettier

Python 生态 #

Black:自动格式化器 #

pip install black
black src/ --line-length 88

配置 #

# pyproject.toml
[tool.black]
line-length = 88
target-version = ['py310']
include = '\.pyi?$'
exclude = '''
/(
    \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
)/
'''

Ruff:超快 Linter + Formatter #

pip install ruff
ruff check src/
ruff format src/

pyproject.toml #

[tool.ruff]
line-length = 100
target-version = "py310"

[tool.ruff.lint]
select = ["E", "F", "I", "N"]
ignore = ["E501"]

[tool.ruff.lint.isort]
known-first-party = ["myapp"]

Flake8:经典 Linter #

pip install flake8
flake8 src/ --max-line-length=88

VS Code 配置 #

settings.json #

{
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnSave": true
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true
  },
  "eslint.enable": true,
  "prettier.enable": true
}

工作区配置 #

// .vscode/settings.json
{
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true,
    "source.organizeImports": true
  }
}

CI/CD 集成 #

GitHub Actions #

- name: Lint
  run: npm run lint

- name: Test
  run: npm test

- name: Format Check
  run: |
    npx prettier --check .
    python -m black --check .

pre-commit Hook #

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/psf/black
    rev: 23.12.0
    hooks:
      - id: black

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.1.6
    hooks:
      - id: ruff

性能比较 #

工具速度功能适合场景
ESLint中等丰富大型 JS 项目
Prettier极快专注格式化
Black极快固定Python 项目
Ruff极快全能Python 项目
Flake8中等基础轻量 Python

代码格式最佳实践 #

目录结构 #

src/
├── __init__.py
├── main.py       # <--- 79 字符内
├── config.py
└── utils/
    └── helpers.py

导入排序 #

# 使用 isort
import os
import sys
from typing import List, Dict

import requests
from dotenv import load_dotenv

from .config import CONFIG

常见问题 #

Q: 为什么格式化后 Git 有变更?

答:格式化器修改了文件。提交前运行格式化工具。

Q: 如何禁用某个规则?

答:编辑配置,添加规则 ID 到 ignore 列表。

Q: 为什么 eslint 和 prettier 冲突?

答:用 eslint-config-prettier 禁用冲突规则。

总结 #

代码质量工具 = 0 警告。从 lint 到 format,自动化维护代码质量。


参考:eslint.org、prettierjs.com、black.readthedocs.io、ruff.py 更新:2026-05-18

💬 留言讨论