Pythonのデバッグツール【PySnooper】,ソースチェックツール【pycodestyle】,自動フォーマッター【autopep8】をそれぞれ使ってみた
はじめに
こんにちは、がんがんです。
以前Twitterでこちらの記事に出会いました。
blog.ikedaosushi.com
1つ目はprintデバッグの代わり、2つ目はソースチェック、自動フォーマッターの記事です。
どちらも試してみたかったのでまとめて試してみました。
実験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】もいろんな場面で重宝しそうなので使っていきます。