Python 的程式碼檢查、格式化和型別檢查

先決條件

完成 開發您的應用程式

概述

在本節中,您將學習如何為您的 Python 應用程式設定程式碼質量工具。這包括:

  • 使用 Ruff 進行程式碼檢查和格式化
  • 使用 Pyright 進行靜態型別檢查
  • 使用 pre-commit 鉤子自動檢查

使用 Ruff 進行程式碼檢查和格式化

Ruff 是一個用 Rust 編寫的極速 Python 程式碼檢查器和格式化程式。它用一個統一的工具取代了 flake8、isort 和 black 等多個工具。

建立 pyproject.toml 檔案

[tool.ruff]
target-version = "py312"

[tool.ruff.lint]
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # pyflakes
    "I",  # isort
    "B",  # flake8-bugbear
    "C4",  # flake8-comprehensions
    "UP",  # pyupgrade
    "ARG001", # unused arguments in functions
]
ignore = [
    "E501",  # line too long, handled by black
    "B008",  # do not perform function calls in argument defaults
    "W191",  # indentation contains tabs
    "B904",  # Allow raising exceptions without from e, for HTTPException
]

使用 Ruff

執行這些命令來檢查和格式化您的程式碼

# Check for errors
ruff check .

# Automatically fix fixable errors
ruff check --fix .

# Format code
ruff format .

使用 Pyright 進行型別檢查

Pyright 是一個快速的 Python 靜態型別檢查器,它與現代 Python 功能配合良好。

pyproject.toml 中新增 Pyright 配置

[tool.pyright]
typeCheckingMode = "strict"
pythonVersion = "3.12"
exclude = [".venv"]

執行 Pyright

要檢查程式碼中的型別錯誤

pyright

設定 pre-commit 鉤子

Pre-commit 鉤子會在每次提交前自動執行檢查。以下 .pre-commit-config.yaml 片段設定了 Ruff

  https: https://github.com/charliermarsh/ruff-pre-commit
  rev: v0.2.2
  hooks:
    - id: ruff
      args: [--fix]
    - id: ruff-format

要安裝和使用

pre-commit install
git commit -m "Test commit"  # Automatically runs checks

摘要

在本節中,您學習瞭如何

  • 配置和使用 Ruff 進行程式碼檢查和格式化
  • 設定 Pyright 進行靜態型別檢查
  • 使用 pre-commit 鉤子自動檢查

這些工具有助於維護程式碼質量並在開發早期發現錯誤。

後續步驟

  • 配置 GitHub Actions 以自動執行這些檢查
  • 自定義程式碼檢查規則以匹配您團隊的風格偏好
  • 探索高階型別檢查功能