Explaining software faults in source code

Detalhes bibliográficos
Autor(a) principal: Ribeiro, Francisco José Torres
Data de Publicação: 2024
Idioma: eng
Título da fonte: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Texto Completo: https://hdl.handle.net/1822/92456
Resumo: Programa de doutoramento em Informática (MAP-i)
id RCAP_ef58ae7e559329c50b7da747e3da03c2
oai_identifier_str oai:repositorium.sdum.uminho.pt:1822/92456
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling Explaining software faults in source codeExplicar falhas de software no código fonteCompreensão de programasGeração de códigoGrandes modelos de linguagemLocalização de falhasReparação automática de programasAutomated program repairCode generationFault localizationLarge language modelsProgram comprehensionEngenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaPrograma de doutoramento em Informática (MAP-i)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.This work was partially funded by FCT — Foundation for Science and Technology — with PhD scholarship reference SFRH/BD/144938/2019 and within project UIDP/50014/2020. Additionally, this work also benefited from funding provided by JSPS KAKENHI-JP19K20248, ERASMUS+ Programme of the European Union within ERASMUS+ project No. 2020-1-PT01-KA203- 078646, COST — European Cooperation in Science and Technology Organisation — within ICT COST Action CA19135: CERCIRAS — Connecting Education and Research Communities for an Innovative Resource Aware Society.Saraiva, JoãoAbreu, Rui Filipe Lima Maranhão deUniversidade do MinhoRibeiro, Francisco José Torres2024-05-102024-05-10T00:00:00Zdoctoral thesisinfo:eu-repo/semantics/publishedVersionapplication/pdfhttps://hdl.handle.net/1822/92456eng101756593info:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2024-07-20T01:19:36Zoai:repositorium.sdum.uminho.pt:1822/92456Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-28T18:37:57.901701Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv Explaining software faults in source code
Explicar falhas de software no código fonte
title Explaining software faults in source code
spellingShingle Explaining software faults in source code
Ribeiro, Francisco José Torres
Compreensã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
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Explaining software faults in source code
title_full Explaining software faults in source code
title_fullStr Explaining software faults in source code
title_full_unstemmed Explaining software faults in source code
title_sort Explaining software faults in source code
author Ribeiro, Francisco José Torres
author_facet Ribeiro, Francisco José Torres
author_role author
dc.contributor.none.fl_str_mv Saraiva, João
Abreu, Rui Filipe Lima Maranhão de
Universidade do Minho
dc.contributor.author.fl_str_mv Ribeiro, Francisco José Torres
dc.subject.por.fl_str_mv Compreensã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
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Compreensã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
Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description Programa de doutoramento em Informática (MAP-i)
publishDate 2024
dc.date.none.fl_str_mv 2024-05-10
2024-05-10T00:00:00Z
dc.type.driver.fl_str_mv doctoral thesis
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://hdl.handle.net/1822/92456
url https://hdl.handle.net/1822/92456
dc.language.iso.fl_str_mv eng
language eng
dc.relation.none.fl_str_mv 101756593
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833597556444102656