2015年12月4日

pylintは是非使おう

Python ソースコードの静的解析を行う pylint を紹介します。
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 件のコメント:

コメントを投稿