Utilizando aprendizado de máquina na identificação de Null pointer exceptions em análise estática de código em Java

dc.contributor.advisorCavalcante, Everton Ranielly de Sousa
dc.contributor.advisor-co1Araújo, Daniel Sabino Amorim de
dc.contributor.advisor-co1IDhttps://orcid.org/0000-0001-5572-0505
dc.contributor.advisor-co1Latteshttp://lattes.cnpq.br/4744754780165354
dc.contributor.advisorIDhttps://orcid.org/0000-0002-2475-5075
dc.contributor.advisorLatteshttp://lattes.cnpq.br/5065548216266121
dc.contributor.authorSilva, Rodrigo Lafayette da
dc.contributor.authorLatteshttp://lattes.cnpq.br/3567167027912233
dc.contributor.referees1Abreu, Marjory Cristiany da Costa
dc.contributor.referees1IDhttps://orcid.org/0000-0001-7461-7570
dc.contributor.referees1Latteshttp://lattes.cnpq.br/2234040548103596
dc.contributor.referees2Almeida, Rodrigo Bonifácio de
dc.contributor.referees2IDhttps://orcid.org/0000-0002-2380-2829
dc.contributor.referees2Latteshttp://lattes.cnpq.br/0368311142108150
dc.date.accessioned2025-09-02T00:22:40Z
dc.date.available2025-09-02T00:22:40Z
dc.date.issued2023-01-30
dc.description.abstractMainstream object-oriented programming languages admit null values for references for the sake of flexibility. In Java, attempting 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. Static analysis has been used to inspect the source or binary code to locate the origin of the exception by analyzing these artifacts without debugging-oriented program executions. Despite its effectiveness, static analysis relies on a fixed, static set of rules describing violation patterns, and it is known for a significant number of false positives. This study investigates how the use of Machine Learning (ML) techniques can improve the precision of detecting NPE-related faults through static analysis, a branch still unexplored in the literature and the software industry. The main goal is to propose, implement, and evaluate a classification-based approach to address the detection of NPErelated faults in Java code. The expected contributions from this work are: (i) understanding how ML techniques can be used to detect those faults via static analysis; (ii) providing a ML model to detect NPE-related faults; and (iii) an assessment of the performance of ML techniques in comparison to traditional static analysis tools. The results of the experiments showed that the new approach using Machine Learning (k-Nearest Neighbors) is more effective than traditional SATs, namely PMD, SpotBugs, SonarLint, and Infer, regarding NPE detection, presenting an average accuracy of 97.5% in its best configuration, albeit being up to 15 times less efficient in terms of relative performance.
dc.description.resumoPor 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.
dc.identifier.citationSILVA, Rodrigo Lafayette da. On the use of machine learning to identify null pointer exceptions in static java code analysis. Orientador: Dr. Everton Ranielly de Sousa Cavalcante. 2023. 88f. Dissertação (Mestrado em Sistemas e Computação) - Centro de Ciências Exatas e da Terra, Universidade Federal do Rio Grande do Norte, Natal, 2023.
dc.identifier.urihttps://repositorio.ufrn.br/handle/123456789/65394
dc.language.isoen
dc.publisherUniversidade Federal do Rio Grande do Norte
dc.publisher.countryBRpt_BR
dc.publisher.initialsUFRNpt_BR
dc.publisher.programPROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃOpt_BR
dc.rightsAcesso Abertopt_BR
dc.subjectJava
dc.subjectNull pointer exception
dc.subjectAnálise estática
dc.subjectAprendizado de máquina
dc.subject.cnpqCIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
dc.titleUtilizando aprendizado de máquina na identificação de Null pointer exceptions em análise estática de código em Java
dc.title.alternativeOn the use of machine learning to identify null pointer exceptions in static java code analysis
dc.typemasterThesispt_BR

Arquivos

Pacote Original

Agora exibindo 1 - 1 de 1
Nenhuma Miniatura disponível
Nome:
Usemachinelearning_Silva_2023.pdf
Tamanho:
1007.5 KB
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:
1.53 KB
Formato:
Item-specific license agreed upon to submission
Nenhuma Miniatura disponível
Baixar