Explaining software faults in source code
| Autor(a) principal: | |
|---|---|
| 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 |