当前位置: 首页 > article >正文

python 格式化利器

工具

✅ 一站式推荐方案(轻量 + 快速)

工具作用是否必须
ruff格式化 + lint + isort 一体化✅ 必须
mypy静态类型检查,适配 SQLAlchemy 2.0✅ 推荐
pytest + pytest-cov测试 + 覆盖率✅ 推荐
bandit安全审查可选
pre-commit本地提交前自动检查✅ 强烈推荐

相关步骤

🧰 步骤一:用 uv 安装依赖

uv pip install -U ruff mypy pytest pytest-cov bandit pre-commit

🧼 步骤二:使用 Ruff 进行格式化 + Lint(核心)

✅ 创建 pyproject.toml 配置文件(Ruff + Mypy 一起放)

# pyproject.toml
[tool.ruff]
line-length = 100
extend-select = ["I"]  # 自动 import 排序(isort)
fix = true             # 自动修复

[tool.mypy]
plugins = ["sqlalchemy.ext.mypy.plugin"]
ignore_missing_imports = true
strict_optional = true
disallow_untyped_defs = true
check_untyped_defs = true
warn_unused_ignores = true

✅ 执行 Ruff 格式化和检查:

# 格式化(相当于 black + isort)
ruff format .

# 检查代码规范(相当于 flake8)
ruff check .

🧪 步骤三:类型检查(尤其适配 SQLAlchemy 2.0)

mypy app/  # 假设你的代码放在 app/ 目录

🧹 步骤四:配置 pre-commit(自动检查)

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.3.3
    hooks:
      - id: ruff
      - id: ruff-format

  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.8.0
    hooks:
      - id: mypy

  - repo: https://github.com/PyCQA/bandit
    rev: 1.7.4
    hooks:
      - id: bandit

✅ 安装并激活

pre-commit install

🧰 步骤五(可选):CI 自动检查(GitHub Actions)

# .github/workflows/code-quality.yml
name: Code Quality

on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      - name: Install deps
        run: |
          pip install ruff mypy bandit
      - name: Ruff Check
        run: ruff check .
      - name: Mypy Check
        run: mypy app/
      - name: Bandit Check
        run: bandit -r app/
任务命令
格式化代码ruff format .
检查代码规范ruff check .
类型检查mypy app/
安全检查bandit -r app/
启用 git 提交检查pre-commit install
一键清洗pre-commit run --all-files

Makefile 模板

✅ 推荐 Makefile 模板(FastAPI + SQLAlchemy + Ruff + Mypy 专用)

# Makefile for FastAPI code style and quality

# 格式化代码(ruff format)
format:
	ruff format .

# Lint 检查(ruff check)
lint:
	ruff check .

# 类型检查(mypy)
typecheck:
	mypy app/

# 安全检查(bandit)
security:
	bandit -r app/

# 一键检查所有内容(格式、风格、类型)
check: format lint typecheck

# 运行测试(可选)
test:
	pytest -v --cov=app tests/

# 一键执行所有质量控制
all: check test

✅ 你现在可以使用的命令:

命令说明
make format自动格式化所有代码
make lint使用 ruff 检查代码规范
make typecheck用 mypy 做类型检查
make security用 bandit 做安全扫描
make check格式化 + Lint + 类型检查 一键执行
make test运行测试(可选)
make all执行所有检查 + 测试 ✅

✅ 回答:只要你有 Makefile 文件,并且系统上安装了 make 命令,就可以直接用:

使用make 命令

✅ 为什么要先 format,再 lint?

顺序原因
✅ 先 ruff format自动修复空格、缩进、import 顺序等格式问题
✅ 再 ruff check才能看到真正“逻辑/语法层面”的 lint 问题
❌ 如果先 check,再 format会先报一堆格式错误,format 后再跑 check 没意义(重复跑)

安装钩子

pre-commit install  # 安装 Git 钩子
pre-commit run --all-files  # 检查所有文件

http://www.kler.cn/a/601143.html

相关文章:

  • 亿级分布式系统架构演进实战(八)- 垂直拆分(领域划分及垂直分库设计)
  • springboot使用netty做TCP客户端
  • Java Collection API增强功能系列之六 改进的 ConcurrentHashMap:归约、搜索、计数与 Set 视图详解
  • [图形学]在半球面上按照微表面模型采样
  • 个人博客系统系统~测试报告
  • 【机器学习】什么是随机森林?
  • PCL 点云多平面探测
  • Vue项目的 Sass 全局基础样式格式化方案,包含常见元素的样式重置
  • zynq7020 最小ps环境速通
  • 数据库三级填空+应用题(1)
  • S32K144外设实验(七):FTM输出多路互补带死区PWM
  • 简洁、实用、无插件和更安全为特点的WordPress主题
  • PDF与Markdown的量子纠缠:一场由VLM导演的文档界奇幻秀
  • Android设计模式之工厂方法模式
  • 西门子 CPU 1513-1 PN TCP Server 接收字符串前多了一个问号
  • Chrome(Google) 浏览器安装Vue2、Vue3 Devtools插件方法
  • 前端解决方案:实现网页截图并导出PDF功能
  • STC32单片机驱动UC1705X点阵屏调试VLCD没升压显示拖影
  • [7-01-03].SpringBoot3集成MinIo
  • Pytorch使用手册—计算机视觉领域的量化迁移学习教程(专题六十三)