O programador Repairnator automatizado fez patches bons o suficiente para enganar as pessoas
"Nada pode ser declarado definitivamente neste mundo, exceto a inevitabilidade da morte e dos impostos", escreveu Benjamin Franklin em 1789. Se ele vivesse hoje, ainda poderia adicionar erros à lista de programas.
Os programas de computador modernos são tão complexos que os erros aparecem inevitavelmente durante o desenvolvimento. Portanto, as correções de pesquisa e gravação que os corrigem fazem parte normal de qualquer cronograma de desenvolvimento de software. Existem até empresas oferecendo aos desenvolvedores esse serviço - por exemplo, Travis.
Mas encontrar bugs e escrever patches é um negócio longo, consumindo recursos significativos. Vários pesquisadores desenvolveram bots para automatizar esse processo, mas geralmente trabalham lentamente ou produzem código de baixa qualidade que não passa na inspeção. Portanto, os desenvolvedores gostariam de confiar em um bot rápido e de alta qualidade que verifica erros e grava patches neles.

Hoje, seus sonhos se tornam realidade graças ao
trabalho de Martin Monperas e seus amigos do Royal Institute of Technology em Estocolmo, Suécia. Eles finalmente criaram um bot capaz de competir com as pessoas na busca de bugs e na criação de patches de qualidade.
Os caras nomearam o bot Repairnator e o testaram com sucesso, permitindo que eles competissem com programadores humanos em busca de correções. "Este é um marco importante no caminho para competir com as pessoas na pesquisa de correção automática de programas", dizem eles.
Os cientistas da computação estão cientes da possibilidade de automatizar o processo de escrever patches. Não está claro se os robôs podem fazer esse trabalho de maneira tão rápida e eficiente quanto os humanos.
Portanto, Monperas e a empresa decidiram testar seu bot disfarçando-o de desenvolvedor humano e permitindo que ele competisse com as pessoas no desenvolvimento de patches para o GitHub, um site de programação de controle de versão. “A idéia principal do Repairnator é criar automaticamente patches que corrigem bugs em assemblies, mostrá-los a pessoas que são desenvolvedores e ver se os desenvolvedores aceitarão esses patches como inclusão digna no código”, disseram eles.
A equipe registrou Luc Esape como programador de seu laboratório no GitHub. "Luke tem uma foto de perfil, ele parece um desenvolvedor júnior, ansioso por contribuir para o desenvolvimento de código aberto no GitHub", dizem eles.
Na verdade, Luke é um reparador disfarçado. A decepção era necessária, porque os moderadores tendem a avaliar o trabalho de bots e pessoas de maneiras diferentes. "O sigilo era necessário para testar a hipótese científica da capacidade competitiva das pessoas", disse Monperas com a empresa, que já havia informado todos os interessados sobre o que estava acontecendo.
A equipe fez duas abordagens para verificar o Repairnator. O primeiro teste foi de fevereiro a dezembro de 2017, quando ela lançou o Repairnator em uma lista permanente de 14.188 projetos com o GitHub procurando bugs. "Descobrimos que nosso protótipo é capaz de fazer cerca de 30 tentativas de correção por dia", disseram eles.
Durante esse período, o Repairnator analisou mais de 11.500 projetos com erros. Ele conseguiu reproduzir erros em mais de 3.000 casos. Em 15 casos, ele foi capaz de desenvolver um patch.
Mas nenhum desses patches foi aceito na montagem, porque o Repairnator os prolongou demais ou escreveu patches de qualidade inaceitável.
A segunda abordagem foi mais bem-sucedida. A equipe enviou Luke para trabalhar no serviço de integração contínua do Travis de janeiro a junho de 2018. Embora a equipe não tenha especificado exatamente o que eles mudaram no Repairnator, em 12 de janeiro, ele escreveu o primeiro patch que o moderador aceitou na montagem. "Em outras palavras, o Repairnator foi capaz de atingir o nível do homem", dizem eles. Nos seis meses seguintes, a Repairnator emitiu cinco patches aceitos pelos moderadores.
Uma conquista impressionante que abre caminho para uma nova geração de métodos de desenvolvimento de software. Também levanta questões interessantes. Os desenvolvedores estão prestando atenção ao patch desenvolvido pela Repairnator em 12 de maio para o projeto eclipse / ditto.
Depois disso, a equipe recebeu uma carta de um dos desenvolvedores do projeto: “Aceitamos solicitações de pool de usuários que assinaram o contrato de licença do Eclipse Foundation Contributor.”
Isso representa um problema desagradável porque o bot não pode assinar o contrato de licença. "Quem possui a propriedade intelectual e quem é responsável pela contribuição do bot: operador de bot, autor do bot, criador do algoritmo de patches?" - a equipe de desenvolvedores faz uma pergunta.
Esses tipos de problemas devem ser resolvidos antes que pessoas e robôs possam trabalhar juntos mais. Mas Monperas e sua equipe estão otimistas sobre o futuro. "Acreditamos que o Repairnator é o protótipo do desenvolvimento futuro de software no qual bots e pessoas colaboram sem problemas e se tornam parceiros na descoberta de falhas de software", afirmam.
Franklin, o famoso inventor, certamente ficaria impressionado com o que estava acontecendo.