2009-06-24 45 views
4

我在從我的rails路徑自動生成的一組測試中使用rcov來收集有關死代碼(在應用程序中從不調用的代碼)的信息。這個設置已經爲控制器,模型,幫助程序和lib代碼產生了啓發性的結果。不幸的是,rcov不會跟蹤erb模板中的代碼覆蓋率,這對於正常的執行概念來說是很有挑戰性的,因爲erb模板是一個非常具有挑戰性的延伸。如何收集有關erb模板處理的rcov樣式信息?

Rails本身可以生成有關模板異常在哪裏引發的報告等,所以我覺得這是可以收穫的數據。

我目前正在嘗試在rcov中找到可以掛鉤的點,但系統的Ouroboros本質使得難以清楚地看到發生了什麼。我也懷疑有必要對ERB進行一些簡化處理。

如果您對方法或解決方案有任何想法,我將不勝感激。一旦我設置了視圖功能,我正在清理這些代碼並將其作爲開源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)   
相關問題