← Últimos artigos
💻 computer science

Combining Example-Based and Rule-Based Program Transformations to Resolve Build Conflicts

Este artigo apresenta o BuCoR, uma nova ferramenta que combina transformações baseadas em regras e exemplos para detectar e resolver conflitos de compilação em fusões de software, demonstrando eficácia ao solucionar casos reais através de uma abordagem híbrida.

Autores originais: Sheikh Shadab Towqir, Fei He, Todd Mytkowicz, Na Meng

Publicado 2026-02-13
📖 4 min de leitura☕ Leitura rápida

Autores originais: Sheikh Shadab Towqir, Fei He, Todd Mytkowicz, Na Meng

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você e seu amigo estão escrevendo o mesmo livro, cada um em uma cópia diferente. De repente, vocês decidem juntar as duas versões em um único manuscrito final. O problema? Vocês editaram a mesma página de formas diferentes.

  • Você mudou o nome do protagonista de "João" para "Pedro".
  • Seu amigo escreveu uma cena onde o personagem "João" aparece.

Quando tentam juntar os textos, o computador fica confuso: "Quem é o personagem? É o João ou o Pedro?". Isso é um conflito de construção (ou build conflict). Se o livro não fizer sentido, ele não pode ser publicado (o software não funciona).

Geralmente, os programadores têm que parar tudo, ler o texto, decidir o que fazer e corrigir manualmente. É chato, demorado e propenso a erros.

Aqui entra o BuCoR, o "herói" desta história. O BuCoR é uma ferramenta inteligente criada para resolver esses conflitos automaticamente. Ele funciona como um detetive literário que usa duas estratégias principais para consertar o livro:

1. A Estratégia do "Exemplo" (BuCoR-E): "Olha como fizemos antes!"

Imagine que, no passado, vocês já tiveram um problema parecido: mudaram o nome de um personagem e tiveram que atualizar todas as vezes que ele era mencionado.

O BuCoR-E olha para o histórico do projeto (os ramos de desenvolvimento) e procura por exemplos de como os desenvolvedores resolveram problemas parecidos antes.

  • A Analogia: É como se o BuCoR dissesse: "Ei, na página 50, quando mudamos o nome do vilão, o autor também mudou o nome do cachorro dele e corrigiu a frase 'o cachorro latiu para o vilão'. Vamos fazer a mesma coisa aqui!"
  • Ele aprende com o passado para criar um "padrão" de correção e aplica esse padrão ao novo conflito, mesmo que o contexto seja um pouco diferente.

2. A Estratégia das "Regras" (BuCoR-R): "Siga o Manual"

Às vezes, não há um exemplo perfeito no passado. Nesse caso, o BuCoR-R usa um manual de instruções com 16 regras pré-definidas para os erros mais comuns.

  • A Analogia: É como um manual de montagem de móveis. Se a peça A não encaixa na peça B porque o furo mudou, o manual diz: "Se o furo mudou, use o parafuso C".
  • Essas regras cobrem situações comuns, como: "Se alguém renomeou uma classe, atualize a importação", ou "Se alguém removeu um método, remova a chamada dele".

Como eles trabalham juntos?

O BuCoR é um time híbrido.

  1. Primeiro, ele detecta onde o livro está "quebrado" (onde o código não compila).
  2. Ele tenta usar o Exemplo (BuCoR-E) para ver se consegue imitar uma solução inteligente e criativa que já funcionou antes.
  3. Se não houver exemplo, ele usa as Regras (BuCoR-R) para aplicar uma correção padrão e segura.
  4. Se as duas estratégias sugerirem algo, o BuCoR compara e escolhe a melhor opção.

O Resultado?

Os pesquisadores testaram o BuCoR em 88 conflitos reais de projetos de código aberto.

  • Ele conseguiu gerar uma solução para 74% dos casos (o que é impressionante, já que antes as ferramentas quase não faziam nada).
  • Desses, ele acertou a solução correta (igual à que um humano faria) em 52% dos casos.

Em resumo:
O BuCoR é como um assistente de escrita superinteligente. Ele não apenas junta os textos; ele entende o contexto, olha para como vocês resolveram problemas parecidos no passado e segue regras lógicas para garantir que, quando o livro for publicado, o personagem "Pedro" (ou o código) funcione perfeitamente, sem que você precise passar horas corrigindo manualmente.

Ele combina a criatividade de aprender com exemplos com a segurança de seguir regras, tornando o processo de juntar códigos muito mais rápido e menos estressante para os programadores.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →