Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/92456

TítuloExplaining software faults in source code
Outro(s) título(s)Explicar falhas de software no código fonte
Autor(es)Ribeiro, Francisco José Torres
Orientador(es)Saraiva, João
Abreu, Rui Filipe Lima Maranhão de
Palavras-chaveCompreensão de programas
Geração de código
Grandes modelos de linguagem
Localização de falhas
Reparação automática de programas
Automated program repair
Code generation
Fault localization
Large language models
Program comprehension
Data10-Mai-2024
Resumo(s)A remoção de falhas, ou bugs, de software é chamada de depuração e é amplamente reconhecida como a tarefa mais árdua no desenvolvimento de software. Envolve deteção, localização e reparação. Enquanto os dois primeiros passos foram amplamente automatizados, a reparação tem sido menos priorizada devido aos desafios na geração de código que aborda vários tipos de bugs e imita estilos de escrita semelhantes aos humanos. Acreditamos firmemente na melhoria da automatização da fase de reparação, ecoando De- Millo: ”os programadores criam programas que estão quase corretos.” Esta tese foca-se em aproveitar informação contextual do código-fonte para melhorar a reparação automática de programas (APR), reconhecendo a ligação entre a localização de falhas e a reparação e propondo abordagens para integrar grandes modelos de linguagem (LLMs). Primeiro, apresentamos o Morpheus, uma técnica de inferência de operadores de mutação que identifica o onde e o porquê da ocorrência de falhas em software, associando mudanças na árvore do programa com padrões de operadores de mutação. Demonstramos eficiência e eficácia superiores em comparação com métodos tradicionais. Segundo, utilizando o modelo generativo CodeGPT, abordamos APR como um desafio de code completion, gerando linhas de correção candidatas, com base num ficheiro defeituoso e número de linha, através de um processo de várias etapas que envolve parsing do código, geração de sequências de tokens, restrição em caracteres de sintaxe e alinhamento de sequências. Terceiro, propomos o Mentat, uma técnica que utiliza o GPT-3 para reparação automática de erros de tipo através do bypass de sistemas de tipos para localizar expressões candidatas. O Mentat supera outras técnicas do estado da arte e permite análise escalável de programas através de uma validação totalmente automatizada, algo raramente feito em investigação. Coletivamente, estas contribuições abrem caminho para demonstrar como a integração estratégica de LLMs pode superar as limitações inerentes em APR.
Removing faults, or bugs, from software is called debugging and is widely recognized as the most arduous task in software development. It involves detection, localization, and repair. While the first two steps have been largely automated, repair has been less prioritized due to challenges in generating code that addresses various bug types and mimics human-like writing styles. We firmly believe in improving the automation of the repair phase, echoing DeMillo: ”developers create programs that are almost correct.” This thesis focuses on leveraging contextual information from source code to enhance automated program repair (APR). It acknowledges the link between fault localization and repair and proposes approaches to integrate large language models (LLMs). First, we introduce Morpheus, a mutation operator inference technique that identifies where and why software faults occur by associating changes in the program’s tree with mutation operator patterns. We demonstrate superior efficiency and effectiveness compared to traditional methods. Second, using the generative model CodeGPT, we approach APR by treating it as a code completion challenge, generating candidate patch lines based on a given buggy file and line number through a multi-step process involving parsing the code, generating token sequences, constraining syntax characters, and sequence alignment. Third, we propose Mentat, a technique that utilizes GPT-3 for automated repair of type errors by bypassing type systems to locate candidate expressions. Mentat surpasses other state-ofthe- art techniques and enables scalable program analysis through a fully automated validation, something rarely done in research. Collectively, these contributions pave the way to showcase how strategically integrating LLMs can overcome inherent limitations in APR.
TipoTese de doutoramento
DescriçãoPrograma de doutoramento em Informática (MAP-i)
URIhttps://hdl.handle.net/1822/92456
AcessoAcesso aberto
Aparece nas coleções:BUM - Teses de Doutoramento
DI - Teses de doutoramento

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Francisco Jose Torres Ribeiro.pdfTese de doutoramento3 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID