Banca de DEFESA: RODRIGO DOS SANTOS LIMA

Uma banca de DEFESA de DOUTORADO foi cadastrada pelo programa.
DISCENTE: RODRIGO DOS SANTOS LIMA
DATA : 12/08/2026
HORA: 13:30
LOCAL: Virtual
TÍTULO:

Understanding and Detecting Harmful Code


PALAVRAS-CHAVES:

Anomalias de Código, Código Prejudicial, Aprendizado por Transferência, Análise Temporal, SZZ, LLM, Dispersão de Desenvolvedores, Código Propenso a Defeitos, Qualidade de Software


PÁGINAS: 155
RESUMO:

Code Smells normalmente indicam decisões e implementações de projeto inadequadas que podem degradar a qualidade do software. Por isso, precisam ser cuidadosamente detectadas para evitar tais consequências negativas. Nesse contexto, alguns estudos buscam compreender o impacto das Code Smells na qualidade do software, enquanto outros propõem técnicas baseadas em regras ou em aprendizado de máquina para detectá-las. No entanto, essas abordagens não se concentram em identificar quais trechos de código são de fato prejudiciais à qualidade do software.
Nesta tese, definimos Código Prejudicial (Harmful Code) como um elemento de código Smelly (contém Code Smell) que também possui um ou mais bugs reportados - corrigidos ou não. A presença de código prejudicial sugere um risco maior de introdução de novos defeitos ou de degradação do projeto durante tarefas de manutenção e evolução. Categorizamos o código em quatro tipos: Clean, Smelly, Buggy e Harmful, e utilizamos essa taxonomia para analisar e detectar a nocividade em projetos de software.
Investigamos as representações sociais do código prejudicial em uma comunidade de desenvolvedores de software composta por estudantes de pós-graduação brasileiros e profissionais da indústria. Realizamos tarefas de associação livre com membros dessa comunidade para capturar suas percepções espontâneas sobre código prejudicial e, em seguida, compilamos as associações para caracterizar suas representações sociais compartilhadas.
Avaliamos também a viabilidade do aprendizado por transferência (transfer learning) em três tarefas comuns de engenharia de software: Code Smells, Mudanças Introdutoras de Defeitos e Harmful Code. Para isso, focamos em projetos de código aberto escritos em linguagens de programação populares: Java, C++ e C#. Avaliamos a eficácia e a eficiência dos modelos de aprendizado por transferência nessas tarefas e analisamos a complexidade de modelo necessária para alcançar desempenho satisfatório.
Em seguida, refinamos a definição de harmful code incorporando sua dimensão temporal. Por meio de uma análise temporal em larga escala de 10 projetos de código aberto em Java e Python (30.637 commits, 269.513 anomalias, 299.221 pares anomalia-bug), reconstruímos linhas do tempo para instâncias propensas a defeitos e classificamos cada uma em quatro padrões temporais: induzido por correção, anomalia-primeiro, bug-primeiro e mesmo-commit. Uma linha de base nula por pareamento aleatório revela que o padrão dominante (induzido por correção) se aproxima da expectativa nula, indicando que ele reflete a estrutura temporal do projeto e não uma associação genuína em nível de arquivo. Em contraste, a co-ocorrência no mesmo commit é 3,1× a taxa aleatória, e instâncias anomalia-primeiro apresentam frequência de mudança significativamente maior (delta de Cliff = 0,39, efeito médio). A análise de sobrevivência de Kaplan-Meier mostra uma mediana de 37 dias entre a introdução da anomalia e o primeiro bug associado. Em granularidade de arquivo, a dispersão de desenvolvedores emerge como o mais forte diferenciador de arquivos prejudiciais (delta de Cliff = -0,57, efeito grande), enquanto arquivos Clean e Smelly são estatisticamente indistinguíveis - estabelecendo que é a conjunção de anomalias e bugs, e não a anomalia isoladamente, que caracteriza uma população distinta.
Por fim, testamos se a nocividade pode ser avaliada diretamente a partir do código-fonte. Avaliamos quatro Modelos de Linguagem de Grande Porte (Large Language Models) pequenos e executáveis localmente (8B-30B parâmetros) em 1.200 trechos de código rotulados extraídos do mesmo conjunto de dados. Os modelos detectam anomalias de código com acurácia variável, porém relevante (F1 médio de 0,21 a 0,67; até 0,88 para God Class), mas todos alcançam Coeficientes de Correlação de Matthews próximos de zero (−0,19 a 0,10) na classificação de nocividade - não melhores que o acaso - e são superados por uma linha de base trivial que ignora completamente o trecho de código.
Em conjunto, estes estudos sustentam uma única conclusão: a nocividade não é uma propriedade estrutural do código, mas uma propriedade de seu histórico e de sua autoria. Frequência de mudança, proximidade temporal e dispersão de desenvolvedores - e não a co-ocorrência estática ou a severidade estrutural - fornecem os sinais acionáveis para identificar código verdadeiramente prejudicial, e ferramentas de detecção que ignoram essa distinção continuarão a reportar em excesso.

 

 


MEMBROS DA BANCA:
Externa à Instituição - JULIANA ALVES PEREIRA - PUC - RJ
Externo à Instituição - WESLEY KLEWERTON GUEZ ASSUNÇÃO - OUTRA
Externo à Instituição - MATHEUS HENRIQUE ESTEVES PAIXÃO - UECE
Externo à Instituição - IVAN DO CARMO MACHADO - UFBA
Presidente - 1807586 - VINICIUS CARDOSO GARCIA
Notícia cadastrada em: 06/08/2026 07:47
SIGAA | Superintendência de Tecnologia da Informação (STI-UFPE) - (81) 2126-7777 | Copyright © 2006-2026 - UFRN - sigaa08.ufpe.br.sigaa08