O que esta ferramenta faz
Compara dois pedaços de texto e mostra as diferenças lado a lado ou como diff unificado. Toggles opcionais ignoram espaços em branco no início/fim e ignoram maiúsculas/minúsculas. O diff é calculado por linhas (não caracteres), que é o que queres para código, configurações e prosa.
Quando usar
- Detetar o que mudou entre duas respostas de API.
- Rever edições a um ficheiro de configuração quando não tens a versão no git.
- Comparar duas mensagens de erro para encontrar a única palavra diferente.
- Verificar que um round-trip de copy-paste não inseriu caracteres invisíveis.
Como funciona
O algoritmo é um cálculo de subsequência comum mais longa (LCS), que é a mesma abordagem que o git diff usa. A complexidade é aproximadamente O(n × m) nas contagens de linhas, por isso limitamos os inputs a 2500 linhas por lado para manter o desempenho previsível. As linhas correspondentes são emparelhadas; as linhas que existem só num lado são marcadas como adições ou remoções.
Notas
Porquê linha a linha e não caractere a caractere? Porque a maioria dos diffs reais são sobre linhas. Os diffs ao nível do caractere são ruidosos em qualquer coisa maior que uma frase. Se precisas de um diff de caracteres a sério, usa git diff --word-diff localmente.
Ignorar espaços em branco ignora tabs vs espaços? Sim — esse toggle trata qualquer sequência de espaços em branco como equivalente a outra, o que é útil quando um ficheiro foi reformatado mas o conteúdo é o mesmo.
O que acontece para além de 2500 linhas? A ferramenta recusa-se a renderizar e pede-te para aparares. O LCS é quadrático; com 100k linhas ficavas com o separador bloqueado durante minutos.
Ferramentas relacionadas
- Formatador JSON — pretty-print primeiro, depois compara
- JSON ↔ YAML — converte para uma forma estável antes de comparar