Outils de développement · Comparaison de textes
Ce que « Ignorer les espaces » ignore réellement dans une différence de texte ligne par ligne
· Comment ça marche
texte-diff workflow de développeur espace
Décompose les types d'espaces qu'une comparaison peut normaliser, de l'indentation principale aux exécutions internes, et avertit lorsque les espaces ont un sens et ne doivent pas être ignorés.
Chaque ligne a changé, mais rien n'a vraiment changé : s'ouvre avec un fichier réindenté des onglets aux espaces qui apparaît comme un mur de différences
Un formateur modifie l'indentation de quatre espaces en deux espaces et une différence de ligne peint l'ensemble du fichier comme modifié. Le changement peut être du bruit visuel, donc une vue insensible aux espaces peut aider un réviseur à trouver les modifications réelles. Mais « même texte sans espaces » n’est pas la même chose que « même programme ». Comparez les vues ordinaires et normalisées avant d'approuver une configuration ou un fichier source.
Quatre types de différences d'espaces : séparent l'indentation de début, les espaces de fin, les passages internes et les lignes vides, car chacun est causé par un outil ou une habitude différente.
Les changements d'espaces se produisent à plusieurs endroits. L'indentation de début provient souvent du formatage ; espaces de fin de copier/coller ; des espaces ou des tabulations répétés à l'intérieur d'une ligne peuvent séparer des mots ou des colonnes ; une ligne vierge peut diviser les blocs. L'option Ignorer les espaces de ToolAcre coupe chaque ligne et réduit chaque exécution interne d'espaces en un seul espace à des fins de comparaison. Il ne supprime pas simplement tous les espaces ni ne traite les différents nombres de lignes comme identiques : deux lignes vides restent deux unités de comparaison à moins qu'une autre opération ne les supprime.
Comment se produit la normalisation avant la comparaison - explique que l'option transforme chaque ligne en une forme canonique pour la correspondance tandis que votre texte original correspond à ce que vous lisez
Une clé de ligne est calculée à partir du texte original avant la correspondance : trim() supprime les espaces de début/fin et une expression régulière remplace les exécutions internes par un espace. L'algorithme diff compare les clés mais conserve le texte original dans les lignes affichées. Les préfixes et suffixes courants sont supprimés avant de créer sa table LCS, de sorte que les petites modifications dans des documents volumineux ne nécessitent pas nécessairement de comparer chaque ligne les unes par rapport aux autres. Il existe un plafond de 2 000 lignes différentes, car une table de programmation dynamique s'agrandit avec la longueur des deux côtés.
Exemple concret : une fonction Python réindentée et un fichier YAML – affiche l'option nettoyant la vue Python, puis masquant un changement d'indentation YAML qui modifie réellement la structure du document.
Imaginez une fonction Python dont le corps entier passe de quatre espaces à deux tout en restant au même niveau d'imbrication. Ignorer l'indentation peut masquer ce bruit de formatage. Dans YAML, déplacer une clé de sous services.web vers sous les services modifie son mappage parent même si les caractères de chaque ligne sont identiques une fois les espaces supprimés. Exécutez l'option sur les deux extraits : la vue Python peut devenir plus facile à examiner, tandis que la modification YAML peut disparaître malgré la modification de l'arborescence des données. N'utilisez jamais une sortie insensible aux espaces uniquement pour approuver les formats sensibles à l'indentation.
Lorsque les espaces sont des données : répertorie les formats dans lesquels les espaces ont une signification : YAML, Makefiles, blocs de code Markdown, exportations à largeur fixe et littéraux de chaîne.
Les espaces sont des données dans l'indentation YAML, des recettes Makefile, des blocs de code Markdown et des exportations à largeur fixe. Dans les chaînes littérales, le remplacement de plusieurs espaces peut modifier le texte visible par l'utilisateur ou une valeur signée ou hachée. Même le code avec un formatage généralement flexible a des contextes où les espaces sont importants : les blocs Python et les documents shell ici en sont des exemples évidents. L'option ne peut pas déduire ces contextes, car elle voit les lignes simples, pas la grammaire du langage. Choisissez-le uniquement lorsque vous comprenez le fichier comparé.
Combinaison des options d'espacement et de casse : décrit comment l'activation des deux réduit la comparaison aux mêmes lettres dans le même ordre et ce que cela cache
La combinaison d'Ignorer les espaces avec Ignorer la casse réduit la correspondance aux lignes dont les lettres restantes et la ponctuation concordent sans tenir compte de la casse ou de l'espacement. Cela peut rendre silencieux un document lourd en formatage, mais cela peut également masquer un identifiant sensible à la casse, une clé d'en-tête ou un chemin de système de fichiers modifié. ToolAcre met en minuscule la clé de comparaison uniquement lorsque vous activez cette deuxième option ; il affiche toujours le texte de la ligne d'origine. Changez les options une par une afin que vous puissiez voir quelle modification chacune a supprimée.
Ce que cela ne couvre pas : l'option compare les lignes après normalisation ; il ne redistribue pas les paragraphes, ne détecte pas les blocs déplacés et ne compare pas le formatage dans les documents riches
La fonctionnalité ne redistribue pas les paragraphes, ne détecte pas les blocs déplacés, ne compare pas le rendu HTML ou ne décide pas si deux AST de programme sont équivalents. Le diff de ToolAcre est une programmation dynamique LCS basée sur des lignes avec un découpage de préfixe/suffixe commun, et non l'algorithme de Myers décrit dans certains didacticiels de comparaison généraux. Sur les gros fichiers collés, il s'arrêtera au lieu d'allouer une matrice illimitée. Utilisez un analyseur linguistique ou une révision de contrôle de version pour les revendications structurelles.
À retenir : activez-le, ne l'utilisez pas par défaut - recommande d'exécuter les deux comparaisons et montre comment la comparaison de texte de ToolAcre vous permet d'activer et de désactiver l'option d'espacement pour la même paire de textes
Toggle Ignorer les espaces en tant que vue, pas une vérité par défaut. La comparaison de texte conserve tout ce que vous collez dans le navigateur, vous permettant de comparer les deux vues des mêmes révisions sans télécharger de contrat ou de fichier de configuration. Si un changement disparaît dans la vue normalisée, demandez si le format sous-jacent donne un sens aux espaces avant de décider qu'il est inoffensif.