gpt4 book ai didi

ruby-on-rails - 如何收集有关 erb 模板处理的 rcov 式信息?

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:47 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

我实际上只是绝对需要 View 文件名,因为在大多数情况下它们将被完整执行。我的目的主要是识别未使用的部分或模板。以下代码将这些输出到屏幕。

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)

关于ruby-on-rails - 如何收集有关 erb 模板处理的 rcov 式信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1039684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com