Machine learning-based approach for code smell detection in software JavaScrip

Detalhes bibliográficos
Ano de defesa: 2024
Autor(a) principal: Sarafim, Diego Santana
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Biblioteca Digitais de Teses e Dissertações da USP
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://www.teses.usp.br/teses/disponiveis/100/100131/tde-13122024-002027/
Resumo: JavaScript has become one of the world\'s most widely used programming languages. It is characterized by being a dynamic, interpreted, and weakly typed scripting language, which is especially suitable for the development of web applications. While these features allow the language to offer high levels of flexibility, they can also make JavaScript code more challenging to write, maintain, and evolve. One of the risks that JavaScript and other programming languages are prone to is the presence of code smells. Code smells result from poor programming choices during source code development, which negatively influence the source code comprehension and maintainability in the long term. %Research on the topics related to code smells has helped elevate our comprehension of the factors that lead to code smell incidence and has led us to a better understanding of their nature and their risks. Part of the research on code smells was focused on exploring different techniques to detect them. The detection techniques explored over the years range from using manually designed heuristics to employing machine learning algorithms. Although presenting promising results, most of the studies that utilized machine learning techniques to detect code smells focused on Java programming language. Since different programming languages can have different syntax, purposes, and structures and can support different programming paradigms, they may pose varying challenges for smell detection and can even be prone to unique code smells. JavaScript is such a programming language that differs from Java in a few fundamental ways, among these differences, the syntax, the support for different programming paradigms and the vulnerability to unique types of code smells stand out. Encouraged by an apparent lack of studies exploring the employment of machine learning techniques to detect code smells in JavaScript, we conducted this work for which the main contributions are the construction of the first datasets for code smell detection on JavaScript and the application of machine learning techniques for the detection of code smells in JavaScript.
id USP_cbaf2914c248fa62fd347acd46a13207
oai_identifier_str oai:teses.usp.br:tde-13122024-002027
network_acronym_str USP
network_name_str Biblioteca Digital de Teses e Dissertações da USP
repository_id_str
spelling Machine learning-based approach for code smell detection in software JavaScripAbordagem baseada em aprendizado de máquina para detecção de code smells em JavaScriptAprendizado de MáquinaClassificaçãoClassificationCode smellsCode SmellsConjunto de DadosDatasetJavaScriptJavaScriptMachine learningJavaScript has become one of the world\'s most widely used programming languages. It is characterized by being a dynamic, interpreted, and weakly typed scripting language, which is especially suitable for the development of web applications. While these features allow the language to offer high levels of flexibility, they can also make JavaScript code more challenging to write, maintain, and evolve. One of the risks that JavaScript and other programming languages are prone to is the presence of code smells. Code smells result from poor programming choices during source code development, which negatively influence the source code comprehension and maintainability in the long term. %Research on the topics related to code smells has helped elevate our comprehension of the factors that lead to code smell incidence and has led us to a better understanding of their nature and their risks. Part of the research on code smells was focused on exploring different techniques to detect them. The detection techniques explored over the years range from using manually designed heuristics to employing machine learning algorithms. Although presenting promising results, most of the studies that utilized machine learning techniques to detect code smells focused on Java programming language. Since different programming languages can have different syntax, purposes, and structures and can support different programming paradigms, they may pose varying challenges for smell detection and can even be prone to unique code smells. JavaScript is such a programming language that differs from Java in a few fundamental ways, among these differences, the syntax, the support for different programming paradigms and the vulnerability to unique types of code smells stand out. Encouraged by an apparent lack of studies exploring the employment of machine learning techniques to detect code smells in JavaScript, we conducted this work for which the main contributions are the construction of the first datasets for code smell detection on JavaScript and the application of machine learning techniques for the detection of code smells in JavaScript.JavaScript se tornou uma das linguagens de programação mais utilizadas no mundo. Caracteriza-se por ser uma linguagem de script dinâmica, interpretada e fracamente tipada, que é especialmente adequada para o desenvolvimento de aplicações web. Embora esses recursos permitam que a linguagem ofereça altos níveis de flexibilidade, eles também podem tornar o código JavaScript mais desafiador para escrever, manter e evoluir. Um dos riscos a que o JavaScript e outras linguagens de programação estão sujeitos é a presença de code smells. Code smells resultam de más escolhas tomadas durante o desenvolvimento do código-fonte que influenciam negativamente a compreensão e a capacidade de manutenção do código-fonte no longo prazo. Parte dos esforços em pesquisas relacionadas a code smells se concentrou na exploração de diferentes técnicas para detectá-los. As técnicas e estratégias de detecção exploradas ao longo dos anos vão desde o uso de heurísticas manualmente definidas até o emprego de algoritmos de aprendizado de máquina. Embora apresentem resultados promissores, a grande maioria dos estudos que empregaram técnicas de aprendizado de máquina para detectar code smells focaram na linguagem de programação Java. Como diferentes linguagens de programação podem ter diferentes sintaxes, propósitos e estruturas e podem suportar diferentes paradigmas de programação, elas podem representar desafios variados para a detecção e podem até mesmo ser propensas a tipos únicos de code smells. JavaScript é uma linguagem de programação que difere de Java em alguns aspectos fundamentais, dentre estas diferenças destactam-se a sintaxe, o suporte a diferentes paradigmas de programação e a vulnerabilidade a tipos únicos de code smells. Encorajados por uma aparente falta de estudos explorando o emprego de técnicas de aprendizado de máquina para detecção de code smells em JavaScript, foi conduzido este trabalho para o qual as principais contribuições são a construção do primeiro conjunto de dados para detecção de code smells em JavaScript e a aplicação de técnicas de aprendizado de máquina para a detecção de code smells em JavaScript.Biblioteca Digitais de Teses e Dissertações da USPDelgado, Karina ValdiviaSarafim, Diego Santana2024-11-06info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://www.teses.usp.br/teses/disponiveis/100/100131/tde-13122024-002027/reponame:Biblioteca Digital de Teses e Dissertações da USPinstname:Universidade de São Paulo (USP)instacron:USPLiberar o conteúdo para acesso público.info:eu-repo/semantics/openAccesseng2025-08-25T14:24:02Zoai:teses.usp.br:tde-13122024-002027Biblioteca Digital de Teses e Dissertaçõeshttp://www.teses.usp.br/PUBhttp://www.teses.usp.br/cgi-bin/mtd2br.plvirginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.bropendoar:27212025-08-25T14:24:02Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)false
dc.title.none.fl_str_mv Machine learning-based approach for code smell detection in software JavaScrip
Abordagem baseada em aprendizado de máquina para detecção de code smells em JavaScript
title Machine learning-based approach for code smell detection in software JavaScrip
spellingShingle Machine learning-based approach for code smell detection in software JavaScrip
Sarafim, Diego Santana
Aprendizado de Máquina
Classificação
Classification
Code smells
Code Smells
Conjunto de Dados
Dataset
JavaScript
JavaScript
Machine learning
title_short Machine learning-based approach for code smell detection in software JavaScrip
title_full Machine learning-based approach for code smell detection in software JavaScrip
title_fullStr Machine learning-based approach for code smell detection in software JavaScrip
title_full_unstemmed Machine learning-based approach for code smell detection in software JavaScrip
title_sort Machine learning-based approach for code smell detection in software JavaScrip
author Sarafim, Diego Santana
author_facet Sarafim, Diego Santana
author_role author
dc.contributor.none.fl_str_mv Delgado, Karina Valdivia
dc.contributor.author.fl_str_mv Sarafim, Diego Santana
dc.subject.por.fl_str_mv Aprendizado de Máquina
Classificação
Classification
Code smells
Code Smells
Conjunto de Dados
Dataset
JavaScript
JavaScript
Machine learning
topic Aprendizado de Máquina
Classificação
Classification
Code smells
Code Smells
Conjunto de Dados
Dataset
JavaScript
JavaScript
Machine learning
description JavaScript has become one of the world\'s most widely used programming languages. It is characterized by being a dynamic, interpreted, and weakly typed scripting language, which is especially suitable for the development of web applications. While these features allow the language to offer high levels of flexibility, they can also make JavaScript code more challenging to write, maintain, and evolve. One of the risks that JavaScript and other programming languages are prone to is the presence of code smells. Code smells result from poor programming choices during source code development, which negatively influence the source code comprehension and maintainability in the long term. %Research on the topics related to code smells has helped elevate our comprehension of the factors that lead to code smell incidence and has led us to a better understanding of their nature and their risks. Part of the research on code smells was focused on exploring different techniques to detect them. The detection techniques explored over the years range from using manually designed heuristics to employing machine learning algorithms. Although presenting promising results, most of the studies that utilized machine learning techniques to detect code smells focused on Java programming language. Since different programming languages can have different syntax, purposes, and structures and can support different programming paradigms, they may pose varying challenges for smell detection and can even be prone to unique code smells. JavaScript is such a programming language that differs from Java in a few fundamental ways, among these differences, the syntax, the support for different programming paradigms and the vulnerability to unique types of code smells stand out. Encouraged by an apparent lack of studies exploring the employment of machine learning techniques to detect code smells in JavaScript, we conducted this work for which the main contributions are the construction of the first datasets for code smell detection on JavaScript and the application of machine learning techniques for the detection of code smells in JavaScript.
publishDate 2024
dc.date.none.fl_str_mv 2024-11-06
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://www.teses.usp.br/teses/disponiveis/100/100131/tde-13122024-002027/
url https://www.teses.usp.br/teses/disponiveis/100/100131/tde-13122024-002027/
dc.language.iso.fl_str_mv eng
language eng
dc.relation.none.fl_str_mv
dc.rights.driver.fl_str_mv Liberar o conteúdo para acesso público.
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Liberar o conteúdo para acesso público.
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.coverage.none.fl_str_mv
dc.publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
dc.source.none.fl_str_mv
reponame:Biblioteca Digital de Teses e Dissertações da USP
instname:Universidade de São Paulo (USP)
instacron:USP
instname_str Universidade de São Paulo (USP)
instacron_str USP
institution USP
reponame_str Biblioteca Digital de Teses e Dissertações da USP
collection Biblioteca Digital de Teses e Dissertações da USP
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)
repository.mail.fl_str_mv virginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.br
_version_ 1848370484190642176