Individuare componenti progetto software

di il
11 risposte

Individuare componenti progetto software

Salve a tutti,
ho un progetto software dal quale vorrei recuperare alcune informazioni, ad esempio, il nome delle classi con i relativi package ed i nomi dei metodi che compongono le classi. Tali informazioni dovrebbero essere contenute in un file di testo, c'è un modo per poterlo fare? potreste darmi qualche indicazione?
Vi ringrazio anche solo per aver letto

11 Risposte

  • Re: Individuare componenti progetto software

    Quello che vuoi fare, si fa mediante il reflection.

    Cerca 'Java Reflection', se stai parlando di Java, o 'C# Reflection', ed troverai tuttele risposte.

    Se il linguaggio e' il C++, non si puo' fare, o piu' precisamente, si puo' fare ma e' parecchio complicato.
  • Re: Individuare componenti progetto software

    Grazie migliorabile per aver risposto ed avermi indicato cosa usare, avrei un'altra informazione da chiederti, con la Reflection da quello che mi è sembrato di capire posso recuperare queste informazioni durante la compilazione del progetto, ma nel mio caso io non compilerò nessuno di questi progetti che mi serve analizzare, posso usare lo stesso la Reflection?
    Grazie per la disponibilità, buona giornata
  • Re: Individuare componenti progetto software

    Potebbe essere una soluzione efficiente quella di partire dalla cartella più esterna del progetto e passarla com input ad un metodo che analizza le cartelle ed i file in essa contenuta? Non so se questo è molto logico....
    Grazie a tutti
  • Re: Individuare componenti progetto software

    La Reflection si fa in fase di esecuzione del programma, non in fase di compilazione.
    Pero', in fase di esecuzione puoi richiedere il calicamento di certe classi.
    Devi studiarti come funziona i 'classloader' di Java (ce ne sono diversi).
    E' un lavoro abbastanza "avanzato" che richiede concetti abbastanza evoluti.
  • Re: Individuare componenti progetto software

    In pratica mi stai dicendo che dovrei caricare i progetti che devo analizzare ed eseguirli, solo in questo modo posso avere le informazioni che voglio, se invece volessi analizzare una cartella ed i relativi file, come posso fare?
    Grazie ancora
  • Re: Individuare componenti progetto software

    No,
    quello che devi fare e' creare un nuovo ClassLoader con il quale caricare un file .class o un file .jar.
    Quali? Ovviamente quelli del progetto da analizzare.

    Quindi chiedi al ClassLoader quali classi ha caricato, e a questo punto, ad ogni classe puoi chiedere quali costruttori, quali metodi, quali membri di classe o di instanza contiene, ed il tipo del valore di ritorno.

    Devi studiarti come funzionano i ClassLoader in Java: non e' difficile, ma non e' possibile spiegarlo in un post.

    Comunque ci sono i sorgenti.

    Puoi iniziare con URLClassLoader, che poi e' quello che e' piu' vicino alle tue necessita'.
  • Re: Individuare componenti progetto software

    Grazie per la disponibilità migliorabile,
    quindi dovrei, per fare quello che devo mi serve la reflection, nel quale viene usato per caricare le file.class il classLoader, per cui dovrei capire il classLoader e poi usare la reflection, guisto? inoltre per quanto riguarda il classLoader questi analizza le classi in base al loro nome, oppure il tutto potrebbe essere scritto in maniera generale, del tipo, creo un classLoader in base ad un URL specifico di ciò che devo analizzare e poi per ognuno dei file .class che incontra deve analizzare il numero di metodi.
    Dimmi, cortesemente, se il ragionamento è giusto oppure no, capisco che magari sono cose ovvie e banali, ma ti assicuro che per me non lo sono.
    Buona giornata
  • Re: Individuare componenti progetto software

    Parti con le cose semplici. Ad un incasinarle c'e' sempre tempo .
    Studiati come funziona la reflection: e' abbastanza facile. Un'oretta e ci sei.
    Per il class loader e' un po' piu' complicato, ma puoi iniziare con quello di default e vedere come funziona. Anche questo non e' complicato, un paio di orette
  • Re: Individuare componenti progetto software

    Grazie mmigliorabile per la pazienza.....
    mi sono accorta però che in realtà per tutti i progetti che devo analizzare non ho a disposizione i file .class quindi compilare tutti i progetti mi sembrerebbe una soluzione poco gestibile, per cui senza file .class non posso usare la Reflection, giusto? In tal caso come posso fare? devo crearmi io il modo con cui analizzare le varie classi, oppure esiste un qualosa che può aiutarmi a giungere alla soluzione in tempi più ragionevoli?

    Grazie ancora, buona giornata
  • Re: Individuare componenti progetto software

    Si, ci sarebbe un'altro modo, e cioe' implementare un parser per il linguaggio.
    Ora, implementare un parser e' un lavoro decisamennte complicato, ma vuoi che qualcuno non lo abbia gia' fatto?

    Ed infatti :

    https://code.google.com/p/javaparser

    https://codemodel.java.net

    http://docs.oracle.com/javase/6/docs/jdk/api/apt/mirror/overview-summary.html

    Ora: sapendo cosa cercare, le ho trovate. Ma non le conosco.

    Sta a te scaricarle e scornarticisi per capire come funzionano
  • Re: Individuare componenti progetto software

    Grazie mille migliorabile
    darò un'occhiata ai tuoi link.
    Grazie ancora e buon giornata
Devi accedere o registrarti per scrivere nel forum
11 risposte