Как собрать информацию в стиле rcov при обработке шаблонов erb?
Я использую rcov для набора тестов, автоматически сгенерированных из моих маршрутов rails, для сбора информации о мертвом коде (код, который никогда не вызывается в приложении). Эта настройка уже генерирует полезные результаты для контроллеров, моделей, помощников и кода lib. К сожалению, rcov не отслеживает покрытие кода в шаблонах erb, что имеет смысл, так как шаблонирование erb является довольно сложной задачей для нормальной концепции исполнения.
Сам Rails может генерировать хорошие отчеты о том, где в шаблонах возникают исключения и тому подобное, поэтому я чувствую, что это данные, которые можно собирать.
В настоящее время я пытаюсь найти точки в rcov, к которым я могу подключиться, но природа системы Уроборос мешает ясно видеть происходящее. Я также подозреваю, что некоторое количество обезьяны 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)