linux user group brescia

immagine del castello

Archivio della mailing list

Diff for C...

Luca Giuzzi giuzzi a lugbs.linux.it
Ven 24 Gen 2003 12:57:37 UTC
On Fri, Jan 24, 2003 at 01:15:50PM +0100, Fabrizio Morbini wrote:
> 
> Ciao a tutti, una curiosita':
> 
> esiste una versione di diff sensibile al contenuto del file (sorgente C)?
> 
> Ad esempio due file come questi:
> 
> file1:
> 
> if (a==1) printf("ciao\n");
> 
> file2:
> 
> if (a==1)
> {
>  printf("ciao\n");
> }
> 
> non dovrebbero restituire differenze...
> 
> Ciao e grazie!

La cosa non e' cosi' semplice, in quanto un "diff" del genere dovrebbe
basarsi sulla semantica: sarebbe necessario per il programma "capire"
cosa significa esattamente il tutto.

Una soluzione `corretta' si potrebbe basare sul far processare i blocchi
al gcc e sfruttare la rappresentazione ad albero del codice che esso
costruisce dopo il parsing come base per identificare costruzioni
funzionalmente identiche. Chiaramente questo e' piuttosto macchinoso...

In generale, se vuoi evitare di avere troppe diff "spurie" sul tuo
codice C (ma il caso di cui sopra non viene risolto), ti suggerisco
di processare i files (sia quello nuovo che quello di riferimento)
con indent prima di calcolare le differenze... 

ciao,
 lg



> 
> Fabrizio.

-- 



Maggiori informazioni sulla lista Lug