Italiano

Strumenti per sviluppatori · Confronto di testi

Cosa ignora realmente "Ignora spazi bianchi" in una differenza di testo riga per riga

· Come funziona

testo-diff flusso di lavoro dello sviluppatore spazi bianchi

Due revisioni del testo allineate con modifiche al rientro attenuate ma modifiche al contenuto preservate
Illustrazione vettoriale originale ToolAcre

Suddivide i tipi di spazi bianchi che un confronto può normalizzare, dal rientro iniziale alle sequenze interne, e avverte dove gli spazi bianchi hanno significato e non dovrebbero essere ignorati.

Ogni riga è cambiata, ma in realtà non è successo nulla: si apre con un file rientrato da tabulazioni a spazi che viene visualizzato come un muro di differenze

Un formattatore modifica il rientro di quattro spazi in due spazi e un diff di riga dipinge l'intero file come modificato. La modifica potrebbe essere un rumore visivo, quindi una visualizzazione insensibile agli spazi bianchi può aiutare un revisore a trovare le modifiche effettive. Ma “stesso testo senza spazi” non è la stessa cosa di “stesso programma”. Confronta insieme le visualizzazioni ordinaria e normalizzata prima di approvare una configurazione o un file di origine.

Quattro tipi di differenza degli spazi bianchi: separa il rientro iniziale, gli spazi finali, i passaggi interni e le righe vuote, poiché ciascuno è causato da uno strumento o un'abitudine diversa

Le modifiche agli spazi bianchi si verificano in diversi punti. Il rientro iniziale spesso deriva dalla formattazione; gli spazi finali da copy/paste; spazi ripetuti o tabulazioni all'interno di una riga possono separare parole o colonne; una riga vuota può dividere i blocchi. L'opzione Ignora spazi bianchi di ToolAcre taglia ogni riga e comprime ogni sequenza interna di spazi bianchi in uno spazio per il confronto. Non rimuove semplicemente tutti gli spazi bianchi né tratta i diversi conteggi di righe come identici: due righe vuote rimangono due unità di confronto a meno che un'altra operazione non le rimuova.

Come avviene la normalizzazione prima del confronto: spiega che l'opzione trasforma ogni riga in una forma canonica per la corrispondenza mentre il testo originale è quello che leggi

Una chiave di riga viene calcolata dal testo originale prima della corrispondenza: trim() rimuove gli spazi bianchi iniziali/trailing e un'espressione regolare sostituisce le sequenze interne con uno spazio. L'algoritmo di differenza confronta le chiavi ma mantiene il testo originale nelle righe visualizzate. I prefissi e i suffissi comuni vengono scartati prima di creare la tabella LCS, quindi piccole modifiche in documenti di grandi dimensioni non richiedono necessariamente il confronto di ogni riga con le altre. C'è un 2,000 limite di linea differente, perché una tabella di programmazione dinamica cresce con entrambe le lunghezze dei lati.

Esempio realizzato: una funzione Python reindentata e un file YAML: mostra l'opzione che ripulisce la vista Python, quindi nasconde una modifica del rientro YAML che altera effettivamente la struttura del documento

Immagina una funzione Python il cui intero corpo cambia da quattro spazi a due rimanendo allo stesso livello di nidificazione. Ignorare il rientro può nascondere quel rumore di formattazione. In YAML, lo spostamento di una chiave da sotto services.web a sotto i servizi ne modifica la mappatura principale anche se i caratteri di ogni riga sono identici una volta tagliati gli spazi bianchi. Esegui l'opzione su entrambi gli snippet: la vista Python potrebbe diventare più facile da rivedere, mentre la modifica YAML può svanire nonostante la modifica dell'albero dei dati. Non utilizzare mai solo l'output insensibile agli spazi bianchi per approvare i formati sensibili al rientro.

Quando gli spazi bianchi sono dati: elenca i formati in cui gli spazi hanno un significato: YAML, Makefile, blocchi di codice Markdown, esportazioni a larghezza fissa e stringhe letterali

Gli spazi sono dati nel rientro YAML, ricette Makefile, blocchi di codice Markdown ed esportazioni a larghezza fissa. All'interno dei valori letterali stringa, la sostituzione di più spazi può modificare il testo visibile all'utente o un valore firmato o sottoposto ad hashing. Anche il codice con formattazione generalmente flessibile ha contesti in cui gli spazi bianchi sono significativi: i blocchi Python e i documenti qui della shell sono esempi evidenti. L'opzione non può dedurre tali contesti, poiché vede le linee semplici, non la grammatica della lingua. Sceglilo solo quando capisci il file da confrontare.

Combinazione delle opzioni spazi bianchi e maiuscole e minuscole: descrive come l'attivazione di entrambe restringe il confronto alle stesse lettere nello stesso ordine e cosa nasconde

La combinazione Ignora spazi bianchi con Ignora maiuscole e minuscole restringe la corrispondenza alle righe le cui restanti lettere e punteggiatura concordano indipendentemente dalle maiuscole e minuscole o dalla spaziatura. Ciò potrebbe rendere silenzioso un documento con una formattazione pesante, ma può anche nascondere un identificatore con distinzione tra maiuscole e minuscole, una chiave di intestazione o un percorso del filesystem modificato. ToolAcre mette in minuscolo la chiave di confronto solo quando attivi la seconda opzione; visualizza ancora il testo della riga originale. Cambia le opzioni una alla volta in modo da poter vedere quale modifica è stata rimossa da ciascuna.

Cosa non copre: l'opzione confronta le linee dopo la normalizzazione; non ridispone i paragrafi, non rileva i blocchi spostati né confronta la formattazione nei documenti ricchi

La funzionalità non ridispone i paragrafi, non rileva i blocchi spostati, non confronta il rendering HTML né decide se due AST del programma sono equivalenti. Il diff di ToolAcre è una programmazione dinamica LCS basata su linee con ritaglio del prefisso comune/suffix, non l'algoritmo di Myers descritto in alcuni tutorial generali sulle diff. Su file incollati di grandi dimensioni si fermerà invece di allocare una matrice illimitata. Utilizzare un parser sensibile al linguaggio o una revisione del controllo della versione per le affermazioni strutturali.

In conclusione: attivalo/disattivalo, non impostarlo per impostazione predefinita: consiglia di eseguire entrambi i confronti e mostra come il confronto del testo di ToolAcre ti consente di attivare e disattivare l'opzione degli spazi bianchi per la stessa coppia di testi

Attiva/disattiva Ignora gli spazi bianchi come vista, non come verità predefinita. Il confronto del testo conserva tutto ciò che incolli nel browser, permettendoti di confrontare entrambe le visualizzazioni delle stesse revisioni senza caricare un contratto o un file di configurazione. Se una modifica scompare nella vista normalizzata, chiedi se il formato sottostante dà un significato agli spazi bianchi prima di decidere che era innocuo.