bachelorThesis
Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática
Identifying causes of Null Pointer Exceptions in Java: an evaluation of static analysis tools
Registro en:
20190000616
SILVA, Rodrigo Lafayette da. Identificando Causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática. 2020. 72 f. TCC (Graduação) - Curso de Engenharia de Software, Departamento de Informática e Matemática Aplicada, Universidade Federal do Rio Grande do Norte, Natal, 2021.
Autor
Silva, Rodrigo Lafayette da
Resumen
Mainstream object-oriented programming languages admit null values for references for the sake of flexibility. In Java, the attempt to use an object reference with a null value throws a Null Pointer Exception (NPE), one of the most frequent causes of crashes in Java applications. To ease the developers’ task on inspecting the source code to locate the origin of the exception, static analysis tools have been developed in recent years. These tools have shown to be effective in locating faults by analyzing the source or binary code of the application without the need of executing it. Despite the remarkable occurrence of NPEs in Java applications, there has been little research on studying Java runtime exceptions and how they can be detected as early as possible. The literature also lacks empirical studies that specifically analyze open-source alternatives able to detect faults that lead to NPEs in Java applications, a relevant issue when considering user requirements and capabilities of the tools. This work addressed this gap by conducting an empirical study aimed to evaluate four popular open-source static analysis tools regarding the detection of faults related to NPEs, namely PMD, SpotBugs, SonarLint, and Infer. These tools were evaluated in terms of both effectiveness and efficiency when applied to a set of 35 Java projects collected from well-known benchmarks. Obtained results pointed out SonarLint and SpotBugs as the most effective and efficient tools for the analyzed projects. As principais linguagens de programação orientada a objetos admitem valores nulos para referências por questões de flexibilidade. Em Java, a tentativa de utilizar uma referência de objeto com valor nulo faz com que seja lançada uma Null Pointer Exception (NPE), uma das causas mais frequentes de falhas em aplicações Java. Para facilitar a tarefa dos desenvolvedores na inspeção do código fonte para localizar a origem da exceção, ferramentas de análise estática foram desenvolvidas nos últimos anos. Essas ferramentas têm se mostrado efetivas na localização de faltas através da análise do código fonte ou código binário da aplicação sem a necessidade de executá-la. Entretanto, apesar da ocorrência notável de NPEs em aplicações Java, há poucas pesquisas sobre o estudo de exceções em tempo de execução em Java e como elas podem ser detectadas quanto antes possível. A literatura também carece de estudos empíricos que especificamente analisam alternativas de código aberto capazes de detectar faltas que podem levar a NPEs em aplicações Java, uma questão relevante ao considerar os requisitos de usuário e os recursos das ferramentas. Este trabalho aborda essa lacuna através da condução de um estudo empírico com o objetivo de avaliar quatro ferramentas populares de código aberto para análise estática à respeito da detecção de faltas relacionadas a NPEs, a saber, PMD, SpotBugs, SonarLint e Infer. Essas ferramentas foram avaliadas em termos de eficácia e eficiência na sua aplicação a um conjunto de 35 projetos Java coletados a partir de conhecidos benchmarks. Os resultados obtidos apontaram SonarLint e SpotBugs como as ferramentas mais eficazes e eficientes para os projetos analisados.