Domanda

Alla ricerca di libri o altri riferimenti che parlino effettivamente Come scrivere uno strumento di copertura del codice in Java;alcune delle varie tecniche o trucchi: fonte vs.strumentazione con codice byte.

Questo è per un linguaggio di scripting che genera codice byte Java dietro le quinte.

Nessuna soluzione corretta

Altri suggerimenti

Il tuo linguaggio di scripting genera bytecode?Genera metadati di debug?Se è così, la strumentazione bytecode è probabilmente la strada da percorrere.In effetti gli strumenti esistenti probabilmente funzioneranno (magari con modifiche minime).

Il problema tipico con tali strumenti è che sono scritti per funzionare con Java e presuppongono che a class com.foo.Bar.class corrisponde a un file com/foo/Bar.java.Sfatare questo presupposto può essere noioso.

EMMA è un ClassLoader che esegue la riscrittura del codice byte per la raccolta di copertura del codice in Java.Lo stile di codifica è un po' strano, ma consiglio di leggere il codice sorgente per avere qualche idea.

Se il tuo linguaggio di scripting viene interpretato, avrai bisogno di un caricatore di classi di livello superiore (a livello di origine) che si colleghi all'interprete.

Puoi anche ottenere il codice sorgente da uno strumento di copertura del codice Open Source e imparare da esso.

Grazie, Mc! http://asm.objectweb.org/ è un altro. Eccellente documentazione sulla strumentazione del codice byte, ma nulla "direttamente" finalizzato alla scrittura di uno strumento di copertura - solo alcuni suggerimenti o idee.

Potresti anche voler utilizzare qualcosa come BCEL per analizzare quali righe di origine esistono effettivamente nel codice byte.Non vuoi segnalare che cose come righe vuote e commenti non sono state trattate.

Se stai parlando di ColdFusion (che presumo tu sia dai tag), non sono sicuro che sia fattibile, ma potrei sbagliarmi di grosso qui...

IIRC, quando CF viene compilato, viene essenzialmente compilato in una forma interpretata del CFML come un semplice vecchio file sorgente Java, questo viene quindi compilato nella classe.Pertanto, qualsiasi strumentazione di cui potresti disporre si applicherà alla versione intermedia piuttosto che al CFML stesso.

Detto questo, però, Adobe ora ha il debugger CF che può eseguire il codice, quindi per favore dimostrami che sbaglio: mi piacerebbe la copertura del codice in CFML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top