4

我在从我的 rails 路由自动生成的一组测试中使用 rcov 来收集有关死代码(在应用程序中从未调用过的代码)的信息。这种设置已经为控制器、模型、助手和 lib 代码产生了启发性的结果。不幸的是,rcov 不跟踪 erb 模板中的代码覆盖率,这是有道理的,因为 erb 模板是对正常执行概念的一个相当具有挑战性的延伸。

Rails 本身可以生成关于在模板中引发异常的位置等的良好报告,所以我觉得这是可以收集的数据。

我目前正在尝试在 rcov 中找到可以连接的点,但是系统的 Ouroboros 特性使得很难清楚地看到正在发生的事情。我还怀疑有必要对 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 回答