iMind Developers Blog

iMind開発者ブログ

git commit時にflake8でPythonのコードチェック

概要

git commit時にflake8を実行してコードをチェックをする。

最低限のチェックだけする内容です。

バージョン情報

  • pre-commit==2.13.0
  • flake8 3.8.3

pre-commitのインストール

pip install pre-commit

.pre-commit-config.yamlの記述

プロジェクトのルートに .pre-commit-config.yaml ファイルを作成して下記のような内容を記述。

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.0.1
    hooks:
    -   id: trailing-whitespace
    -   id: end-of-file-fixer
    -   id: check-added-large-files
-   repo: https://gitlab.com/pycqa/flake8
    rev: 3.9.2
    hooks:
    -   id: flake8
        exclude: tests

flake8以外に trailing-whitespace(行の末尾の空白を除去), end-of-file-fixer(行末の改行を除去), check-added-large-files(大きいファイルをチェック default=500KB)などを入れています。

flake8の設定ではexclude: testsでtestsディレクトリ配下はチェック対象から外しています。

反映

下記コマンドで .git/hook 配下に設定を反映します。

pre-commit install

flake8の設定

.flake8ファイルに好みの設定を書いておきます。

[flake8]
ignore=E402,W503
max-line-length=120
max-complexity=10

commitして確認

適当に怒られそうなコードを書く。

import time

def foo():
    i = 10
    return 1 + 1

commitしてみる。

git add foo.py
git commit foo.py

結果

foo.py:11:1: F401 'time' imported but unused
foo.py:3:1: E302 expected 2 blank lines, found 1
foo.py:4:5: F841 local variable 'i' is assigned to but never used

ちゃんとチェックしてくれた。

改定履歴

Author: Masato Watanabe, Date: 2021-06-25, 記事投稿