■ はじめに
https://dk521123.hatenablog.com/entry/2019/10/24/000000
で扱ったPython コードのチェックするための flake8 はコマンドベースで起動できるらしい。 以下の関連記事で扱ったCodeBuild
https://dk521123.hatenablog.com/entry/2020/01/21/221122
に組み込めることを目標(※)に、まずは、flake8 について学ぶ。
※ CodeBuildに flake8 を組み込む
https://dk521123.hatenablog.com/entry/2020/02/17/220545
■ インストール
pip install flake8 flake8 --version
■ コマンド例
# flack8 [対象ファイル] flake8 main.py # flack8 [対象ディレクトリ] flake8 src/ # --exclude [対象外ディレクトリ] flake8 src/ --exclude tests # ルールの適用 : 今回は、1行79文字の変更 flake8 --max-line-length=110 main.py # 詳細表示 flake8 --show-source main.py # ファイル出力 flake8 --output-file=result.txt main.py
オプションを外部ファイルで取り込む
色々な設定方法があるようだが、 以下の「--config」オプションを使うのがよさそう
http://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-config
flake8 --config=setup.cfg main.py
setup.cfg
[flake8] exclude=tests max-line-length=110
https://flake8.pycqa.org/en/latest/internal/option_handling.html
http://flake8.pycqa.org/en/latest/user/configuration.html
■ サンプル
main.py
print("Hello world") value = 3 if value < 3: # Tab print("Hello") else: # Tab print("World") print("Done")
コマンド
例1:詳細出力
flake8 --show-source main.py [ 出力結果 ] main.py:4:1: E115 expected an indented block (comment) # Tab ^ main.py:5:1: W191 indentation contains tabs print("Hello") ^ main.py:5:2: E117 over-indented print("Hello") ^ main.py:7:1: E115 expected an indented block (comment) # Tab ^ main.py:8:1: W191 indentation contains tabs print("World") ^ main.py:8:2: E117 over-indented print("World") ^ main.py:10:14: W291 trailing whitespace print("Done") ^
例2:外部ファイル出力
flake8 --output-file=result.txt main.py [ result.txt ] main.py:4:1: E115 expected an indented block (comment) main.py:5:1: W191 indentation contains tabs main.py:5:2: E117 over-indented main.py:7:1: E115 expected an indented block (comment) main.py:8:1: W191 indentation contains tabs main.py:8:2: E117 over-indented main.py:10:14: W291 trailing whitespace
■ flake8 のオプション
以下のサイトを参照。
http://flake8.pycqa.org/en/latest/user/options.html
--max-complexity=n
http://flake8.pycqa.org/en/latest/user/options.html#cmdoption-flake8-max-complexity
循環的複雑度の最大値を指定
循環的複雑度 (Cyclomatic complexity) とは?
McCabe が開発したプログラム複雑度の指標
https://qiita.com/yut_arrows/items/16749e02313109071338
参考文献
https://www.xn--ebkc7kqd.com/entry/flake8
https://blog-ja.sideci.com/entry/2017/06/20/110000
関連記事
Visual Studio Code ~ Python拡張 ~
https://dk521123.hatenablog.com/entry/2019/10/24/000000
CodeBuildに flake8 を組み込む
https://dk521123.hatenablog.com/entry/2020/02/17/220545
Python を奇麗に書くためのツール群
https://dk521123.hatenablog.com/entry/2021/11/08/221219
black ~ Python formatter ~
https://dk521123.hatenablog.com/entry/2021/11/10/095258
Python解析ツール ~ Ruff ~
https://dk521123.hatenablog.com/entry/2024/03/13/000021