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.