2009-06-24 50 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)   
相关问题