【Python】コードの構文チェックツールを導入する(pylint)

python-logo Python

linterとは

ソースコードの構文をチェックするツールで、
ソースコードの間違いを指摘してくれるもの。

ソースコードを実際に動かしてみる前に
「ここの書き方、動かさずとも間違ってるよ」と教えてくれる。

pylintはPython専用のlinter。

インストール

pipenvを使ってパッケージ管理をしている場合について紹介する。

$ pipenv install pylint --dev

構文チェックツールは本番環境では不要で、
開発時のみあればよいため、--devオプションを付与してインストールを行う。

pipenvから実行できるようにする

pipなどを利用してインストールした場合は、そのままpylintコマンドが使えるようになると思うが、
pipenvを利用してインストールした場合は、直接pylintコマンドを実行することができない。

そのため、pipenv経由で実行できるようにエイリアスを作成する。

Pipfile

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
pylint = "*"

[packages]
requests = "*"

[requires]
python_version = "3.8"

[scripts]
main = "python main.py"
pylint = "pylint"

このように[script]に記載することで
pylintコマンドをpipenv run pylintで実行することが可能になる。

試しにmain.pyというファイルについて構文チェックを行うようにすると、
以下のように出力される。

エラーが検知されなかった場合は10点満点で採点もしてくれるようだ。

$ pipenv run pylint main.py
************* Module main
main.py:1:0: C0114: Missing module docstring (missing-module-docstring)
main.py:3:0: C0411: standard import "import json" should be placed before "import requests" (wrong-import-order)

------------------------------------------------------------------
Your code has been rated at 9.13/10 (previous run: 9.57/10, -0.43)

「docstringが無いです」「import jsonは、import requestsの前に配置すべきです」
と言われている。

これはメッセージタイプの頭文字が「C(Convention)」なのでそこまで問題がない指摘だが、
コードが動かなさそうな場合は下のように「E(Error)」の頭文字となる。

$ pipenv run pylint main.py
************* Module main
main.py:12:26: E0001: EOL while scanning string literal (<unknown>, line 12) (syntax-error)

参考:http://pylint-messages.wikidot.com/all-codes

VSCodeを使う場合

エディターとしてVSCodeを利用している場合は、
VSCodeのプラグインとして提供されているので、そちらをインストールしておくほうが良い。

視覚的にどこが間違っているか教えてくれるのでとても分かりやすい。

まとめ

  • pylintは構文チェックツール
  • コードが動かないレベルの間違いを事前にチェックできる
  • VSCodeを使ってるならそちらを利用するのがおすすめ
タイトルとURLをコピーしました