Se si desidera ragionare sul codice sorgente dopo che gli aspetti sono stati integrati nel codice, è necessario tessere gli aspetti nel codice sorgente piuttosto che nel codice binario.
Molti tessitori di elementi fanno tessere codice binario perché non hanno accesso alle informazioni (tabella dei simboli, nomi, tipi, tipi di espressioni, ...) prodotti da un front-end del compilatore. Quindi, l'hack è, usa il codice macchina virtuale prodotto dal compilatore (questo stunt funziona fondamentalmente solo per i set di istruzioni VM come .net IL e i codici classe java) che spesso è facile da decodificare (set di istruzioni bello, regolare) decorato con informazioni sulla tabella dei simboli.
Ma se non riesci a ragionare sui risultati binari di un tale processo di tessitura, allora non puoi essere sicuro che il programma intrecciato non sia bacato, che è il punto della domanda originale dell'OP: "Come Eseguo strumenti SCA sulla fonte tessuta (efficace)? ".
È possibile risolvere questo problema in due modi:
- Ottenere la comunità di scrivere strumenti SCA che elaborano i codici di byte, piuttosto che la fonte. Questo potrebbe essere difficile perché il codice sorgente potrebbe contenere informazioni perse nel processo di compilazione.
- Un'idea migliore: Ottieni l'aspetto della community per scrivere gli aspect weavers che operano sul codice sorgente e producono codice sorgente. Questo potrebbe essere difficile perché ottenere un front end linguistico completo è difficile.
Non posso aiutarti a fare in modo che la comunità faccia una scelta.
Posso offrire un forte incoraggiamento per aiutare la comunità a scegliere il secondo modo: il nostro DMS Software Reengineering Toolkit. Questo è un sistema di trasformazione del programma che esegue le direttive della forma di "se vedi questo, sostituirlo con che" ma onorando la sintassi e la semantica del linguaggio applicando effettivamente tali modifiche alle strutture di dati del compilatore prodotte dai front end linguistici completi. (Questa è la versione di ingegneria del software della sostituzione equa in matematica). Le strutture dei dati modificate possono essere riesportate come testo sorgente compilabile, completo di commenti.
Se capisci cosa possono fare le trasformazioni in generale, puoi vedere che aspect weavers are a special case of program transformation systems. Quindi, è facile implementare gli weaving con DMS ei risultati sono codice sorgente, ovvero è possibile applicare gli strumenti di analisi del codice sorgente.
Dubito che questo in realtà risolve il problema PO di analizzare il codice Roo-generato nel breve periodo: - {
fonte
2010-02-23 02:24:08
Ho provato un po 'su questo e ho parlato anche con un fornitore di strumenti per strumenti SCA. Sembra che questo sia ancora un problema di nicchia :-( – er4z0r
Utilizziamo anche Roo e Sonar, quindi sono interessato a vedere le risposte a questa domanda ... –
Ah, è bello non essere l'unico. problemi di cui sto parlando? – er4z0r