2009-06-24 3 views
4

Ich verwende rcov für eine Reihe von Tests, die automatisch von meinen Rails-Routen generiert wurden, um Informationen über toten Code (Code, der niemals in der Anwendung aufgerufen wird) zu sammeln. Diese Einrichtung erzeugt bereits erleuchtende Ergebnisse für Controller, Modelle, Helfer und Lib-Code. Leider verfolgt rcov die Code-Abdeckung in erb-Templates nicht, was sinnvoll ist, da das erb templating eine ziemlich herausfordernde Erweiterung des normalen Ausführungskonzepts darstellt.Wie sammelt man Informationen über den rcov-Stil zur Verarbeitung von Erb-Templates?

Rails selbst kann gute Berichte darüber generieren, wo in Templates Ausnahmen ausgelöst werden und dergleichen, so dass ich denke, dass dies Daten sind, die geerntet werden können.

Ich versuche gerade, Punkte in rcov zu finden, an denen ich hängen kann, aber die Ouroboros-Natur des Systems macht es schwierig zu sehen, was klar passiert. Ich vermute auch, dass ein gewisses Maß an Monkey-Anpassung von ERB notwendig sein wird.

Wenn Sie Ideen für Ansätze oder Lösungen haben, würde ich es begrüßen. Sobald ich die Ansichtsfunktionalität eingerichtet habe, bereite ich diesen Code auf und veröffentliche ihn als Open-Source-Rails-Plugin.

Antwort

1

Ich brauche eigentlich nur brauchen die Ansicht Dateinamen wie in den meisten Fällen werden sie in ihrer Gesamtheit ausgeführt werden. Mein Zweck besteht hauptsächlich darin, unbenutzte Teiltöne oder Vorlagen zu identifizieren. Der folgende Code gibt diese an den Bildschirm aus.

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)   
Verwandte Themen