Posted at

Pythonで使えるリファクタリングツールたち

More than 3 years have passed since last update.


リファクタリングとは


リファクタリングとは、プログラムの振る舞いを変えることなくソースコードを変更すること。

ソフトウェア開発では、ソースコードの作成が進むにつれて、中途での設計変更やバグフィックスなどでプログラムは冗長で汚いものとなっていくことが多い。これらの問題点を解決し、将来の仕様変更に柔軟に対応できるようソースコードの手直しを行うことを「リファクタリング」という。

リファクタリングとは|refactoring - 意味/定義 : IT用語辞典

http://e-words.jp/w/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0.html



Pythonで使えるリファクタリングツールたち

こちらを参照しました。素晴らしいスライドなので一読することをお勧めします。


リファクタリングツールあれこれ 〜 May the force be with you 〜

http://tell-k.github.io/pyconjp2014/#/



flake8


flake8 2.5.4 : Python Package Index

https://pypi.python.org/pypi/flake8


flake8PyFlakespep8双方のツールを合体させたツールで、

このflake8ひとつで大概のチェックができます。

git などのVCSを使っていれば、flake8がpre-commitなどのフックを作ってくれるコマンドもあります。

flake8 --install-hook

また、このflake8は拡張プラグインを利用することができて、

たとえば PEP257(docstringのコーディング規約)に対応したflake8-docstringなどがあります。


flake8-docstrings 0.1.0 : Python Package Index

https://pypi.python.org/pypi/flake8-docstrings/0.1.0


あなたがVimmerであれば、vim-flake8というVimプラグインもちゃんとあります。


nvie/vim-flake8: Flake8 plugin for Vim

https://github.com/nvie/vim-flake8



autopep8


autopep8 1.2.4 : Python Package Index

https://pypi.python.org/pypi/autopep8


autopep8は自動でpep8に準拠したコードに整形してくれるツールです。

個人的には、このような自動整形ツールを使うよりも、

flake8を使ってエラーを一つ一つ自分の手で修正していくほうが、

コードの書き方などを習得できると思うので、あまり推奨しません。


autoflake


autoflake 0.6.6 : Python Package Index

https://pypi.python.org/pypi/autoflake


autoflakeは、PyFlakesのエラーに準拠した自動整形ツールです。


docformatter


docformatter 0.7.1 : Python Package Index

https://pypi.python.org/pypi/docformatter


docformatterはautopep8などと同じ種類の、自動整形ツールです。

docformatterはコードの整形ではなく、コードの中で使っているdocstringの整形をしてくれます。


radon


radon 1.3.2 : Python Package Index

https://pypi.python.org/pypi/radon


radonは、ソースコードから様々なメトリクスを計算するPythonのツールです。


メトリクスとは


メトリクスとは、韻律学、作詞法という意味の英単語。また、測定基準、尺度、計量、距離などを意味する名詞“metric”の複数形。分野や対象を表す名詞に伴って、「~の尺度」「~の測定法」「~の計量法」などの意味を付加する接尾辞でもある。

メトリクスとは|metrics - 意味/定義 : IT用語辞典

http://e-words.jp/w/%E3%83%A1%E3%83%88%E3%83%AA%E3%82%AF%E3%82%B9.html


つまりソースコードの保守性などを測定し、評価してくれるということですね。

radonでは、評価はA〜Fの6段階で行われます。

radonが測定してくれるのは以下の三種類です。



  • Cyclomatic Complexity - 循環的複雑度


  • Maintainability Index - 保守容易性指数


  • Raw - コードの情報を表示

だいたい2つ目の保守性を調べることが多いですかね。


インストール方法

上記のツールたちは、すべて

pip install [tool]

このようにpipを使ってインストールすることができます。

快適なリファクタリングライフを!