はじめに
皆さんはコーディングする際に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
とか使いたくなるじゃないですか。ね。