github actions を使って django のコーディングスタイルをチェックしたのでメモ
github actions で push した時に flake8 を実行して、コーディングスタイルも CI の対象にしてみます。
階層
階層は下のとおりです。
今回関係してくるのは github actions の設定ファイル django.yml と flake8 の設定ファイル setup.cfg だけです。
.
|-- .github
| `-- workflows
| `-- django.yml # 追加
|-- backend
| |-- app
| | `-- ...
| |-- manage.py
| |-- config
| | `-- local.py
| `-- ... setup.cfg # 作成
|-- docker-compose.yml
|-- dockerfile
|-- frontend
`-- requirements.txt
django.yml の設定
github actions の設定ファイル django.yml の steps に下記を加えます。
steps:
...
# Flake8
- name: Lint with flake8
run: |
docker exec container_name /bin/bash -c 'cd ./backend && flake8'
コンテナを使用しているので docker exec ... としていますが、flake8 でコーディングスタイルチェックコマンドを実行しているだけです。
cd して flake8 の設定ファイル setup.cfg を読み込めるようにしています。
setup.cfg の設定
下記の通りに setup.cfg ファイルを作成して flake8 をカスタマイズします。
カスタマイズしない場合はファイル自体必要ありません。
[flake8]
exclude = *migrations*
max-line-length = 119
per-file-ignores=
./config/settings/local.py:F401 F403
./config/settings/production.py:F401 F403
- exclude = migrations
- マイグレーションファイルを flake8 の対象から外しています。
- max-line-length = 119
- 一行のコード文字数を 119文字にしています。※
- per-file-ignores=
- 特定のファイルのコーディング規約を無視する設定をしています。
- F401 '.base.*' imported but unused
- F403 'from .base import *' used; unable to detect undefined names
- 特定のファイルのコーディング規約を無視する設定をしています。
※ PEP 8では1行当たりに79文字という規約が設定されていますが、Djangoのコーディングスタイルには「1行あたり119文字」まで許容すると書いてあります。
拡張機能
VsCode の cornflakes-linter と言う拡張機能を入れる事で、規約から外れているコードに対して、破線を引いて教えてくれます。
ディスカッション
コメント一覧
まだ、コメントがありません