Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática

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 develop...

ver descrição completa

Na minha lista:
Detalhes bibliográficos
Autor principal: Silva, Rodrigo Lafayette da
Outros Autores: Cavalcante, Everton Ranielly de Sousa
Formato: bachelorThesis
Idioma:pt_BR
Publicado em: Universidade Federal do Rio Grande do Norte
Assuntos:
Endereço do item:https://repositorio.ufrn.br/handle/123456789/34247
Tags: Adicionar Tag
Sem tags, seja o primeiro a adicionar uma tag!
id ri-123456789-34247
record_format dspace
institution Repositório Institucional
collection RI - UFRN
language pt_BR
topic Análise estática
Localização de faltas
Exceção em tempo de execução
Referência nula
Java
Null Pointer Exception
Engenharia de Software
spellingShingle Análise estática
Localização de faltas
Exceção em tempo de execução
Referência nula
Java
Null Pointer Exception
Engenharia de Software
Silva, Rodrigo Lafayette da
Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática
description 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.
author2 Cavalcante, Everton Ranielly de Sousa
author_facet Cavalcante, Everton Ranielly de Sousa
Silva, Rodrigo Lafayette da
format bachelorThesis
author Silva, Rodrigo Lafayette da
author_sort Silva, Rodrigo Lafayette da
title Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática
title_short Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática
title_full Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática
title_fullStr Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática
title_full_unstemmed Identificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estática
title_sort identificando causas de null pointer exceptions em java: uma avaliação de ferramentas de análise estática
publisher Universidade Federal do Rio Grande do Norte
publishDate 2021
url https://repositorio.ufrn.br/handle/123456789/34247
work_keys_str_mv AT silvarodrigolafayetteda identificandocausasdenullpointerexceptionsemjavaumaavaliacaodeferramentasdeanaliseestatica
AT silvarodrigolafayetteda identifyingcausesofnullpointerexceptionsinjavaanevaluationofstaticanalysistools
_version_ 1773958711918723072
spelling ri-123456789-342472023-01-09T17:41:22Z 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 Silva, Rodrigo Lafayette da Cavalcante, Everton Ranielly de Sousa Coelho, Roberta de Souza Barbosa, Eiji Adachi Medeiros Análise estática Localização de faltas Exceção em tempo de execução Referência nula Java Null Pointer Exception Engenharia de Software 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. 2021-01-04T22:01:52Z 2021-09-20T12:02:00Z 2021-01-04T22:01:52Z 2021-09-20T12:02:00Z 2020-07-28 bachelorThesis 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. https://repositorio.ufrn.br/handle/123456789/34247 pt_BR Attribution-NonCommercial-NoDerivs 3.0 Brazil http://creativecommons.org/licenses/by-nc-nd/3.0/br/ application/pdf Universidade Federal do Rio Grande do Norte Brasil UFRN Bacharelado em Engenharia de Software