4

Railsルートから自動生成された一連のテストでrcovを使用して、デッドコード(アプリケーションで呼び出されることのないコード)に関する情報を収集しています。この設定により、コントローラー、モデル、ヘルパー、およびlibコードの啓蒙的な結果がすでに生成されています。残念ながら、rcovはerbテンプレートのコードカバレッジを追跡しません。これは、erbテンプレートが通常の実行の概念ではかなり難しいストレッチであるため、理にかなっています。

Rails自体は、テンプレートのどこで例外が発生するかなどに関する優れたレポートを生成できるため、これは収集できるデータであると感じています。

私は現在、rcovでフックできるポイントを見つけようとしていますが、システムのウロボロスの性質により、何が起こっているのかを明確に確認することが困難になっています。また、ERBのモンキーパッチがある程度必要になるのではないかと思います。

アプローチや解決策について何かアイデアがあれば、よろしくお願いします。ビュー機能を設定したら、このコードをクリーンアップして、オープンソースのRailsプラグインとしてリリースします。

4

1 に答える 1

1

ほとんどの場合、ファイル全体が実行されるため、ビューのファイル名だけが実際に絶対に必要です。私の目的は、主に未使用のパーシャルまたはテンプレートを特定することです。次のコードは、これらを画面に出力します。

module DeadCodeDetector                                                          
  module Template
    def set_extension_and_file_name_with_recording(use_full_path)                
      r = set_extension_and_file_name_without_recording(use_full_path)           
      puts "Included Template"
      puts filename
      puts "End Include"                                                         
      puts
      r                                                                          
    end                                                                          

    def self.included(base)
      base.class_eval do                                                         
        alias_method_chain :set_extension_and_file_name, :recording              
      end                                                                        
    end                                                                          
  end                                                                            
end

ActionView::Template.send(:include, DeadCodeDetector::Template)           
于 2009-06-24T19:26:37.387 に答える