pylint は Python での lint の代表的な実装です。外部ライブラリであり、インストールも少々大掛かりですが、lint としての機能は十分に高いです。
以下のようなソースコードを考えます。
def make_plural(fruit): if fruit == 'apple': plural = 'apples' elif fruit == 'orange': plural = 'oranges' elif fruits == 'peach': plural = 'peaches' else: prural = '' return pluralこの11行の中に、タイプミスによるバグが2つあります。
C言語や Java のような静的言語であれば、このようなタイプミスはコンパイル時に見つかります。しかし、Python をはじめとする動的言語では、実行してその箇所を通った時に、初めてエラーとして表に出ます。
静的言語と動的言語の比較は簡単な問題ではありませんが、動的言語を書く場合には、このようなタイプミスが起こらないようにテストやレビューをしっかり行うことは必須となります。
では、上記のソースコードを pylint で解析してみます。
[E0602(undefined-variable), main] Undefined variable 'fruits' [W0612(unused-variable), main] Unused variable 'prural'2つのタイプミスが解析結果で指摘されています。
これらの指摘は、プログラム解析を行った結果として得られたものです。即ち、コードの形だけをチェックしたのではなく、中身まで分析した結果として指摘が得られています。この点は pylint の大きな強みです。
もちろん pylint の指摘が常に正しいとは限りません。また、少々口うるさく感じられる場面もあります。
それでも、ここで例に挙げたようなタイプミスによるバグを防ぐためにも、ソースコードを世に出す前には pylint で静的解析をしておくことは必須と言えます。
0 件のコメント:
コメントを投稿