Por favor, use este identificador para citar o enlazar este ítem: https://repositorio.ufu.br/handle/123456789/46664
ORCID:  http://orcid.org/0000-0003-0536-4586
Tipo de documento: Dissertação
Tipo de acceso: Acesso Aberto
Título: Uma abordagem iterativa baseada em LLMs para melhoria de código a partir de recomendações de análise estática
Título (s) alternativo (s): An iterative LLM-based approach to code improvement from static analysis recommendations
Autor: Gonçalves, João Carlos
Primer orientador: Maia, Marcelo de Almeida
Primer miembro de la banca: Julia, Stéphane
Segundo miembro de la banca: Figueiredo, Eduardo Magno Lages
Resumen: 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.
Palabras clave: Melhoria Automática de Código-Fonte
Automatic source code improvement
LLM
Análise Estática
Static Analysis
Área (s) del CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Tema: Computação
Linguagem de programação (Computadores)
Arquitetura de software
Idioma: por
País: Brasil
Editora: Universidade Federal de Uberlândia
Programa: Programa de Pós-graduação em Ciência da Computação
Cita: 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
Identificador del documento: http://doi.org/10.14393/ufu.di.2025.481
URI: https://repositorio.ufu.br/handle/123456789/46664
Fecha de defensa: 1-ago-2025
Objetivos de Desarrollo Sostenible (ODS): 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.
Aparece en las colecciones:DISSERTAÇÃO - Ciência da Computação

Ficheros en este ítem:
Fichero Descripción TamañoFormato 
abordagemIterativaBaseada.pdfDissertação2.96 MBAdobe PDFVista previa
Visualizar/Abrir


Los ítems de DSpace están protegidos por copyright, con todos los derechos reservados, a menos que se indique lo contrario.