salve a tutti ragazzi,
ho un problema un po rognoso da risolvere e cercavo un consiglio su come procedere. In pochissime parole il problema è il seguente:
Sono uno studente della facoltà di informatica di Potenza è sto sviluppando un plugin di eclipse che analizza un qualsiasi progetto java dato in input e fornisce in outpout un elenco di tutti i metodi morti, inutilizzati, non richiamati da nessun altro frammento di codice.
Per applicazioni non complesse (che non richiedano utilizzo di componenti swing o awt), il risultato è corretto al 100%. Il problema sorge quando analizzo un applicazione swing. Tra i metodi morti risultano infatti tutti, e dico tutti, gli actionPerformed , poichè effettivamente questi non vengono direttamente chiamati da nessun altro frammento di codice dell'applicazione, ma vengono chiamati dalla macchina virtuale a runtime in seguito allo scaturirsi di determinati eventi. L'analisi statica che effettuo non è quindi per il momento in grado di stabilire se un determinato actionPerformed sia effettivamente morto oppure no. Vorrei specificare che lavorando coneclipse e avendo creato un plugin, utilizzo naturalmente il package jdt che mi fornisce tipi come IProject, IMethod,IMethodBinding ecc, utilissimi per l'analisi e la modifica di progetti.
Qualcuno di voi sarebbe in grado di darmi un consiglio su come individuare correttamente se un actionPerformed è morto o no?
Io avevo pensato di ottenere da tutti i componenti swing dell'applicazione in analisi, la lista degli EventListeners registrati come gestori degli eventi generati da questi componenti, e di conseguenza individuare quali sono gli actionPerformed utilizzati o no. Un analisi più approfondita del problema mi ha portato a capire che questa lista potrei ottenerla solo a runtime, ma per le specifiche del mio progetto l'analisi deve essere statica.
Qualche idea?
vi ringrazio anticipatamente per l'attenzione