Um estudo sobre a associação entre abordagens de localização de bugs e ações/padrões de reparo dos bugs
Ano de defesa: | 2024 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | |
Tipo de documento: | Dissertação |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Federal de Uberlândia
Brasil Programa de Pós-graduação em Ciência da Computação |
Programa de Pós-Graduação: |
Não Informado pela instituição
|
Departamento: |
Não Informado pela instituição
|
País: |
Não Informado pela instituição
|
Palavras-chave em Português: | |
Link de acesso: | https://repositorio.ufu.br/handle/123456789/43981 http://doi.org/10.14393/ufu.di.2024.641 |
Resumo: | In a software development process, issues can arise that may hinder its execution due to cost and time concerns. A common problem is the occurrence of errors, which may require considerable effort to repair. Software engineering proposes approaches to minimize this problem. The study topic of this work involves the bug fixing process, focusing especially on a preliminary task, named bug localization, which consists in locating where the error is in the code. To assist the developer’s task in bug localization, various automated approaches have been proposed. This study aims to analyze the performance, in terms of accuracy, of different types of locators, based on the characteristics of the bugs. These characteristics refer to the actions and repair patterns that are conducted for fixing. Examples of repair actions include additions, removals, and modifications of lines in the source code. Meanwhile, repair patterns are high-level abstractions of recurrences of action structures in repaired code. The objective of the work is to understand if there is a relationship between the different types of actions/repair patterns and the accuracy of the different types of locators. The study compared different bug localization techniques, such as DStar, Ochiai, Metallaxis, Muse, Predicate Switching, Slicing, and Stack Trace. It was observed that coverage-based and mutation-based techniques are more effective for bugs involving line removal or modification, while line addition presented more difficulty. Additionally, bugs in expressions were more easily located, whereas those related to types and method declarations were harder to identify. The analysis of repair patterns showed that constant changes and API fixes are more easily detected, while missing null checks and code movement were the most challenging. |