悪いコピペを防ぐ

コードのコピペには良いコピペ悪いコピペがあります。オープンソースのコードから使えそうなところを改変して取り込むのは良いコピペ (ライセンスとコピーライトの確認も忘れずに)。一つのソースツリーの中に同じコード断片がたくさんあるのが悪いコピペ。

もちろん、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 つもみつかってしまいました。あれ、重複することを書いた気がします。直さないと。。。

Tagged ,

Leave a Reply