java - Wie fange ich an, ein Tool zur Codeabdeckung zu schreiben?

Translate

Suchen Sie nach Büchern oder anderen Referenzen, die tatsächlich diskutierenWieein Tool zur Codeabdeckung in Java zu schreiben; Einige der verschiedenen Techniken oder Tricks - Quell- oder Bytecode-Instrumentierung.

Dies ist für eine Skriptsprache gedacht, die unter der Haube Java-Bytecode generiert.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Generiert Ihre Skriptsprache Bytecode? Generiert es Debug-Metadaten? In diesem Fall ist die Bytecode-Instrumentierung wahrscheinlich der richtige Weg. In der Tat werden vorhandene Tools wahrscheinlich funktionieren (möglicherweise mit minimalen Änderungen).

Das typische Problem bei solchen Tools, dass sie für die Arbeit mit Java geschrieben wurden und davon ausgehen, dass aclass com.foo.Bar.classentspricht einer Dateicom/foo/Bar.java. Diese Annahme aufzuheben kann mühsam sein.

EMMAist ein ClassLoader, der Bytecode für die Erfassung der Codeabdeckung in Java neu schreibt. Der Codierungsstil ist etwas funky, aber ich empfehle, den Quellcode für einige Ideen zu lesen.

Wenn Ihre Skriptsprache interpretiert wird, benötigen Sie einen übergeordneten Klassenlader (auf Quellenebene), der sich in den Interpreter einbindet.

Quelle
Gilbert Lee
Translate

Sie können die Quelle auch über ein Open Source-Tool zur Codeabdeckung abrufen und daraus lernen.

Quelle
Adelaide Lee
Translate

Danke, Mc!http://asm.objectweb.orgIch bin ein anderer.AusgezeichnetDokumentation zur Bytecode-Instrumentierung, aber nichts "direkt", was darauf abzielt, ein Coverage-Tool zu schreiben - nur einige Hinweise oder Ideen.

Quelle
Translate

Möglicherweise möchten Sie auch BCEL verwenden, um zu analysieren, welche Quellzeilen tatsächlich im Bytecode vorhanden sind. Sie möchten nicht melden, dass Dinge wie Leerzeilen und Kommentare nicht behandelt wurden.

Quelle
Translate

Wenn Sie über ColdFusion sprechen (von dem ich annehme, dass Sie von den Tags stammen), bin ich mir nicht sicher, ob dies machbar ist, aber ich kann mich hier sehr irren ...

IIRC: Wenn CF kompiliert wird, wird es im Wesentlichen in eine interpretierte Form der CFML als einfache alte Java-Quelldatei kompiliert. Diese wird dann in die Klasse kompiliert. Daher gilt jede Instrumentierung, die Sie möglicherweise haben, für die Zwischenversion und nicht für die CFML selbst.

Adobe hat jetzt den CF-Debugger, der Code durchgehen kann. Bitte beweisen Sie mir das Gegenteil. Ich würde die Codeabdeckung in CFML lieben.

Quelle