初めてのPython実践試験学習 第12回「Flake8のプラグイン」

こんにちは、吉政創成 菱沼です。

今回もPythonエンジニア育成推進協会のPython 3 エンジニア認定実践試験の主教材「Python実践レシピ/技術評論社」を使って学習中です。

前回は、Flake8で使えるオプションについて学びました。

今回は、プラグインを利用してより便利にFlake8を使う方法です。

Flake8を強化してくれるプラグイン

ソースコードの中を解析するもので、PEP8に準拠しているか、不具合の元になるところがないかを確認してくれるツール「Flake8」について、2回に渡って学んできました。過去の記事に興味がある方は以下をご覧ください。

初めてのPython実践試験学習 第10回「Flake8で問題のないコードへ」
初めてのPython実践試験学習 第11回「Flake8にオプションを追加してみよう」

今回学ぶのは、Flake8のチェック機能を強化してくれるプラグインです。

これらのプラグインを利用するとより多くの観点での静的解析をしてくれるようになるとのこと。

—————————

P.30

Flake8のプラグインには、Flake8ではチェック対象となっていないPEP8の規約をチェックするものや、チェックの観点を追加しコーディングの軽微な不備を検知してくれるものがあります。

表:Flake8のプラグイン

プラグイン名概要PyPI
flake8-import-orderimport の順序をチェックするhttps://pypi.org/project/flake8-import-order/
pep8-namingPEP8の命名規約に準拠しているかチェックするhttps://pypi.org/project/pep8-naming/
flake8-commasカンマの位置をチェックするhttps://pypi.org/project/flake8-commas/
flake8-quotesクォートをチェックするhttps://pypi.org/project/flake8-quotes/
flake8-docstringsdocstringの有無や書き方をチェックするhttps://pypi.org/project/flake8-docstrings/
flake8-printprint()関数の不要な使用をチェックするhttps://pypi.org/project/flake8-print/  

—————————

使いたいものをpipコマンドでインストールすれば利用できるようになります。

例)

pip install flake8-import-order

ちなみにFlake8やプラグインを管理している組織PyCQAというものがあるそうです。

その組織では、GitHubのOrganizationアカウントを運用しており、そこでスタイルと品質に関するプロジェクトをいくつも管理しているとのこと。

管理しているツールとしては、Flake8関連以外に、有名なものの中ではPycodestyle、PyLint、mccabe、pydocstyleなどがあるようです。

https://meta.pycqa.org

https://github.com/pycqa

自動でFlake8 にチェックしてもらえるようにしておこう

Flake8はそのまま入れただけだと、自動でチェックしてくれないようです。

—————————

P.30

自動でチェックする方法はいくつかありますが、エディターでのチェックと、CI(継続的インテグレーション)でのチェックを併用して運用するとよいでしょう(利用しているエディターがVisual Studio Codeであれば、「python.linting.flake8Enabled」という設定を有効にするとFlake8を利用できます)。

—————————

せっかくなので、Pythonが使える状態になっている(&flake8をpipインストール済みの)VS Codeで確認してみました。

  1. 検索のところに、「setting.json」と入力して開く
  2. 次の2つを「true」にする
    “python.linting.enabled”: true,
   “python.linting.flake8Enabled”: true,

※自動チェックをオフにしたいなら「false」にする

ちなみにVS Codeの場合、Pylintがデフォルトで入ってるようですが、flake8を入れると自動的にオフになる模様。併用したいなら、この項目をtrueにしてあげればいいようです。

“python.linting.pylintEnabled”: false,

次に文中にあるCIについて。これはコードがリポジトリにプッシュされたり、プルリクエストが作成されたりした際に、自動でテストやビルド、リンティングを実行する仕組みなんだそうです。例えば、GitHub Actions、Travis CI、CircleCI、GitLab CIなどがそれにあたるようです。

これらのツールを使ってプロジェクトを管理しているのなら、自動でFlake8でのチェックもするように設定できるんだとか。とりあえずGitHub Actionsの参考サイトを見つけたので興味がある方はどうぞ。

GitHub Actionsを使って、Pythonのコードをプッシュするたびにflake8でチェックする

Flake8でエラーが出たら

バージョンアップすると使えなくなるものが出てくる可能性はどんなものに対してもあり…、それはFlake8も例外ではないようです。

—————————

P.31

近年では2020年4月のアップデートで追加されたF541によって、次のエラーが表示されるようになりました。

チェックされるようになったのは、f-stringを利用時にプレースホルダー({expression})の指定がない場合です。以下のコードに対し、「F541 f-string is missing placeholders」が表示されます。

print(f”Hello”)

エラーとなる項目が追加になった場合、次の方法での対処を検討してください。

・ソースの該当箇所を修正する

・ignoreオプションにF541を追加する

—————————

バージョンを固定して使い続けるなんて言う方法もあるようです。

ところで、ignoreオプションとは前回学習した「特定のエラーを無視する設定」です。使い方は前回のコラムをどうぞ!
https://www.pythonic-exam.com/archives/9421

それではきりが良いので、今回はこちらで終了です。お付き合いいただきありがとうございました。

実践試験について知りたい方は以下をご覧ください。

●Python3エンジニア認定実践試験

更新情報

PAGE TOP