Banca de DEFESA: JAIRO RAPHAEL MOREIRA CORREIA DE SOUZA

Uma banca de DEFESA de DOUTORADO foi cadastrada pelo programa.
DISCENTE: JAIRO RAPHAEL MOREIRA CORREIA DE SOUZA
DATA : 14/08/2026
HORA: 08:00
LOCAL: Virtual
TÍTULO:

Taming Exception Handling: Mining Anti-Patterns, Understanding Bugs, and Recommending Handlers


PALAVRAS-CHAVES:

Tratamento de Exceções; Engenharia de Software Empírica; Bugs; Anti-

padrões; Análise Estática; Large Language Models.


PÁGINAS: 140
RESUMO:

Mecanismos de tratamento de exceções são projetados para gerenciar eventos anormais que

interrompem o fluxo normal de execução de um programa, ajudando o software a se recuperar

de situações inesperadas. Embora sejam essenciais para robustez, confiabilidade e

manutenibilidade, seu uso inadequado pode introduzir anti-padrões de tratamento de exceções

e bugs de tratamento de exceções, levando a falhas, comportamentos incorretos, diagnósticos

imprecisos, falhas silenciosas e degradação da qualidade do software. Pesquisas existentes

têm se concentrado principalmente em Java e C#, deixando uma lacuna no entendimento

empírico de bugs de tratamento de exceções em Python. Esta tese aborda essa lacuna por

meio de três estudos complementares organizados em torno de uma perspectiva de

detectar–compreender–recomendar: primeiro, desenvolvemos suporte ferramental para

detectar anti-padrões de tratamento de exceções; em seguida, conduzimos uma caracterização

empírica em larga escala de bugs de tratamento de exceções em Python; por fim, avaliamos se

Large Language Models (LLMs) podem apoiar tarefas de recomendação de tratamento de

exceções.

Para apoiar a detecção de práticas inadequadas de tratamento de exceções, projetamos e

avaliamos a Exception Miner, uma ferramenta de análise estática que identifica anti-padrões de

tratamento de exceções em Java, TypeScript e Python. Nossa avaliação em projetos open-

source multi-linguagem mostra que anti-padrões de tratamento de exceções são comuns em

diferentes linguagens. Python e TypeScript apresentam frequências semelhantes, enquanto

Java exibe substancialmente mais ocorrências, com Exception Swallowing e Destructive

Wrapping entre os anti-padrões mais prevalentes. Esses achados reforçam a necessidade de

suporte unificado e multi-linguagem para analisar práticas de tratamento de exceções em

projetos modernos de software.

Para compreender bugs de tratamento de exceções em Python, conduzimos um estudo

empírico em larga escala em 550 projetos open-source. A partir de 18.904 candidatos a

correções de bugs, identificamos 1.649 candidatos a bugs de tratamento de exceções e

validamos manualmente 942 bugs genuínos de tratamento de exceções. Derivamos uma

taxonomia com 12 causas-raiz e 25 padrões de correção. Unhandled Exception é a causa-raiz

mais frequente, representando 50,64% dos bugs analisados. As estratégias de reparo mais

comuns incluem adicionar blocos de tratamento de exceções, alterar tipos de exceção e

introduzir condições de raise. Também realizamos uma análise antes-e-depois, que mostra que

muitos anti-padrões de tratamento de exceções foram preservados a partir da versão

defeituosa, enquanto as correções ainda introduziram um aumento de 196 ocorrências de anti-

padrões de tratamento de exceções.

Para investigar suporte automatizado para recomendações de tratamento de exceções,

avaliamos empiricamente LLMs baseados em prompting em quatro tarefas de tratamento de

exceções em Python: detectar se o tratamento de exceções é necessário, localizar instruções

que devem ser envolvidas por blocos try, recomendar tipos de exceção e gerar tratadores de

exceções. Utilizando 21 projetos Python open-source, 479.345 funções coletadas e 379

snippets curados, avaliamos CodeLlama, Phi-4, GPT-4 Mini, Claude Haiku 4.5 e Gemini 3

Flash sob quatro estratégias de prompting. Os resultados mostram que LLMs são mais eficazes

em tarefas iniciais de raciocínio, alcançando melhores F-scores de 0,752 para detecção da

necessidade de tratamento de exceções e 0,733 para localização de blocos try. Entretanto, a

recomendação de tipos de exceção e a geração de tratadores permanecem substancialmente

mais desafiadoras. Os tratadores gerados frequentemente divergem semanticamente das

implementações escritas por desenvolvedores e introduzem, em média, 104,2% mais violações

de qualidade relacionadas a exceções, particularmente devido à ausência de encadeamento de

exceções e à captura excessivamente genérica de exceções.

De modo geral, esta tese fornece ferramentas, taxonomias, datasets e evidências empíricas

para apoiar a detecção, compreensão e recomendação de mecanismos de tratamento de

exceções. Os achados sugerem que técnicas de análise estática e abordagens baseadas em

LLMs podem auxiliar desenvolvedores na identificação de código propenso a exceções e na

melhoria de práticas de tratamento de exceções. No entanto, código de tratamento de

exceções gerado automaticamente deve ser validado por meio de análise estática, testes e

revisão humana antes de sua adoção.


MEMBROS DA BANCA:
Externo à Instituição - PAULO ROBERTO MIRANDA MEIRELLES - USP
Presidente - 1944532 - BRENO ALEXANDRO FERREIRA DE MIRANDA
Interna - 3449174 - FERNANDA MADEIRAL DELFIM
Externo à Instituição - LINCOLN SOUZA ROCHA - UFC
Externa à Instituição - ROBERTA DE SOUZA COELHO - UFRN
Notícia cadastrada em: 06/08/2026 08:23
SIGAA | Superintendência de Tecnologia da Informação (STI-UFPE) - (81) 2126-7777 | Copyright © 2006-2026 - UFRN - sigaa05.ufpe.br.sigaa05