java - Comment commencer à écrire un outil de couverture de code?

Translate

Recherche de livres ou d'autres références qui traitent réellementCommentpour écrire un outil de couverture de code en Java; certaines des diverses techniques ou astuces - instrumentation de code source ou octet.

Ceci est pour un langage de script qui génère du code d'octet Java sous le capot.

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

Toutes les réponses

Translate

Votre langage de script génère-t-il du bytecode? Génère-t-il des métadonnées de débogage? Si tel est le cas, l'instrumentation bytecode est probablement la voie à suivre. En fait, les outils existants fonctionneront probablement (peut-être avec un minimum de modifications).

Le problème typique avec de tels outils est qu'ils sont écrits pour fonctionner avec Java et supposent qu'unclass com.foo.Bar.classcorrespond à un fichiercom/foo/Bar.java. Dérouler cette hypothèse peut être fastidieux.

EMMAest un ClassLoader qui réécrit le code d'octet pour la collection de couverture de code en Java. Le style de codage est un peu funky, mais je recommande de lire le code source pour quelques idées.

Si votre langage de script est interprété, vous aurez besoin d'un chargeur de classe de niveau supérieur (au niveau de la source) qui se connecte à l'interpréteur.

La source
Gilbert Lee
Translate

Vous pouvez également obtenir la source à partir d'un outil de couverture de code Open Source et en tirer des leçons.

La source
Adelaide Lee
Translate

Thxm, Mc!http://asm.objectweb.org/ en est un autre.Excellentdocumentation sur l'instrumentation de code d'octet, mais rien "directement" visant à écrire un outil de couverture - juste quelques conseils ou idées.

La source
Translate

Vous pouvez également utiliser quelque chose comme BCEL pour analyser quelles lignes de source existent réellement dans l'octet-code. Vous ne voulez pas signaler que des éléments tels que les lignes vides et les commentaires n'ont pas été couverts.

La source
Translate

Si vous parlez de ColdFusion (dont je suppose que vous êtes issu des balises), je ne suis pas sûr que ce soit faisable mais je me trompe peut-être ici ...

IIRC, Lorsque CF compile, il se compile essentiellement dans une forme interprétée du CFML comme un ancien fichier source java, il est ensuite compilé dans la classe. Par conséquent, toute instrumentation que vous pourriez avoir s'appliquera à la version intermédiaire plutôt qu'au CFML lui-même.

Cela dit, Adobe a maintenant le débogueur CF qui peut parcourir le code, alors veuillez me prouver le contraire - j'adorerais la couverture du code dans CFML.

La source