2009-06-24 1 views
4

Я использую rcov на наборе тестов, автогенерируемых из маршрутов рельсов, для сбора информации о мертвом коде (код, который никогда не вызывается в приложении). Эта настройка уже генерирует просветительные результаты для контроллеров, моделей, помощников и кода lib. К сожалению, rcov не отслеживает покрытие кода в шаблонах erb, что имеет смысл, поскольку шаблонирование шаблонов является довольно сложным шагом к нормальной концепции исполнения.Как собрать информацию о стиле rcov по обработке шаблонов erb?

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)