Gibt es eine C1-Code-Coverage-Analyse für Ruby?

8

Ich verwende derzeit Rcov , um eine C0-Coverage-Analyse für ein Rails-Projekt zu erhalten, an dem ich gerade arbeite.

Aber diese Ergebnisse sind praktisch bedeutungslos - ich habe eine 100% ige Abdeckung nach rcov (da sie nur die C0-Analyse abdeckt) und ich habe kaum die Hälfte der Testfälle für die Funktionalität geschrieben, die bisher existiert.

Ich bin an die nützlichen Ergebnisse aus der Codeabdeckung in Visual Studio 2008-Team gewöhnt, die C1-Abdeckung hat. Gibt es irgendwelche Tools, die eine ähnliche Abdeckung für Ruby bieten?

    
Eliza Brock Marcum 14.11.2008, 05:37
quelle

3 Antworten

12

Im Moment gibt es keine C1-Coverage-Tools für Ruby. Tatsächlich gibt es keine anderen Coverage-Tools als RCov.

Bis vor kurzem war es nur möglich, solche Tools zu schreiben, indem man den MRI-Interpreter in C patchen oder erweitern konnte. Seit etwa zwei Jahren ist es auch möglich, JRuby in Java zu erweitern, und tatsächlich gibt es seit letztem Monat einen Port von RCov für JRuby. Dies erfordert jedoch sowohl eine Kenntnis von Ruby und C als auch ein ziemlich tiefes Wissen darüber, denn herumfummeln mit den Interna der MRT ist nichts für schwache Nerven.

Aber nur mit Rubinius wird es möglich sein, in Ruby selbst dynamische Analysewerkzeuge wie Code-Coverage-Tools zu schreiben, die das Toolwriting für einen viel größeren Teil der Ruby-Community zugänglich machen. Ich hoffe, dass dies in Verbindung mit der beträchtlichen finanziellen Unterstützung von Tool-Anbietern geschieht (viele IDE-Hersteller arbeiten bereits an Ruby-IDEs, einschließlich CodeGear (ex-Borland), IntelliJ, NetBeans, Eclipse, SapphireSteel (Ruby in Steel) für Visual Studio) und sogar Microsoft) wird zu schnellen Innovationen im Ruby-Tooling-Bereich im Jahr 2009 führen und wir werden Dinge wie C1-, C2-Coverage, NPath-Komplexität, viel feinkörnigeres Profiling und so weiter sehen.

Bis dahin ist die einzige Idee, die ich habe, Java-Tools zu verwenden. Die JRuby-Leute versuchen, die richtigen magischen Metadaten auszusenden, um ihren generierten Bytecode zumindest von den Java-Tools durchlässig zu machen. Es ist also möglich, Java-Coverage-Tools mit JRuby zu verwenden. Ich habe jedoch keine Ahnung, ob das tatsächlich funktioniert oder ob es funktionieren soll.

    
Jörg W Mittag 14.11.2008, 07:09
quelle
1

Für die Aufzeichnung hat NetBeans 7.0 Code-Coverage-Analyse für Ruby eingebaut. Ich kann keine Dokumente finden, die erklären, ob es C0 oder C1 ist oder nicht, aber es ist etwas, das man im Auge behalten sollte.

    
Elocution Safari 17.12.2008 17:52
quelle
0

Ich kenne keine Code-Coverage-Tools, aber Ruby hat einen Mutationstester namens "Heckle".

Beim Mutationstest wird der zu testende Code geändert und überprüft, ob diese Mutationen dazu führen, dass die Komponententests fehlschlagen.

Leider enthält das neueste offizielle Schmuckstück (Version 1.4.1) einige Fehler. Vielleicht möchten Sie also ein Schmuckstück mit Code aus dem Entwicklungszweig erstellen. Es kann nur Instanzmethoden mutieren. Ich bin mir nicht sicher, wie zuverlässig die Entwicklungszweigversion auch ist.

Mutationstests sollten vermieden werden, wenn der zu testende Code das System potenziell zerstören könnte (z. B. Löschen von Dateien). Vielleicht möchten Sie eine FAQ zu "Heckle" und eine FAQ-Frage, die rcov versus heckle erwähnt .

    
Andrew Grimm 19.11.2008 00:17
quelle