写経で使うツール

  • 17
    いいね
  • 0
    コメント

他人のコード理解のために写経をやってみています。うまく行かなかった時には、オリジナルのコードと比較する必要がありますが、その時に以下のツールを使っています。

Reindent

Pythonのインデントを整えなおすツールです。参照元のコード、あるいは自分で書いたコードのインデント基準が異なっていると非常に比較しづらいので、これを使って統一しています。
pip install Rindent で"rindent"コマンドが導入されます。実行は引数に整形対象のファイルを指定するだけです。デフォルトでオリジナルファイルのバックアップを作成します。
インデントの整形はPEP8のスペース4文字に統一されます。インデント以外も含めてPEP8に修正するautopep8というツールもあるようです。

Python3未対応

Reindentはpython3では動きませんでした。

$ reindent
Traceback (most recent call last):
  File "/opt/3gpu/bin/reindent", line 2, in <module>
    from reindent import main
  File "/opt/3gpu/lib/python3.4/site-packages/reindent.py", line 71
    except getopt.error, msg:

全体的に例外の記法がPython2となっています。これに関してはカンマをasに置き換えればよさそうですが、他にprintがすべて括弧なしでの呼び出しになっています。

gvimdiff

比較にはgvimdiffを使っています。他にもmeld等いくつかツールがあるのですが、いくつか試した結果こちらを使っています。ここは個人の好みもあるでしょう。
gvimdiffのデフォルトはnowrapなので、長い行の折り返しがなされません。単純に.vimrcにset nowrapと書いても有効になってくれませんでした。
StackOverflowに(g)vimdiff起動時のみwrapを有効化する方法が掲載されていたので、それを採用しています。

autocmd FilterWritePre * if &diff | setlocal wrap< | endif

jedi (+ emacs, auto-complete)

コード補完にjediを使っています。emacsのauto-completeと組み合わせると、先に読み込んだ写経元のソース内にある長い変数、関数名なども補完が容易になります。

これ以外にも便利なツールがあったら追記してゆきます。