00 CAMPUS ARISTÓTELES CALAZANS SIMÕES (CAMPUS A. C. SIMÕES) IC - INSTITUTO DE COMPUTAÇÃO Dissertações e Teses defendidas na UFAL - IC
Use este identificador para citar ou linkar para este item: http://www.repositorio.ufal.br/jspui/handle/riufal/6966
Tipo: Dissertação
Título: Understanding and classifying code harmfulness
Título(s) alternativo(s): Entendendo e reconhecendo códigos prejudiciais
Autor(es): Lima, Rodrigo dos Santos
Primeiro Orientador: Santos Neto, Baldoino Fonseca dos
metadata.dc.contributor.referee1: Ribeiro, Márcio de Medeiros
metadata.dc.contributor.referee2: Teixeira, Leopoldo Motta
Resumo: Code Smells geralmente indicam más opções de implementação que podem prejudicar a qualidade do software. Portanto, eles precisam ser detectados com cuidado para evitar degradação do software. Nesse contexto, alguns estudos tentam entender o impacto dos Code Smells na qualidade do software, enquanto outros propõem regras ou técnicas baseadas em aprendizado de máquina para detectar Code Smells. No entanto, nenhum desses estudos / técnicas se concentram na análise de trechos de código que são realmente prejudiciais à qualidade do software. Nosso estudo tem como objetivo entender e classificar a nocividade do código. Analisamos a nocividade em termos de código CLEAN, SMELLY, BUGGY e HARMFUL. Por código nocivo, queremos dizer código que já prejudicou a qualidade do software e ainda está sujeito a danos. Realizamos nosso estudo com 22 tipos de Smells, 803 versões de 12 projetos de código aberto, 40.340 bugs e 132.219 Code Smells. Os resultados mostram que, embora tenhamos um número alto de Code Smells, apenas 0,07% desses Smells são prejudiciais. O Abstract Call From Constructor é o tipo de Smell mais relacionado ao código nocivo. Para validar empiricamente nossos resultados, também realizamos uma pesquisa com 77 desenvolvedores. A maioria deles (90,4%) considera Code Smells prejudiciais ao software e 84,6% desses desenvolvedores acreditam que as ferramentas de detecção de Code Smells são importantes. Mas, esses desenvolvedores não estão preocupados em selecionar ferramentas capazes de detectar Code Smells. Também avaliamos técnicas de aprendizado de máquina para classificar a nocividade do código: elas atingem a eficácia de pelo menos 97% para classificar o código nocivo. Enquanto Random Forest é eficaz na classificação de Code Smells e nocivos, o Gaussian Naïve Bayes é a técnica menos eficaz. Nossos resultados também sugerem que as métricas de software e desenvolvedores são importantes para classificar códigos nocivos.
Abstract: Code smells typically indicate poor implementation choices that may degrade software quality. Hence, they need to be carefully detected to avoid such degradation. In this context, some studies try to understand the impact of code smells on the software quality, while others propose rules or machine learning-based techniques to detect code smells. However, none of those studies/techniques focus on analyzing code snippets that are really harmful to software quality. Our study aims to understand and classify code harmfulness. We analyze harmfulness in terms of CLEAN, SMELLY, BUGGY, and HARMFUL code. By harmful code, we mean code that has already harmed software quality and is still prone to harm. We perform our study with 22 smell types, 803 versions of 12 open-source projects, 40,340 bugs and 132,219 code smells. The results show that even though we have a high number of code smells, only 0.07% of those smells are harmful. The Abstract Function Call From Constructor is the smell type more related to harmful code. To cross-validate our results, we also perform a survey with 77 developers. Most of them (90.4%) consider code smells harmful to the software, and 84.6% of those developers believe that code smells detection tools are important. But, those developers are not concerned about selecting tools that are able to detect harmful code. We also evaluate machine learning techniques to classify code harmfulness: they reach the effectiveness of at least 97% to classify harmful code. While the Random Forest is effective in classifying both smelly and harmful code, the Gaussian Naive Bayes is the less effective technique. Our results also suggest that both software and developers’ metrics are important to classify harmful code.
Palavras-chave: Code smells
Software – Qualidade
Aprendizagem de máquina
Code Smells
Software Quality
Machine Learning
CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Idioma: eng
País: Brasil
Editor: Universidade Federal de Alagoas
Sigla da Instituição: UFAL
metadata.dc.publisher.program: Programa de Pós-Graduação em Informática
Citação: LIMA, Rodrigo dos Santos. Understanding and classifying code harmfulness. 2020. 54 f. Dissertação (Mestrado em Informática) - Instituto de Computação, Programa de Pós-Graduação em Informática, Universidade Federal de Alagoas, Maceió, 2020.
Tipo de Acesso: Acesso Aberto
URI: http://www.repositorio.ufal.br/handle/riufal/6966
Data do documento: 28-fev-2020
Aparece nas coleções:Dissertações e Teses defendidas na UFAL - IC

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
Understanding and Classifying Code Harmfulness.pdf10.7 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.