Utilia

Confronto codice (diff)

Confronta due versioni di codice affiancate o in linea, con evidenziazione della sintassi, numeri di riga, opzioni sugli spazi e un diff unificato da copiare.

Come confrontare due frammenti di codice

  1. Incolla la vecchia versione in Codice originale e quella nuova in Codice modificato.
  2. Scegli il Linguaggio, oppure lascia Rileva automaticamente: lo strumento lo deduce dal codice e mostra il linguaggio rilevato accanto alle statistiche.
  3. Scegli una Vista: Affiancata oppure In linea (unificata).
  4. Imposta le opzioni che ti servono: Ignora spazi e indentazione, Ignora maiuscole e minuscole, Evidenzia le parole modificate e Mostra solo le modifiche (3 righe di contesto).
  5. Clicca su Confronta. Dopo il primo confronto, il risultato segue le tue modifiche mentre scrivi.
  6. Clicca su Copia come diff unificato o Scarica .diff per riutilizzare la modifica come patch.

Inverti i lati scambia le due versioni, trasformando le aggiunte in eliminazioni e viceversa.

Come leggere il diff

Le righe rimosse sono colorate di rosso e appartengono all’originale; le righe aggiunte sono colorate di verde e appartengono alla nuova versione. Ogni riga conserva il numero di riga del proprio file, così puoi raggiungerla subito nel tuo editor.

  • Affiancata mette i due file in due colonne numerate. Una riga modificata sta accanto alla sua nuova versione. Con Evidenzia le parole modificate vengono marcate le parole cambiate all’interno di quella riga; senza, entrambe le righe mantengono tutti i colori della sintassi.
  • In linea (unificata) mostra una sola colonna, come in una code review: per ogni blocco modificato vengono prima le righe rimosse (−), poi quelle aggiunte (+), con i numeri di riga sia vecchi sia nuovi.
  • Mostra solo le modifiche (3 righe di contesto) ripiega i lunghi tratti invariati in un segnaposto “⋯ N righe invariate”, il che rende molto più facile la revisione dei file grandi.

La riga delle statistiche conta le righe aggiunte, rimosse e invariate.

Evidenziazione della sintassi

L’evidenziazione avviene nel tuo browser con highlight.js. Viene caricata solo la grammatica del linguaggio scelto, al primo confronto, così la pagina resta leggera. I linguaggi supportati includono JavaScript, TypeScript, Python, Java, C#, C / C++, Go, Rust, PHP, Ruby, CSS, HTML / XML, JSON, YAML, SQL, Bash / Shell e Markdown. Il rilevamento automatico usa indizi semplici (parole chiave, parentesi, parsing JSON); se sbaglia, scegli tu il linguaggio oppure seleziona Testo semplice.

Spazi, indentazione e fine riga

Ignora spazi e indentazione confronta le righe dopo averle ripulite dagli spazi iniziali e finali e dopo aver ridotto le sequenze di spazi e tabulazioni, quindi un file reindentato da 2 a 4 spazi o da tabulazioni a spazi non mostra differenze. I fine riga Windows (CRLF) e Unix (LF) vengono normalizzati prima del confronto, quindi un file che ha cambiato solo i fine riga risulta identico. Tieni presente che gli spazi possono contare in Python, YAML e nei Makefile: disattiva l’opzione quando l’indentazione è significativa.

Il formato diff unificato

La patch esportata usa il formato unificato standard letto da git apply, patch e dagli strumenti di code review: un’intestazione con i due nomi di file, poi blocchi (hunk) che iniziano con @@ -a,b +c,d @@ e tre righe di contesto attorno a ogni modifica. I file si chiamano original e changed, con l’estensione del linguaggio.

Domande frequenti

Il mio codice viene caricato su un server?

No. Il confronto e l’evidenziazione avvengono entrambi in locale nel tuo browser; il codice non lascia mai il tuo dispositivo.

In cosa è diverso dal confronto di testi?

Usa lo stesso motore di confronto riga per riga, ma aggiunge l’evidenziazione della sintassi, una vista unificata, il ripiegamento del contesto e una gestione degli spazi pensata per il codice.

Perché due righe risultano diverse anche se sembrano identiche?

Probabilmente differiscono per caratteri invisibili: spazi finali, tabulazioni al posto di spazi o uno spazio unificatore. Spunta Ignora spazi e indentazione per averne conferma.

Posso applicare la patch scaricata con Git?

Sì. Salvala ed esegui patch original.js < changes.diff, oppure adatta i nomi dei file nell’intestazione e usa git apply.

Quanto possono essere grandi i frammenti?

Diverse migliaia di righe si confrontano rapidamente. Se due file molto grandi sono completamente diversi, lo strumento si ferma dopo qualche secondo e ti chiede di confrontare parti più piccole.