はじめに
開発を進める上で、コードの品質を保ちながら作業効率を向上させるために、コードの整形や静的解析の自動化は非常に有用です。今回は、pre-commitを利用して、Pythonプロジェクトにおけるコード整形ツールや静的解析ツール(black、isort、flake8)を導入する方法について解説します。
pre-commitは、Gitのコミット時に自動的に各種チェックや整形処理を実行できる仕組みです。これにより、コードスタイルを一定に保ち、不要な差分が混入することを防ぐことが可能となります。
pre-commitとは?
pre-commitは、Gitリポジトリにフックを設定して、コミット前に自動的にコードのフォーマットやチェックを行うツールです。
- コード整形: blackを用いてPEP8に準拠した自動整形を実行
- インポート整理: isortでインポート文を自動的にソート
- 静的解析: flake8でコードの文法やスタイル、潜在的なバグを検出
これにより、開発者は手動での整形作業やチェックの手間を省くことができ、一貫したコード品質を維持できます。
使用するツール
今回の記事では以下のツールをpre-commitのフックとして導入します。
-
black
Pythonコードのフォーマッタ。自動で整形してくれるため、スタイルの議論をなくすことができます。 -
isort
インポート文の順序を自動的に整理し、読みやすさと一貫性を実現します。
※blackとの連携を考慮して、引数に--profile black
を指定します。 -
flake8
静的解析ツールです。pep8、pyflakesなどを内部で利用し、コードの問題点を洗い出します。
※blackとの相性を合わせるために、flake8-black
の追加依存関係を指定しています。
pre-commit設定ファイルの内容
以下は、設定ファイル(例:.pre-commit-config.yaml
)の一例です。
# 実行コマンド
# pre-commit run --all-files
repos:
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
language_version: python3
- repo: https://github.com/pre-commit/mirrors-isort
rev: v5.10.1
hooks:
- id: isort
args: ['--profile', 'black']
- repo: https://github.com/pycqa/flake8
rev: 5.0.4
hooks:
- id: flake8
additional_dependencies: ['flake8-black']
pre-commitの導入と使用方法
pre-commitのインストール
まず、プロジェクトのルートディレクトリに移動し、以下のコマンドを実行してpre-commitをインストールします。
pip install pre-commit
Gitフックのインストール
次に、以下のコマンドを実行してGitフックをインストールします。
pre-commit install
これにより、以後のコミット時に自動でpre-commitが実行されるようになります。
全ファイルに対する手動実行
初回導入時や既存コード全体に対して整形やチェックを実行する場合は、以下のコマンドを利用します。
pre-commit run --all-files