20章静的解析

テストに入る前に、まず静的解析について話したい。静的解析はコードを実行せずにコードベースを検査して潜在的なエラーや矛盾を探す手法である。静的解析はよくあるミスを発見するのに便利な道具だ。本書でもすでに静的解析ツールとしてmypyを使った。mypy(および型チェッカ)はコードベースを検査してデータ型に関するエラーを探す。その他の静的解析ツールはそれ以外のエラーを調べる。この章ではリント、複雑度、セキュリティのための静的解析ツールを取り上げる。

20.1 リンター

最初に取り上げるツールはリンターである。リンターはコードベースに含まれるプログラミングミスやスタイル違反を検査する。リンターの名前の由来はC言語のプログラムのエラーを検査するツールlintである。lintは「ファジー」なロジックを探してそれを取り除くことからその名がついた†1。Pythonでもっとも広く使われているリンターはPylintだ。Pylintは、ありがちなコードミスとして次のものを検査する。

[†1] 訳注:英語のfuzzyには、「曖昧な」という意味以前に、「毛羽立った」という元の意味がある。また、fuzzyの元になったfuzzという名詞は「毛羽、綿毛」という意味であり、lintは「綿ぼこり、糸くず」という意味の名詞である。

  • PEP 8(https://peps.python.org/pep-0008/)に対する違反
  • 実行されないデッドコード(return文の後のコードなど)
  • アクセス制限違反(クラスのプロテクト、プライベート属性など)
  • 未使用変数や関数
  • まとまりのないクラス(メソッド内でselfが使われていない、パブリックメソッドが多すぎるなど)
  • docstring形式のドキュメントの欠如

Get ロバストPython ―クリーンで保守しやすいコードを書く now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.