※記事内に商品プロモーションを含むことがあります。
はじめに
Pythonのコード分析ツールPylintから出力されるメッセージを抑制する方法について、W0611 (unused-import)
警告を例に解説します。なお、Pylintのメッセージを抑制する方法には、スクリプト中にコメントとして記載する方法と設定ファイルを使う方法がありますが、この記事では前者のみ述べます。
この記事で検証した環境は以下の通りです。各ライブラリは既にインストールされているものとします。
- OS: Windows 10 Home
- Python 3.11.6
- Pylint 3.0.2
- Matplotlib 3.8.1
- japanize_matplotlib 1.1.3
この記事はPython Advent Calendar 2023 (Qiita) 17日目の記事です。
Pylintによる警告の例
PylintはPythonのプログラムに対して様々な種類のメッセージを出力できますが、この記事ではW0611 (unused-import)
という「パッケージをインポートしたが使っていない」という警告を例とします。この警告が出る場合、基本的にはインポート文をコメントアウトすべきですが、japanize_matplotlib
のようにコメントアウトできないパッケージもあります。japanize_matplotlib
とは、matplotlib
で日本語を扱えるようにするパッケージです。以下のようにインポートするだけで日本語を表示できるので、何も対策をしなければ、PylintはW0611
を表示してしまいます。
|
|
次に、実際にPylintでW0611
を表示させます。上記のスクリプトをtest.py
という名前で保存し、コマンドライン上でPylintに解析させます(Visual Studio CodeやSpyderなどでPylintを実行しても構いません)。
|
|
このように、W0611
が表示されました。
メッセージの抑制方法
次に、本題のPylintによるメッセージを抑制する方法を解説します。「はじめに」で述べたように、抑制する設定をスクリプト内にコメントとして記載します。コメントの書き方によって、抑制する範囲を以下の3つから選択できます。
- 行単位で抑制
- 複数行で抑制
- スコープ単位で抑制
行単位で抑制
行単位で抑制する場合、抑制したい行の最後に# pylint: disable=[抑制したいメッセージ、または番号]
を追加します。W0611 (unused-import)
の場合、以下のどちらかとなります。
|
|
|
|
どちらにするかは好みですが、前者の方が抑制しているメッセージが分かりやすいと思います。
抑制するコメントの追加後、再度Pylintで解析します。
|
|
メッセージが表示されなくなったことを確認できました。
複数行で抑制
複数行で抑制する場合、以下2つのコメントで抑制したい範囲を囲みます。
# pylint: disable=[抑制したいメッセージ、または番号]
# pylint: enable=[抑制したいメッセージ、または番号]
以下に例を示します。
|
|
スコープ単位で抑制
クラスや関数の先頭に# pylint: disable=[...]
を記述することで、そのスコープ内に限定してメッセージを抑制できます。ライブラリのインポートは例としてあまり適切ではないですが、イメージを以下に示します。
|
|
(上記はあくまで例です。通常、関数の中でライブラリをインポートしません)