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を使ってるならそちらを利用するのがおすすめ