2009-06-24 12 views
4

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

Rails自体は、テンプレートの例外が発生した場所などについて適切なレポートを生成することができるため、収集できるデータのように感じられます。

私は現在、rcovのポイントを見つけようとしていますが、システムのOuroborosの性質上、何が明確に起こっているのかを確認することが難しくなっています。私は、ERBのある種の量のMonkeypatchingが必要であると思われます。

アプローチや解決策についてご意見がありましたら、感謝します。ビュー機能を設定したら、このコードをクリーンアップしてオープンソースのRailsプラグインとしてリリースします。

答えて

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)   
関連する問題