Use este identificador para citar ou linkar para este item: https://repositorio.ufu.br/handle/123456789/46664
ORCID:  http://orcid.org/0000-0003-0536-4586
Tipo do documento: Dissertação
Tipo de acesso: 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(es): Gonçalves, João Carlos
Primeiro orientador: Maia, Marcelo de Almeida
Primeiro membro da banca: Julia, Stéphane
Segundo membro da banca: Figueiredo, Eduardo Magno Lages
Resumo: 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.
Palavras-chave: Melhoria Automática de Código-Fonte
Automatic source code improvement
LLM
Análise Estática
Static Analysis
Área(s) do CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Assunto: 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
Referência: 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 do documento: http://doi.org/10.14393/ufu.di.2025.481
URI: https://repositorio.ufu.br/handle/123456789/46664
Data de defesa: 1-Ago-2025
Objetivos de Desenvolvimento Sustentável (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 nas coleções:DISSERTAÇÃO - Ciência da Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
abordagemIterativaBaseada.pdfDissertação2.96 MBAdobe PDFThumbnail
Visualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.