2010-02-07 5 views
5

Esistono molti strumenti che è possibile utilizzare per mostrare le dipendenze tra moduli, file di codice sorgente, classi o funzioni ecc. Ma non sembra esserci alcuno strumento per analizzare le dipendenze tra le variabili. Dato un grafico di dipendenza delle variabili sarebbe utile per comprendere e refactoring del codice.C'è qualche strumento in grado di analizzare le dipendenze tra le variabili nei programmi C#?

Ad esempio, se la variabile b viene utilizzato solo per il calcolo del valore della variabile c come segue:

b = a; 
.... 
c = b + 2; 

Forse potremmo rimuovere variabile b per rendere il codice più leggibile:

.... 
c = a + 2; 

Questo tipo di restauro può essere difficile se il codice è molto complesso o ha molti cattivi odori.

C'è uno strumento in grado di analizzare le dipendenze tra le variabili in C# o altri linguaggi di programmazione?

+1

Con "variabile" vuol dire "variabile locale" specificamente, o vuoi dire parametro locale, formale, un array puntatore elemento, campo e dereferenziato? Sei preoccupato delle variabili esterne dei lambda Parametri Lambda? Locali in lambda? Locale localizzato in blocchi iteratori? Analizzando le relazioni tra it variabili arbitrarie possono essere piuttosto complicate, molto più complicate delle mere persone del luogo, in particolare quando si considera l'aliasing variabile tramite i parametri "ref". –

+0

Eric Lippert: più tipi di "variabili" possono essere analizzati, più facile sarà il lavoro di rifacimento del codice. Ho trovato che ci sono solitamente molte dipendenze complesse quando ho provato a rifattorizzare il codice legacy. – askalee

risposta

1

Il programma di ricerca è uno strumento utile per analizzare il codice C#. Almeno ti mostrerà la variabile e la variabile inutilizzate che assegni il valore ma mai usato.

Se si considera un serio refactoring del codice, è possibile scrivere un test unitario per essere più sicuri di non rompere nulla.

1

Lo strumento Phoenix Project di Microsoft Research ha attivato alcuni strumenti piuttosto interessanti. Una demo che ho visto mostra l'evidenziazione delle dipendenze dei dati. Quindi puoi passare con il mouse su "c" nel tuo esempio e tutte le espressioni che contribuiscono a tale calcolo verrebbero evidenziate. Era più una demo di phoenix, che uno strumento di sviluppo completo, ma molto bello vedere che si poteva fare. Phoenix è un free download, quindi puoi vedere che tipo di app di esempio sono incluse.

0

Vedere la discussione su come il DMS Software Reengineering Toolkit esegue (controllo e) l'analisi del flusso di dati. Questa è essenzialmente un'analisi classica del compilatore dei flussi di informazioni, che include quelle che vengono chiamate catene di utilizzo. Le catene di utilizzo mostrano come un valore (un compito specifico) viene utilizzato da altre parti del programma.

Questi flussi di informazioni sono calcolati come strutture di dati e quindi sono direttamente facili da vedere. (La pagina Web mostra le immagini ma sono i risultati del grafico scaricato a punto. Per rendere questo strumento più impegnativo

Abbiamo creato programmi di slicing con questo, che visualizzano queste informazioni in un'interfaccia utente. non sono ancora disponibili in commercio.

Grammatech rende tali affettatrici programma per C e Ada, credo.