Pythonのデバッグツール【PySnooper】,ソースチェックツール【pycodestyle】,自動フォーマッター【autopep8】をそれぞれ使ってみた

はじめに

こんにちは、がんがんです。
以前Twitterでこちらの記事に出会いました。
blog.ikedaosushi.com

arakan-pgm-ai.hatenablog.com

1つ目はprintデバッグの代わり、2つ目はソースチェック、自動フォーマッターの記事です。
どちらも試してみたかったのでまとめて試してみました。

目的

  • Pythonデバッグツール「PySnooper」を試す
  • Pythonのソースチェックツール「pycodestyle」を試す
  • Pythonの自動フォーマッター「autopep8」を試す

参考記事

blog.ikedaosushi.com

PySnooperの本家GitHubはこちらです。
github.com

arakan-pgm-ai.hatenablog.com

実験1 PySnooperを試す

とりあえず、参考記事と同様のコードを試してみます。
入力の2乗を足すというものです。

import pysnooper


@pysnooper.snoop()
def plus_with_power(a, b):
    a = a * a
    b = b * b
    c = a + b

    return c


if __name__ == '__main__':
    result = plus_with_power(2, 3)
    print(result)

実行結果は以下の通りです。ちゃんとログを出力出来ていますね。

>python example.py
Starting var:.. a = 2
Starting var:.. b = 3
14:22:52.423135 call        12 def plus_with_power(a, b):
14:22:52.423135 line        13  a = a * a
Modified var:.. a = 4
14:22:52.423135 line        14  b = b * b
Modified var:.. b = 9
14:22:52.423135 line        15  c = a + b
New var:....... c = 13
14:22:52.423135 line        17  return c
14:22:52.423135 return      17  return c
Return value:.. 13
13

実験2 pycodestyleを試す

次に実験1で作ったコードにpycoderstyleを適用させてみます。インストールはpipから可能です。

>pip install pycodestyle

実行コマンドは以下の通りです。オプションはいろいろあるようですが、とりあえずこれだけで大丈夫でした。

pycodestyle --show-source [filename or directory]

実行結果は以下の通りです(長くなるので短縮してます)。
おかしい場所には^がついており、理由も英語で書いているのでなんとなく理解できます。

実験3 autopep8を試す

次に、自動フォーマッターであるautopep8を使って修正してもらいます。こちらもインストールはpipから可能です。

>pip install autopep8

実行コマンドは以下の通りです。--aggressiveを2つおくことにより、エラーの範囲を広げる意味があるようです。

autopep8 --in-place --aggressive --aggressive [filename]

実際に実行してみると、実験2でたくさん出たエラーはほとんど修正されました(便利すぐる)。


ただ、コメントの後ろがTABキーで改行されているというエラーには適応されていませんでした。
あくまで処理に関係ある部分の修正ってことみたいなので、こちらは手作業で直しました。
ほとんどを直してくれていたのでこのくらいはやりますとも。

まとめ

昔のコードはTABキーで改行していることが多々あります。
そのため、ブログで表示したときに空白がめちゃくちゃになることがよくありました。

今回試してみた【pycodestyle】、【autopep8】はとても簡単でした。
GitHubに上げたりする前には必ずやっておこうと思います。

また、【PySnooper】もいろんな場面で重宝しそうなので使っていきます。