Utilizando Aprendizado de Máquina na Identificação de Null Pointer Exceptions em Análise Estática de Código em Java
Java, Null Pointer Exception, análise estática, Aprendizado de Máquina
Por uma questão de flexibilidade, as linguagens de programação orientadas a objetos convencionais admitem valores nulos para referências. Na linguagem de programação Java, o uso de uma referência de objeto com um valor nulo causa o lançamento de uma exceção do tipo Null Pointer Exception (NPE), uma das causas mais frequentes de falhas em aplicações escritas nessa linguagem. A análise estática tem sido utilizada para inspecionar artefatos de software como código fonte ou código binário visando localizar a origem de faltas sem que seja necessário executar o programa de forma orientada a depuração. Apesar de sua eficácia, a análise estática baseia-se em um conjunto fixo e estático de regras que descrevem padrões de ocorrência de faltas e é conhecida por um número significativo de falsos positivos. Este estudo investiga como o uso de técnicas de Aprendizado de Máquina (AM) pode melhorar a precisão da detecção de faltas relacionadas a NPE por meio de análise estática, uma linha ainda inexplorada na literatura e na indústria de software. O objetivo principal é propor, implementar e avaliar uma abordagem baseada em classificação que enderece o problema da detecção de faltas relacionadas a NPE em código Java. As contribuições deste trabalho são: (i) uma análise de como as técnicas de AM podem ser usadas para detectar essas faltas por meio de análise estática e (ii) uma avaliação do desempenho das técnicas de AM em comparação às ferramentas tradicionais de análise estática.