【问题标题】:How does one collect rcov-style information on the processing of erb templates?如何收集有关 erb 模板处理的 rcov 样式信息?
【发布时间】:2010-11-05 14:19:56
【问题描述】:

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

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

我目前正在尝试在 rcov 中找到可以连接的点,但是系统的 Ouroboros 特性使得很难清楚地看到正在发生的事情。我还怀疑有必要对 ERB 进行一些猴子补丁。

如果您对方法或解决方案有任何想法,我将不胜感激。设置好视图功能后,我将清理此代码并将其作为开源 Rails 插件发布。

【问题讨论】:

    标签: ruby-on-rails ruby rcov


    【解决方案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)           
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多