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...
Na minha lista:
Autor principal: | |
---|---|
Outros Autores: | |
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 |