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


リファクタリングとは

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

リファクタリングとは|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を使ってインストールすることができます。

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