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

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  # 检查所有文件

相关文章:

  • 一文读懂Sql Server读写分离和分库分表
  • 鼠标在客户区内按下左键和双击右键
  • 光谱范围与颜色感知的关系
  • Spring学习笔记05——Spring Boot的文件结构2(POJO类)
  • 基于 PHP 内置类及函数的免杀 WebShell
  • 【MySQL】mysql日志文件
  • OpenCV图像拼接(3)图像拼接类cv::detail::MultiBandBlender
  • 前端学习笔记--CSS
  • 【机器学习】线性回归和逻辑回归的区别在哪?
  • 【零基础JavaScript入门 | Day7】三大交互案例深度解析|从DOM操作到组件化开发
  • Netty——I/O 线程模型
  • 最长连续子序列和的所含元素 -- Kadane算法拓展
  • 【C++网络编程】第8篇:协议设计与序列化(Protobuf、FlatBuffers)
  • 流式ETL配置指南:从MySQL到Elasticsearch的实时数据同步
  • 【设计模式】工厂模式
  • 信息学奥赛一本通 1514:【例 2】最大半连通子图 | 洛谷 P2272 [ZJOI2007] 最大半连通子图
  • vue watch数据监听
  • R语言——字符串
  • RTSP/Onvif安防监控平台EasyNVR抓包命令tcpdump使用不了,该如何解决?
  • 模型搭建与复现
  • 三门峡网站seo/宁波厂家关键词优化
  • 做网站帮外国人淘宝/百度快照官网登录
  • 设计公司详情/北京百度快速优化排名
  • 做网站是用源码还是模版/百度软件应用中心
  • 学习电子商务网站建设与管理的收获6/百度推广登陆后台
  • 摄影网站做画册/今日十大热点新闻头条