O conceito de comparação de dados e a sua utilidade
A comparação de dados, comummente designada por "diff", é o processo de identificar discrepâncias estruturais ou textuais entre duas versões de um mesmo conteúdo. Esta operação é fundamental em fluxos de trabalho técnicos e administrativos, permitindo rastrear revisões, validar alterações de código e auditar ficheiros de configuração.
Ao comparar uma versão original com uma versão modificada, o objetivo consiste em isolar com precisão o que foi acrescentado, o que foi removido e o que sofreu alterações. A realização desta tarefa de forma manual é propensa a erros, especialmente em volumes de dados extensos. A automatização do processo garante que nenhuma modificação passe despercebida, fornecendo um registo claro e acionável das diferenças detetadas.
Comparação de texto por linhas e palavras
No modo de texto, a análise de diferenças pode ser ajustada de acordo com o nível de detalhe pretendido através da granularidade. A ferramenta opera com dois níveis distintos de comparação:
- Linhas: O algoritmo analisa o texto linha por linha. É o método ideal para comparar código-fonte, listas de dados ou documentos estruturados onde cada linha representa uma instrução ou item independente.
- Palavras: A análise é realizada ao nível da palavra individual. Este ajuste é mais adequado para textos em prosa, artigos ou documentação, onde as alterações ocorrem frequentemente a meio de uma frase e exigem uma identificação mais cirúrgica.
Para demonstrar o funcionamento, a ferramenta disponibiliza um exemplo de texto. O conteúdo original é:
As ferramentas do BroBroGo são executadas no seu navegador.
São rápidas, privadas e simples.
Use-as quando precisar de uma verificação rápida.
Após a modificação, o texto passa a apresentar a seguinte redação:
As ferramentas do BroBroGo são executadas no seu navegador.
São rápidas, privadas e focadas.
Use-as quando precisar de uma comparação rápida.
Ao processar esta alteração, o comparador identifica as substituições específicas das palavras "simples" por "focadas" e "verificação" por "comparação".
Estrutura e semântica na comparação de JSON
A comparação de ficheiros JSON (JavaScript Object Notation) difere da comparação de texto simples porque o JSON é um formato de dados estruturado. No modo JSON, a ferramenta analisa e formata o conteúdo de forma consistente antes de efetuar a validação, permitindo mapear as alterações através de caminhos estruturais específicos.
Existem regras semânticas cruciais na forma como os dados são interpretados:
- Objetos e chaves: Os objetos em JSON são coleções de pares chave-valor não ordenadas. No modo JSON, as chaves dos objetos são comparadas pelo nome. Isto significa que se a única diferença entre dois objetos for a ordem em que as chaves aparecem, o comparador não reportará uma alteração semântica.
- Matrizes (arrays): As matrizes são coleções ordenadas de valores. Por esta razão, as matrizes são comparadas estritamente pela sua posição. Se a ordem dos elementos numa matriz for alterada, isso será identificado como uma modificação estrutural.
O exemplo de JSON original fornecido pela ferramenta é:
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "hash"],
"private": true
}
O JSON modificado correspondente é:
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "diff"],
"private": true,
"updated": 2026
}
Neste cenário, a ferramenta identifica que o terceiro elemento da matriz "tools" mudou de "hash" para "diff" e que foi adicionada uma nova chave "updated" com o valor 2026. Se não existirem divergências entre os valores analisados, o sistema apresenta a mensagem "Nenhuma alteração de valor JSON encontrada".
Processamento local e privacidade dos dados
A segurança da informação é um fator crítico ao lidar com dados sensíveis, tais como credenciais de configuração, dados de clientes ou respostas de APIs de produção.
O processamento desta ferramenta ocorre inteiramente no navegador do utilizador. O texto e o JSON introduzidos não são enviados para servidores externos nem são guardados pelo BroBroGo. Toda a computação necessária para analisar as diferenças, formatar o JSON e gerar os relatórios de alterações é executada localmente pelo motor de JavaScript do próprio navegador.
Gestão de limites e tratamento de erros
Para garantir que a interface permanece fluida e responsiva, existem limites operacionais e mecanismos de salvaguarda integrados no sistema:
- Limites de caracteres: Cada um dos campos de entrada ("Original" e "Modificado") está limitado a um máximo de 300 000 caracteres. Se este limite for excedido, surge o aviso "Essa entrada é grande demais para esta ferramenta. Tente uma comparação menor.".
- Tempo limite (Timeout): Algoritmos de comparação em textos muito complexos podem exigir um esforço computacional elevado. Se a comparação demorar mais de 2,5 segundos, o processo é interrompido e é exibida a mensagem "Esta comparação está a demorar muito tempo. Tente uma entrada menor ou use o modo de linhas.".
- Resultados limitados: Em situações de grande volume de dados, a ferramenta pode optar por apresentar uma versão truncada do resultado para evitar o bloqueio da página, exibindo o alerta "A apresentar um resultado limitado para que a página continue responsiva.".
- Erros de validação: Se o conteúdo introduzido para comparação de JSON não respeitar a sintaxe correta do formato, o utilizador será alertado com "O JSON da esquerda é inválido:" ou "O JSON da direita é inválido:", seguido do erro técnico correspondente. Em caso de falha genérica no algoritmo de correspondência, a interface exibe "Não foi possível comparar estas entradas.".
Perguntas Frequentes
Qual é a diferença entre o modo de texto e o modo JSON?
O modo de texto compara o conteúdo bruto por linha ou palavra. O modo JSON analisa primeiro ambos os lados, formata-os de maneira consistente e lista os caminhos alterados, como $.user.email.
A ferramenta suporta entradas muito grandes?
As comparações lentas são interrompidas após 2,5 segundos. Os textos colados acidentalmente que sejam muito grandes são limitados para que a página continue responsiva.
O modo JSON ignora a ordem das chaves dos objetos?
A lista estruturada de alterações compara as chaves dos objetos pelo nome, pelo que a ordem das chaves por si só não é reportada como uma alteração semântica. As matrizes (arrays) são comparadas por posição.
Como posso inverter rapidamente os textos que introduzi?
A ferramenta possui uma função para inverter os lados esquerdo e direito. Ao acionar esta opção, os conteúdos são trocados instantaneamente e a interface exibe a mensagem "Lados esquerdo e direito invertidos".