Ferramentas para desenvolvedores · Comparação de texto
O que 'Ignorar espaços em branco' realmente ignora em uma diferença de texto linha por linha
· Como funciona
diferença de texto fluxo de trabalho do desenvolvedor espaço em branco
Descreve os tipos de espaços em branco que uma comparação pode normalizar, desde o recuo inicial até as execuções internas, e avisa onde os espaços em branco têm significado e não devem ser ignorados.
Cada linha mudou, mas nada realmente mudou - abre com um arquivo recuado novamente de tabulações para espaços que aparece como uma parede de diferenças
Um formatador altera o recuo de quatro espaços para dois espaços e uma diferença de linha pinta todo o arquivo como alterado. A alteração pode ser um ruído visual, portanto, uma visualização insensível a espaços em branco pode ajudar o revisor a encontrar as edições reais. Mas “mesmo texto sem espaços em branco” não é o mesmo que “mesmo programa”. Compare as visualizações comum e normalizada antes de aprovar uma configuração ou um arquivo de origem.
Quatro tipos de diferença de espaço em branco - separa recuo inicial, espaços finais, execuções internas e linhas em branco, já que cada um é causado por uma ferramenta ou hábito diferente
Mudanças de espaço em branco ocorrem em vários lugares. O recuo inicial geralmente vem da formatação; espaços à direita de copy/paste; espaços repetidos ou tabulações dentro de uma linha podem separar palavras ou colunas; uma linha em branco pode dividir blocos. A opção Ignorar espaço em branco de ToolAcre corta cada linha e recolhe cada execução interna de espaço em branco em um espaço para comparação. Ele não remove simplesmente todos os espaços em branco ou trata contagens de linhas diferentes como idênticas: duas linhas em branco permanecem duas unidades de comparação, a menos que outra operação as remova.
Como acontece a normalização antes da comparação — explica que a opção transforma cada linha em uma forma canônica para correspondência enquanto seu texto original é o que você lê
Uma chave de linha é calculada a partir do texto original antes da correspondência: trim() remove o espaço em branco inicial/trailing e uma expressão regular substitui as execuções internas por um espaço. O algoritmo diff compara chaves, mas mantém o texto original nas linhas exibidas. Prefixos e sufixos comuns são descartados antes de construir sua tabela LCS, portanto, pequenas edições em documentos grandes não exigem necessariamente a comparação de cada linha com todas as outras. Há um limite de linha diferente 2,000, porque uma tabela de programação dinâmica cresce com ambos os comprimentos laterais.
Exemplo resolvido: uma função Python reindentada e um arquivo YAML - mostra a opção limpando a visualização Python e, em seguida, ocultando uma alteração de recuo YAML que realmente altera a estrutura do documento
Imagine uma função Python cujo corpo inteiro muda de quatro espaços para dois, permanecendo no mesmo nível de aninhamento. Ignorar o recuo pode ocultar o ruído de formatação. Em YAML, mover uma chave abaixo de services.web para abaixo dos serviços altera seu mapeamento pai, mesmo que os caracteres de cada linha sejam idênticos quando o espaço em branco é cortado. Execute a opção em ambos os trechos: a visualização Python pode se tornar mais fácil de revisar, enquanto a alteração YAML pode desaparecer apesar da alteração na árvore de dados. Nunca use apenas saídas que não diferenciam espaços em branco para aprovar formatos sensíveis a recuo.
Quando espaços em branco são dados — lista formatos onde espaços carregam significado: YAML, Makefiles, blocos de código Markdown, exportações de largura fixa e literais de string
Espaços são dados em recuo YAML, receitas Makefile, blocos de código Markdown e exportações de largura fixa. Dentro de literais de string, a substituição de vários espaços pode alterar o texto visível ao usuário ou um valor que está sendo assinado ou com hash. Mesmo código com formatação geralmente flexível tem contextos onde os espaços em branco são significativos: blocos Python e documentos aqui do shell são exemplos óbvios. A opção não pode inferir esses contextos, porque vê linhas simples, não a gramática da linguagem. Escolha-o somente quando você entender o arquivo que está sendo comparado.
Combinando as opções de espaço em branco e maiúsculas e minúsculas - descreve como ativar ambos restringe a comparação às mesmas letras na mesma ordem e o que isso esconde
Combinar Ignorar espaços em branco com Ignorar maiúsculas e minúsculas restringe a correspondência a linhas cujas letras e pontuação restantes coincidem, independentemente de maiúsculas e minúsculas ou espaçamento. Isso pode tornar silencioso um documento com muita formatação, mas também pode ocultar um identificador alterado que diferencia maiúsculas de minúsculas, uma chave de cabeçalho ou um caminho do sistema de arquivos. ToolAcre coloca a chave de comparação em minúscula somente quando você ativa essa segunda opção; ele ainda exibe o texto da linha original. Alterne as opções uma de cada vez para ver quais alterações foram removidas por cada uma.
O que isto não cobre — a opção compara linhas após a normalização; ele não reflui parágrafos, detecta blocos movidos ou compara formatação em documentos ricos
O recurso não reflui parágrafos, detecta blocos movidos, compara a renderização de HTML ou decide se dois ASTs de programa são equivalentes. A comparação de ToolAcre é uma programação dinâmica LCS baseada em linha com ajuste de prefixo comum/suffix, não o algoritmo de Myers descrito em alguns tutoriais de comparação geral. Em arquivos grandes colados, ele irá parar em vez de alocar uma matriz ilimitada. Use um analisador com reconhecimento de linguagem ou uma revisão de controle de versão para declarações estruturais.
Conclusão: alterne, não use como padrão - recomenda executar ambas as comparações e mostra como a comparação de texto de ToolAcre permite ativar e desativar a opção de espaço em branco para o mesmo par de textos
Ative Ignorar espaços em branco como uma visualização, não como uma verdade padrão. A comparação de texto mantém tudo o que você cola no navegador, permitindo comparar as duas visualizações das mesmas revisões sem carregar um contrato ou arquivo de configuração. Se uma alteração desaparecer na visualização normalizada, pergunte se o formato subjacente dá significado ao espaço em branco antes de decidir que era inofensivo.