Featured image of post Lintのルール - Google Python Style Guide 項目2.1

Lintのルール - Google Python Style Guide 項目2.1

これはなに Link to this heading

Google Python Style Guide 、項目2.1 Lintのまとめ。

ポイント Link to this heading

  1. Linterを使う
  2. 問題を隠さなければ、不適切な警告は抑制してよい
  3. 未使用引数の警告は、関数の先頭で変数を削除(del)して抑制する

Linterとは Link to this heading

Linterとはソースコードのバグやスタイルの問題を見つけるためのツールである。基本的にはベストプラクティスな書き方に則っていない部分を警告するツールだが、コードスタイルのチェックも行ってくれるものもある。

Linterは静的型付け言語のコンパイラが検出するような問題を警告する。しかし、Pythonは動的型付け言語のため、いくつかの警告は正しくない可能性がある。

Google Python Style Guideでは、Linterとして、特定のpylintrcに則ったpylint の利用を推奨している。pylintrcのファイルは元サイトで示されており、誰でもダウンロードできる。

長所と短所 Link to this heading

Linterを利用すれば見逃しやすいミスを見逃さずにすむ。しかし、Linterは完璧ではない。ゆえに、警告を抑制したり修正したりする必要がある。

どうするべきか Link to this heading

まずはLinterが実行されていることを確認する。

問題を隠さなければ、不適切な警告は抑制してよい。警告を抑制する場合は行レベルでコメントを設定する。pylintの場合は下記のようになる。

def do_PUT(self):  # WSGI name, so pylint: disable=invalid-name

flake8の場合は下記のようになる。

example = lambda: 'example'  # noqa: E731

pylintを利用する場合、警告はシンボル名で識別される。抑制理由がシンボル名から明らかでない場合は、説明を追加する。これにより、Linterの警告抑制を簡単に検索して再確認できる。

未使用の引数について Link to this heading

未使用引数の警告は、関数の先頭で変数を削除すると抑制できる。

def viking_cafe_order(spam: str, beans: str, eggs: str | None = None) -> str:
    del beans, eggs  # Unused by vikings.
    return spam + spam + spam

この場合は、必ず「なぜ削除するのか」を説明するコメントを入れる。“Unused.“で十分。

未使用引数の警告を抑制する方法はほかにもある。

  • 未使用の引数の識別子として’_‘を使う
  • 引数名の前に’unused_‘を付ける
  • _‘に代入する

これらのスタイルは許可されるが、推奨されない。なぜなら、これらは引数を名前で渡す呼び出し元を破り、引数が実際に未使用であることを強制しないためである。

参考文献・URL Link to this heading

styleguide's image

styleguide

Style guides for Google-originated open-source projects

google.github.io
Selecting and Ignoring Violations — flake8 7.1.0 documentation's image

Selecting and Ignoring Violations — flake8 7.1.0 documentation

flake8.pycqa.org
Licensed under CC BY-NC-SA 4.0
最終更新 9月 17, 2023
Hugo で構築されています。
テーマ StackJimmy によって設計されています。