はじめに

皆さんはコーディングする際にLinterとかを使用してますか?

僕が一番よく使う言語はPythonなんですがFlake8を使って構文チェック(Lint)してます。Flake8は構文ミスの他に、コーディング規約を守るように注意してくれるのですが、時と場合によってはこの注意が厄介な時があるので、それを無視する方法です。

種類別の無視方法

まず、Flake8のエラー無視に関しては、公式ドキュメントに記載されていますので、こちらを参考に記載していきます。

また各エラーコード一覧はこちらです。

特定ファイルでの無視

そもそもFlake8はpip等でインストールできるのですが、そのインストールしたFlake8を使用して構文チェックする際の無視方法です。

書き方は以下のテンプレートで書けます。

$ flake8 --ignore=errors file file ...

ここでのerrorsはFlake8のエラー番号です。カンマ区切りで複数指定できます。続くfileは構文チェックするファイルでこちらも複数指定することができます。ディレクトリでも可です。

例えばdirにあるファイルの構文チェックでE501とE502を無視する場合には以下のコマンドが有効です。

$ flake8 --ignore=E501,E502 dir/

エディタ上での無視

こちらの使い方がメインとなるのではないでしょうか。

ここでは行単位での無視とファイル全体での無視を記載します。

行単位での無視

無視したい行の最後にコメントとして# noqa: errorsという形式で無視するコードを書きます。

こちらのerrorsも上記と同様にカンマ区切りのリストとなります。例えば以下のようになります。

example = lambda: 'example'  # noqa: E731

また、特定のエラーを指定せず、全てのエラーを無視したい場合には# noqaだけを記入することで可能となります。

ファイル全体での無視

こちらの方法はすごく単純で、ファイルに# flake8: noqaと追記するだけです。

しかし、Flake8ではこの方法よりも、無視したいファイルをflake8 --excludeにより、明示的に除外リストに追加することを推奨しています。

おわりに

様々な方法による構文チェック無視の方法を調べましたが、一番使いそうなのは行単位での無視ですかね。

URLとかでE501とか使いたくなるじゃないですか。ね。