2010-08-10 6 views
11

Mein aktueller Ruby on Rails-Projekt tut Tests über rcov (genauer gesagt, relevance rcov, und wir haben einen ziemlich hohen Standard (versagen wir den Build, wenn wir < 95% Code Coverage haben).Rcov Berichterstattung drastisch ändert mit -xrefs

Wir den folgenden Befehl verwenden, um dies zu testen.

rcov_cmd = "rcov --rails --text-summary \ 
      --include #{included_dirs} \ 
      --exclude #{excluded_dirs} \ 
      --aggregate #{coverage_dir}/coverage.data \ 
      --output #{coverage_dir} \ 

Heute habe ich einen Code gefunden, grün (mit run) registriert in den rcov Berichte Homever, kann ich beweisen, dass dieser Code nicht laufen bekommen wird (ich hebe eine Ausnahme zu Beginn der Funktion, und meine Einheit Tests bestanden)

Ich habe etwas recherchiert und das --xrefs-Flag für rcov gefunden, von dem ich dachte, dass es alle Caller für jede Zeile in den rcov-Berichten hinzufügen würde.

änderte ich den rcov Befehl:

rcov_cmd = "rcov --rails --text-summary --xrefs \ 
     --include #{included_dirs} \ 
     --exclude #{excluded_dirs} \ 
     --aggregate #{coverage_dir}/coverage.data \ 
     --output #{coverage_dir} \ 

(den zusätzlichen --xrefs flag Mitteilung).

Statt zusätzlicher Callsite-Informationen habe ich stattdessen meine Testabdeckung von 96% auf 48% erhöht.

Ändert --xrefs die Art der Analyse, wie rcov? (Ich dachte, es würde nur Informationen zur Callsite sammeln). Wie unterscheidet sich das vom ersten Befehl? (Ich habe das Gerät Testabdeckung Abfall zu sehen, ob es eine fehlerhafte Einheit Test ist, und ich weiß, dass die Abdeckung Prozentsatz fallen kann, wenn es im Vorfeld ein Fehler ist, aber es sieht gut für mich)

+0

Haben Sie versucht mit nur '--callsites' und keine' --xrefs' zu bestimmen, ob es tatsächlich die enthaltenen Callsites Informationen sind, die den Unterschied verursachen? Könnte das Problem ein wenig einschränken. – Shadwell

+0

Ich ersetzt --xrefs und --callsites und sah den gleichen Rückgang der Testabdeckung – RyanWilcox

Antwort

1

Von rcov manual:

--[no-]callsites 
    Show callsites in generated XHTML report. (somewhat slower; disabled by default) 
--[no-]xrefs 
    Generate fully cross-referenced report. (includes --callsites) 

von Rcov CallSiteAnalyzer Class

A CallSiteAnalyzer can be used to obtain information about: 

    * where a method is defined ("defsite") 
    * where a method was called from ("callsite") 

mit dieser rcov analysieren können genauere Berichterstattung Informationen in den Kosten der längeren Ausführung bieten.

Verwandte Themen