🐥
Flake8のDockerコンテナ作る
Python規約チェック用のDockerコンテナ作る
Dockerの勉強とPythonの勉強のため、Pythonスクリプトがコーディング規約PEP8
に則してるかチェックする環境をDockerで用意しました。これはその備忘録です。規約チェックにはLinter(リンター)という解析ツールを使うみたいです。今回は、flake8 という解析ツールを使用しました。
ディレクトリ構成
ファイル/フォルダの構成はこのようにしました。
$ pwd
/home/usr/data/docker
$ tree
.
├── Dockerfile_Flake8
└── src
└── sample.py
-
Dockerfile_Flake8
- 規約チェックツール flake8 をインストール
-
src
- Dockerコンテナ上の
/work/src/
としてバインドするディレクトリ
- Dockerコンテナ上の
-
sample.py
- 解析対象のPythonスクリプト
sample.py
sample_list1 = [100000000, 200000000, 300000000, 400000000, 500000000,
600000000, 700000000]
sample_list2 = [100000000, 200000000, 300000000, 400000000, 500000000,
600000000, 700000000]
print(sample_list1)
Dockerファイル
Dockerfile_Flake8
ARG python_image_v="python:3.10-buster"
FROM ${python_image_v}
ARG work_dir="/work/"
# コンテナにアクセスした際のデフォルトディレクトリ
WORKDIR ${work_dir}
# pip更新
RUN pip install --upgrade pip
# flake8 インストール
RUN pip install flake8
Dockerコンテナに入る
$ cd /home/usr/data/docker
# Dockerイメージを作る
$ docker build -f Dockerfile_Flake8 -t flake8_img .
# Dokckerコンテナを作成し起動する
$ docker run --rm --name flake8_env -v /home/usr/data/docker/src/:/work/src -dit flake8_img
# Dockerコンテナに入る
$ docker exec -it flake8_env bash
↓コンテナに入れるとこんな感じになる
$ docker exec -it flake8_env bash
root@8f4691e2e0c7:/work#
スクリプトを解析してみる
flake8を使ってPythonスクリプトを解析する
sample.pyを解析してみる。
root@8f4691e2e0c7:/work# cd src/
root@8f4691e2e0c7:/work/src# ls
sample.py
root@8f4691e2e0c7:/work/src# flake8 sample.py
sample.py:2:1: E128 continuation line under-indented for visual indent
root@8f4691e2e0c7:/work/src#
2行目の1文字目に規約違反があると言ってるようです。
E128
の内容をFlake8 Rules(https://www.flake8rules.com/)で確認します。
E128
の説明 https://www.flake8rules.com/rules/E128.html によるとインデントの設定がいけてないと言ってるようです。
ということで2行目を以下のように修正します。
修正前
sample_list1 = [100000000, 200000000, 300000000, 400000000, 500000000,
600000000, 700000000]
修正後
sample_list1 = [100000000, 200000000, 300000000, 400000000, 500000000,
600000000, 700000000]
もう一度解析します。
root@8f4691e2e0c7:/work/src# flake8 sample.py
root@8f4691e2e0c7:/work/src#
何も怒られなくなりました。
ーーーー
簡単ですがこれでおわり
Discussion