2016-06-01 7 views
1

繰り返しコードのためにルビファイルをスキャンする方法はありますか?繰り返しコードまたは類似のコードチャンクのルビコードファイルをスキャンするツール

私はそれぞれ200-1000行のコードの間にそれぞれ30個のファイルを持ち、それらを最適化してリファクタリングする必要があります。

繰り返しコードをすべてのファイルで使用できるユーティリティクラスに移動することを考えていました。

繰り返しや類似のコードのチャンクを簡単に見つけてマークするためのスキャンツールがありますか?

または私はちょうど諺の弾を噛んで手で行う必要がありますか? https://github.com/seattlerb/flay ドキュメントから::あなたはフレイで見ることができ

+0

あなたはここで少しの要件を絞り込むことができますか?見つけようとしているものの具体的な例が役立ちます。インデントによってコードが異なりますか?変数名で?手作業で行うのが最も信頼性の高い方法です。自動検出ではコピー・ペースト・ジョブだけが検出されます。 Rubyの "Do not Repeat Yourself"方法論には、慎重に分析し、コードを本質的に減らす必要があります。 – tadman

+0

方法はほとんど同じです、または繰り返しコードのようなものが伸びています。コードを一掃するためのrubocopのようなコードツールはありませんか? – Thermatix

+0

[CodeClimate](https://codeclimate.com)やRubocopのようなツールがあります。繰り返しコードが伸びている場合は、開発プロセスが完全な無秩序のように聞こえます。どのようにコードレビューをパスしますか? – tadman

答えて

3

フレイは、構造的類似性のためのコードを分析します。リテラル の値、変数、クラス、メソッド名、空白、プログラミングスタイル、 中括弧とdo/endなどの違いはすべて無視されます。これを完全にラドにする。

または、ご予算に応じて、あなたがホストされた静的コード解析サービスのいずれかのアカウントを作成することができますし、健康診断のためにそこにあなたのコードを押してください。

+0

パーフェクト!ありがとうございます。クッキーを持ってください! P.私はこれらのスクリプトを実行してコードが実際にどれほど痛いかを知るためにsoooを使います。 – Thermatix

+0

もっと静的なコードチェックをお探しの場合は、このリストからflay、flog、reek、rubocopなどをご覧ください:https://www.ruby-toolbox.com/categories/code_metrics またはMetricFuをチェックしてくださいさまざまな指標を組み合わせています。そしてクッキーのおかげで:-) –

2

私たちのCloneDRツールでこれを行うことができます。私たちはただRubyを完成させています。一連の制約(サイズ、変動点、一致部分/類似の類似点など)に合致する重複コードを探します。

ここには、ほとんどのMetasploitコードベースに対して実行されたCloneDRのサンプルがあります。 これはRubyコードの約460K SLOCです。コードベースの少なくとも14%はクローンです。

以下の最初の画像は概要ページです。 2番目の例は、検出されたクローンの例です(そのコードベースでは3000のうちの1つです)。あなたのブラウザーでこの画像をクリックし、「+」ボタンを使って少し大きく見やすくしたいかもしれません。

Summary Page from Ruby CloneDR run

Example Ruby Clone

+0

ニース!再因子化するコードを捜すときには非常に便利です。 – Thermatix

関連する問題