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

dc.contributor.advisorCavalcante, Everton Ranielly de Sousa
dc.contributor.authorSilva, Rodrigo Lafayette da
dc.contributor.referees1Coelho, Roberta de Souza
dc.contributor.referees2Barbosa, Eiji Adachi Medeiros
dc.date.accessioned2021-01-04T22:01:52Z
dc.date.accessioned2021-09-20T12:02:00Z
dc.date.available2021-01-04T22:01:52Z
dc.date.available2021-09-20T12:02:00Z
dc.date.issued2020-07-28
dc.description.abstractMainstream 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.pt_BR
dc.description.resumoAs 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.pt_BR
dc.identifier20190000616pt_BR
dc.identifier.citationSILVA, 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.pt_BR
dc.identifier.urihttps://repositorio.ufrn.br/handle/123456789/34247
dc.languagept_BRpt_BR
dc.publisherUniversidade Federal do Rio Grande do Nortept_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentBacharelado em Engenharia de Softwarept_BR
dc.publisher.initialsUFRNpt_BR
dc.rightsAttribution-NonCommercial-NoDerivs 3.0 Brazil*
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/br/*
dc.subjectAnálise estáticapt_BR
dc.subjectLocalização de faltaspt_BR
dc.subjectExceção em tempo de execuçãopt_BR
dc.subjectReferência nulapt_BR
dc.subjectJavapt_BR
dc.subjectNull Pointer Exceptionpt_BR
dc.subject.cnpqEngenharia de Softwarept_BR
dc.titleIdentificando causas de Null Pointer Exceptions em Java: uma avaliação de ferramentas de análise estáticapt_BR
dc.title.alternativeIdentifying causes of Null Pointer Exceptions in Java: an evaluation of static analysis toolspt_BR
dc.typebachelorThesispt_BR

Arquivos

Pacote Original

Agora exibindo 1 - 1 de 1
Nenhuma Miniatura disponível
Nome:
IdentificandoCausasNull_Silva_2020.pdf
Tamanho:
2.04 MB
Formato:
Adobe Portable Document Format
Nenhuma Miniatura disponível
Baixar

Licença do Pacote

Agora exibindo 1 - 1 de 1
Nenhuma Miniatura disponível
Nome:
license.txt
Tamanho:
714 B
Formato:
Plain Text
Nenhuma Miniatura disponível
Baixar