コードのコピペには良いコピペと悪いコピペがあります。オープンソースのコードから使えそうなところを改変して取り込むのは良いコピペ (ライセンスとコピーライトの確認も忘れずに)。一つのソースツリーの中に同じコード断片がたくさんあるのが悪いコピペ。
もちろん、Trema では悪いコピペを起こさないように気をつけていますが、こういうことは精神論だけでは徹底できないので便利なツールの力を借りています。シアトルの Ruby ハッカーグループ Seattle.rb が公開する flay は、Ruby コードの重複を検出してくれる強力なツールです。
Trema のビルドスクリプト (Rakefile) にはこの flay が組込まれており、”rake flay” と打つだけで重複を見つけてくれます。もちろん Trema では重複などありえませんが、いちおう実行してみましょう。
% rake flay Total score (lower is better) = 189 1) Similar code found in :defn (mass = 95) ruby/trema/cli.rb:202 ruby/trema/cli.rb:212 ruby/trema/cli.rb:222 ruby/trema/cli.rb:232 ruby/trema/cli.rb:242 2) Similar code found in :module (mass = 60) ruby/trema/desc-stats-reply.rb:24 ruby/trema/queue-stats-reply.rb:24 3) Similar code found in :iasgn (mass = 34) ruby/sub-process.rb:104 ruby/sub-process.rb:105 rake aborted!
ああ 3 つもみつかってしまいました。3 つもみつかってしまいました。あれ、重複することを書いた気がします。直さないと。。。