2019年4月25日

pyflakes と flake8 の紹介

以前にソースコードの静的解析を行う pylint を紹介しました。
今回は、同じくソースコードの静的解析を行う pyflakes を紹介します。


pylint の記事と同じ以下のソースコードに対して、pyflakes を走らせます。
def make_plural(fruit):
    if fruit == 'apple':
        plural = 'apples'
    elif fruit == 'orange':
        plural = 'oranges'
    elif fruits == 'peach':
        plural = 'peaches'
    else:
        prural = ''

    return plural
結果は以下のようになりました。
fruit.py:6: undefined name 'fruits'
fruit.py:9: local variable 'prural' is assigned to but never used
pylint と同じく2箇所のバグを指定してくれています。lint として十分使えるのではないかと思われます。


ここまで、pyflakes について簡単に紹介してきました。しかし、実際には pyflakes を単品で使うことは少なくて、より統合化された flake8 を使うのが一般的です。
flake8 はデフォルトでは pyflakes + pycodestyle としてチェックを行います。つまり、ソースコードの解析は pyflakes が、ソースコードのスタイルチェックは pycodestyle が行い、結果はまとめて表示されます。pyflakes と pycodestyle を別々に走らせる必要がないわけで、単純に便利ですよね。

さらに、flake8 はプラグインを導入することで、別のチェックを追加することができるようになっています。
最も有名なのは、pydocstyle を追加する flake8-docstrings でしょうか。このプラグインをインストールすると、pyflakes + pycodestyle + pydocstyle の3つのチェックを一度で行えることになります。
他にも、様々なプラグインが公開されています。

0 件のコメント:

コメントを投稿