Please use this identifier to cite or link to this item:
https://repositorio.ufu.br/handle/123456789/46664| ORCID: | http://orcid.org/0000-0003-0536-4586 |
| Document type: | Dissertação |
| Access type: | Acesso Aberto |
| Title: | Uma abordagem iterativa baseada em LLMs para melhoria de código a partir de recomendações de análise estática |
| Alternate title (s): | An iterative LLM-based approach to code improvement from static analysis recommendations |
| Author: | Gonçalves, João Carlos |
| First Advisor: | Maia, Marcelo de Almeida |
| First member of the Committee: | Julia, Stéphane |
| Second member of the Committee: | Figueiredo, Eduardo Magno Lages |
| Summary: | A manutenção e evolução de sistemas de software frequentemente demanda mais esforço do que seu desenvolvimento inicial. Melhorar a qualidade do código-fonte por meio de suporte automatizado pode reduzir significativamente a dívida técnica, aumentar a manutenibilidade e aprimorar a produtividade dos desenvolvedores. Esta pesquisa apresenta uma abordagem que integra análise estática com Modelos de Linguagem de Grande Escala (LLMs) para automatizar a melhoria de código-fonte. A abordagem proposta processa iterativamente classes Java, extraindo problemas detectados pelo SonarQube e transformando-os em prompts para os LLMs, que geram versões aprimoradas do código. Cada versão é reanalisada, e o processo se repete até a convergência ou até atingir um limite predefinido de iterações. A abordagem foi avaliada experimentalmente e a configuração experimental inclui múltiplas combinações, envolvendo dois LLMs (GPT-4-mini e Gemini), variações de temperatura, estilo de prompt e número de iterações. As avaliações foram conduzidas utilizando múltiplos conjuntos de dados Java, com três execuções repetidas sobre o repositório Commons Lang para identificar padrões de comportamento. A análise se concentra na redução do número de problemas, na diminuição da dívida técnica (medida por uma métrica do SonarQube) e na evolução da severidade das issues. A correção funcional foi verificada manualmente por meio da inspeção do código aprimorado, a fim de garantir a preservação do comportamento. Os resultados demonstram que a combinação de SonarQube com LLMs é eficaz na redução de problemas no código — alcançando mais de 58% de redução média em cenários-chave — ao mesmo tempo em que preserva a funcionalidade. O processo iterativo mostrou-se bem-sucedido em guiar os modelos para melhorar incrementalmente a qualidade do código com base em feedbacks reais da análise estática. Este trabalho contribui com uma pipeline reprodutível e extensível, demonstrando o impacto de diferentes configurações dos LLMs e apoiando futuras pesquisas na integração entre IA e engenharia de qualidade de software. |
| Abstract: | Maintaining and evolving software systems often demands more effort than their initial development. Improving source code quality through automated support can significantly reduce technical debt, increase maintainability, and enhance developer productivity. This research presents an approach that integrates static analysis with Large Language Models (LLMs) to automate source code improvement. The proposed pipeline iteratively processes Java classes by extracting issues detected by SonarQube and transforming them into prompts for LLMs, which generate improved code versions. Each version is reanalyzed, and the process repeats until convergence or a predefined iteration limit is reached. The approach was empirically assessed and the experimental setup includes multiple configurations combining two LLMs (GPT-4-mini and Gemini), variation in temperature, prompt style, and number of iterations. Evaluations were conducted using multiple Java datasets, with three repeated runs for the Commons Lang repository to identify behavioral patterns. The analysis focuses on the number of issues reduction, decrease in technical debt (measured in a SonarQube metric), and the evolution of issue severity. Functional correctness was assessed manually by inspecting the improved code to ensure behavior preservation. The results demonstrate that combining SonarQube with LLMs is effective in reducing code issues—achieving over 58% average reduction in key scenarios—while preserving functionality. The iterative process proved successful in guiding the models to incrementally improve code quality based on real static analysis feedback. This work contributes a reproducible and extensible pipeline, offering insights into the impact of LLM configurations and supporting further research in the integration of AI and software quality engineering. |
| Keywords: | Melhoria Automática de Código-Fonte Automatic source code improvement LLM Análise Estática Static Analysis |
| Area (s) of CNPq: | CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE |
| Subject: | Computação Linguagem de programação (Computadores) Arquitetura de software |
| Language: | por |
| Country: | Brasil |
| Publisher: | Universidade Federal de Uberlândia |
| Program: | Programa de Pós-graduação em Ciência da Computação |
| Quote: | GONÇALVES, João Carlos. Uma abordagem iterativa baseada em LLMs para melhoria de código a partir de recomendações de análise estática. 2025. 69 f. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Uberlândia, Uberlândia, 2025. DOI http://doi.org/10.14393/ufu.di.2025.481 |
| Document identifier: | http://doi.org/10.14393/ufu.di.2025.481 |
| URI: | https://repositorio.ufu.br/handle/123456789/46664 |
| Date of defense: | 1-Aug-2025 |
| Sustainable Development Goals SDGs: | ODS::ODS 17. Parcerias e meios de implementação - Fortalecer os meios de implementação e revitalizar a parceria global para o desenvolvimento sustentável. |
| Appears in Collections: | DISSERTAÇÃO - Ciência da Computação |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| abordagemIterativaBaseada.pdf | Dissertação | 2.96 MB | Adobe PDF | ![]() View/Open |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
