Loading…
Code Smells Detection and Visualization: A Systematic Literature Review
Code smells tend to compromise software quality and also demand more effort by developers to maintain and evolve the application throughout its life-cycle. They have long been catalogued with corresponding mitigating solutions called refactoring operations. Researchers have argued that due to the su...
Saved in:
Published in: | Archives of computational methods in engineering 2022-01, Vol.29 (1), p.47-94 |
---|---|
Main Authors: | , , , |
Format: | Article |
Language: | English |
Subjects: | |
Citations: | Items that this one cites Items that cite this one |
Online Access: | Get full text |
Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
cited_by | cdi_FETCH-LOGICAL-c411t-36e727df6eb5de2e22d80cd1377d571585b28eeabe6cbebb512b0d278216505f3 |
---|---|
cites | cdi_FETCH-LOGICAL-c411t-36e727df6eb5de2e22d80cd1377d571585b28eeabe6cbebb512b0d278216505f3 |
container_end_page | 94 |
container_issue | 1 |
container_start_page | 47 |
container_title | Archives of computational methods in engineering |
container_volume | 29 |
creator | Pereira dos Reis, José Brito e Abreu, Fernando de Figueiredo Carneiro, Glauco Anslow, Craig |
description | Code smells tend to compromise software quality and also demand more effort by developers to maintain and evolve the application throughout its life-cycle. They have long been catalogued with corresponding mitigating solutions called refactoring operations. Researchers have argued that due to the subjectiveness of the code smells detection process, proposing an effective use of automatic support for this end is a non trivial task. This systematic literature review (SLR) has a twofold goal: the first is to identify the main code smells detection techniques and tools discussed in the literature, and the second is to analyze to which extent visual techniques have been applied to support the former. Over eighty primary studies indexed in major scientific repositories were identified by our search string in this SLR. Then, following existing best practices for secondary studies, we applied inclusion/exclusion criteria to select the most relevant works, extract their features and classify them. We found that the most commonly used approaches to code smells detection are search-based (30.1%), metric-based (24.1%), and symptom-based approaches (19.3%). Most of the studies (83.1%) use open-source software, with the Java language occupying the first position (77.1%). In terms of code smells,
God Class
(51.8%),
Feature Envy
(33.7%), and
Long Method
(26.5%) are the most covered ones. Machine learning (ML) techniques are used in 35% of the studies, with genetic programming, decision tree, support vector machines and association rules being the most used algorithms. Around 80% of the studies only detect code smells, without providing visualization techniques. In visualization-based approaches several methods are used, such as: city metaphors, 3D visualization techniques, interactive ambient visualization, polymetric views, or graph models. This paper presents an up-to-date review on the state-of-the-art techniques and tools used for code smells detection and visualization. We confirm that the detection of code smells is a non trivial task, and there is still a lot of work to be done in terms of: reducing the subjectivity associated with the definition and detection of code smells; increasing the diversity of detected code smells and of supported programming languages; constructing and sharing oracles and datasets to facilitate the replication of code smells detection and visualization techniques validation experiments. |
doi_str_mv | 10.1007/s11831-021-09566-x |
format | article |
fullrecord | <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_journals_2616383247</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>2616383247</sourcerecordid><originalsourceid>FETCH-LOGICAL-c411t-36e727df6eb5de2e22d80cd1377d571585b28eeabe6cbebb512b0d278216505f3</originalsourceid><addsrcrecordid>eNp9kEtLw0AUhQdRsFb_gKsB19G5M5lH3ZWqVSgIVt0OSeZGUtKkziTa-uudGsGdi8t9cM658BFyDuwSGNNXAcAISBiPNZFKJdsDMgJjVALapIdxBpEmgil2TE5CWDEm08mEj8h81jqkyzXWdaA32GHRVW1Ds8bR1yr0WV19ZfvLNZ3S5S50uI5rQRdVhz7reo_0CT8q_DwlR2VWBzz77WPycnf7PLtPFo_zh9l0kRQpQJcIhZprVyrMpUOOnDvDCgdCayc1SCNzbhCzHFWRY55L4DlzXBsOSjJZijG5GHI3vn3vMXR21fa-iS8tV6CEETzVUcUHVeHbEDyWduOrdeZ3FpjdA7MDMBuB2R9gdhtNYjCFKG7e0P9F_-P6Br8abnc</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2616383247</pqid></control><display><type>article</type><title>Code Smells Detection and Visualization: A Systematic Literature Review</title><source>Springer Link</source><creator>Pereira dos Reis, José ; Brito e Abreu, Fernando ; de Figueiredo Carneiro, Glauco ; Anslow, Craig</creator><creatorcontrib>Pereira dos Reis, José ; Brito e Abreu, Fernando ; de Figueiredo Carneiro, Glauco ; Anslow, Craig</creatorcontrib><description>Code smells tend to compromise software quality and also demand more effort by developers to maintain and evolve the application throughout its life-cycle. They have long been catalogued with corresponding mitigating solutions called refactoring operations. Researchers have argued that due to the subjectiveness of the code smells detection process, proposing an effective use of automatic support for this end is a non trivial task. This systematic literature review (SLR) has a twofold goal: the first is to identify the main code smells detection techniques and tools discussed in the literature, and the second is to analyze to which extent visual techniques have been applied to support the former. Over eighty primary studies indexed in major scientific repositories were identified by our search string in this SLR. Then, following existing best practices for secondary studies, we applied inclusion/exclusion criteria to select the most relevant works, extract their features and classify them. We found that the most commonly used approaches to code smells detection are search-based (30.1%), metric-based (24.1%), and symptom-based approaches (19.3%). Most of the studies (83.1%) use open-source software, with the Java language occupying the first position (77.1%). In terms of code smells,
God Class
(51.8%),
Feature Envy
(33.7%), and
Long Method
(26.5%) are the most covered ones. Machine learning (ML) techniques are used in 35% of the studies, with genetic programming, decision tree, support vector machines and association rules being the most used algorithms. Around 80% of the studies only detect code smells, without providing visualization techniques. In visualization-based approaches several methods are used, such as: city metaphors, 3D visualization techniques, interactive ambient visualization, polymetric views, or graph models. This paper presents an up-to-date review on the state-of-the-art techniques and tools used for code smells detection and visualization. We confirm that the detection of code smells is a non trivial task, and there is still a lot of work to be done in terms of: reducing the subjectivity associated with the definition and detection of code smells; increasing the diversity of detected code smells and of supported programming languages; constructing and sharing oracles and datasets to facilitate the replication of code smells detection and visualization techniques validation experiments.</description><identifier>ISSN: 1134-3060</identifier><identifier>EISSN: 1886-1784</identifier><identifier>DOI: 10.1007/s11831-021-09566-x</identifier><language>eng</language><publisher>Dordrecht: Springer Netherlands</publisher><subject>Best practice ; Decision trees ; Engineering ; Feature extraction ; Genetic algorithms ; Literature reviews ; Machine learning ; Mathematical and Computational Engineering ; Metaphor ; Open source software ; Programming languages ; Review Article ; Software ; Source code ; State-of-the-art reviews ; Support vector machines ; Systematic review ; Visualization</subject><ispartof>Archives of computational methods in engineering, 2022-01, Vol.29 (1), p.47-94</ispartof><rights>CIMNE, Barcelona, Spain 2021</rights><rights>CIMNE, Barcelona, Spain 2021.</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c411t-36e727df6eb5de2e22d80cd1377d571585b28eeabe6cbebb512b0d278216505f3</citedby><cites>FETCH-LOGICAL-c411t-36e727df6eb5de2e22d80cd1377d571585b28eeabe6cbebb512b0d278216505f3</cites><orcidid>0000-0002-9086-4122 ; 0000-0002-2505-9565 ; 0000-0001-6241-1612 ; 0000-0001-8064-6300</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,780,784,27924,27925</link.rule.ids></links><search><creatorcontrib>Pereira dos Reis, José</creatorcontrib><creatorcontrib>Brito e Abreu, Fernando</creatorcontrib><creatorcontrib>de Figueiredo Carneiro, Glauco</creatorcontrib><creatorcontrib>Anslow, Craig</creatorcontrib><title>Code Smells Detection and Visualization: A Systematic Literature Review</title><title>Archives of computational methods in engineering</title><addtitle>Arch Computat Methods Eng</addtitle><description>Code smells tend to compromise software quality and also demand more effort by developers to maintain and evolve the application throughout its life-cycle. They have long been catalogued with corresponding mitigating solutions called refactoring operations. Researchers have argued that due to the subjectiveness of the code smells detection process, proposing an effective use of automatic support for this end is a non trivial task. This systematic literature review (SLR) has a twofold goal: the first is to identify the main code smells detection techniques and tools discussed in the literature, and the second is to analyze to which extent visual techniques have been applied to support the former. Over eighty primary studies indexed in major scientific repositories were identified by our search string in this SLR. Then, following existing best practices for secondary studies, we applied inclusion/exclusion criteria to select the most relevant works, extract their features and classify them. We found that the most commonly used approaches to code smells detection are search-based (30.1%), metric-based (24.1%), and symptom-based approaches (19.3%). Most of the studies (83.1%) use open-source software, with the Java language occupying the first position (77.1%). In terms of code smells,
God Class
(51.8%),
Feature Envy
(33.7%), and
Long Method
(26.5%) are the most covered ones. Machine learning (ML) techniques are used in 35% of the studies, with genetic programming, decision tree, support vector machines and association rules being the most used algorithms. Around 80% of the studies only detect code smells, without providing visualization techniques. In visualization-based approaches several methods are used, such as: city metaphors, 3D visualization techniques, interactive ambient visualization, polymetric views, or graph models. This paper presents an up-to-date review on the state-of-the-art techniques and tools used for code smells detection and visualization. We confirm that the detection of code smells is a non trivial task, and there is still a lot of work to be done in terms of: reducing the subjectivity associated with the definition and detection of code smells; increasing the diversity of detected code smells and of supported programming languages; constructing and sharing oracles and datasets to facilitate the replication of code smells detection and visualization techniques validation experiments.</description><subject>Best practice</subject><subject>Decision trees</subject><subject>Engineering</subject><subject>Feature extraction</subject><subject>Genetic algorithms</subject><subject>Literature reviews</subject><subject>Machine learning</subject><subject>Mathematical and Computational Engineering</subject><subject>Metaphor</subject><subject>Open source software</subject><subject>Programming languages</subject><subject>Review Article</subject><subject>Software</subject><subject>Source code</subject><subject>State-of-the-art reviews</subject><subject>Support vector machines</subject><subject>Systematic review</subject><subject>Visualization</subject><issn>1134-3060</issn><issn>1886-1784</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2022</creationdate><recordtype>article</recordtype><recordid>eNp9kEtLw0AUhQdRsFb_gKsB19G5M5lH3ZWqVSgIVt0OSeZGUtKkziTa-uudGsGdi8t9cM658BFyDuwSGNNXAcAISBiPNZFKJdsDMgJjVALapIdxBpEmgil2TE5CWDEm08mEj8h81jqkyzXWdaA32GHRVW1Ds8bR1yr0WV19ZfvLNZ3S5S50uI5rQRdVhz7reo_0CT8q_DwlR2VWBzz77WPycnf7PLtPFo_zh9l0kRQpQJcIhZprVyrMpUOOnDvDCgdCayc1SCNzbhCzHFWRY55L4DlzXBsOSjJZijG5GHI3vn3vMXR21fa-iS8tV6CEETzVUcUHVeHbEDyWduOrdeZ3FpjdA7MDMBuB2R9gdhtNYjCFKG7e0P9F_-P6Br8abnc</recordid><startdate>20220101</startdate><enddate>20220101</enddate><creator>Pereira dos Reis, José</creator><creator>Brito e Abreu, Fernando</creator><creator>de Figueiredo Carneiro, Glauco</creator><creator>Anslow, Craig</creator><general>Springer Netherlands</general><general>Springer Nature B.V</general><scope>AAYXX</scope><scope>CITATION</scope><scope>JQ2</scope><orcidid>https://orcid.org/0000-0002-9086-4122</orcidid><orcidid>https://orcid.org/0000-0002-2505-9565</orcidid><orcidid>https://orcid.org/0000-0001-6241-1612</orcidid><orcidid>https://orcid.org/0000-0001-8064-6300</orcidid></search><sort><creationdate>20220101</creationdate><title>Code Smells Detection and Visualization: A Systematic Literature Review</title><author>Pereira dos Reis, José ; Brito e Abreu, Fernando ; de Figueiredo Carneiro, Glauco ; Anslow, Craig</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c411t-36e727df6eb5de2e22d80cd1377d571585b28eeabe6cbebb512b0d278216505f3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2022</creationdate><topic>Best practice</topic><topic>Decision trees</topic><topic>Engineering</topic><topic>Feature extraction</topic><topic>Genetic algorithms</topic><topic>Literature reviews</topic><topic>Machine learning</topic><topic>Mathematical and Computational Engineering</topic><topic>Metaphor</topic><topic>Open source software</topic><topic>Programming languages</topic><topic>Review Article</topic><topic>Software</topic><topic>Source code</topic><topic>State-of-the-art reviews</topic><topic>Support vector machines</topic><topic>Systematic review</topic><topic>Visualization</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Pereira dos Reis, José</creatorcontrib><creatorcontrib>Brito e Abreu, Fernando</creatorcontrib><creatorcontrib>de Figueiredo Carneiro, Glauco</creatorcontrib><creatorcontrib>Anslow, Craig</creatorcontrib><collection>CrossRef</collection><collection>ProQuest Computer Science Collection</collection><jtitle>Archives of computational methods in engineering</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Pereira dos Reis, José</au><au>Brito e Abreu, Fernando</au><au>de Figueiredo Carneiro, Glauco</au><au>Anslow, Craig</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Code Smells Detection and Visualization: A Systematic Literature Review</atitle><jtitle>Archives of computational methods in engineering</jtitle><stitle>Arch Computat Methods Eng</stitle><date>2022-01-01</date><risdate>2022</risdate><volume>29</volume><issue>1</issue><spage>47</spage><epage>94</epage><pages>47-94</pages><issn>1134-3060</issn><eissn>1886-1784</eissn><abstract>Code smells tend to compromise software quality and also demand more effort by developers to maintain and evolve the application throughout its life-cycle. They have long been catalogued with corresponding mitigating solutions called refactoring operations. Researchers have argued that due to the subjectiveness of the code smells detection process, proposing an effective use of automatic support for this end is a non trivial task. This systematic literature review (SLR) has a twofold goal: the first is to identify the main code smells detection techniques and tools discussed in the literature, and the second is to analyze to which extent visual techniques have been applied to support the former. Over eighty primary studies indexed in major scientific repositories were identified by our search string in this SLR. Then, following existing best practices for secondary studies, we applied inclusion/exclusion criteria to select the most relevant works, extract their features and classify them. We found that the most commonly used approaches to code smells detection are search-based (30.1%), metric-based (24.1%), and symptom-based approaches (19.3%). Most of the studies (83.1%) use open-source software, with the Java language occupying the first position (77.1%). In terms of code smells,
God Class
(51.8%),
Feature Envy
(33.7%), and
Long Method
(26.5%) are the most covered ones. Machine learning (ML) techniques are used in 35% of the studies, with genetic programming, decision tree, support vector machines and association rules being the most used algorithms. Around 80% of the studies only detect code smells, without providing visualization techniques. In visualization-based approaches several methods are used, such as: city metaphors, 3D visualization techniques, interactive ambient visualization, polymetric views, or graph models. This paper presents an up-to-date review on the state-of-the-art techniques and tools used for code smells detection and visualization. We confirm that the detection of code smells is a non trivial task, and there is still a lot of work to be done in terms of: reducing the subjectivity associated with the definition and detection of code smells; increasing the diversity of detected code smells and of supported programming languages; constructing and sharing oracles and datasets to facilitate the replication of code smells detection and visualization techniques validation experiments.</abstract><cop>Dordrecht</cop><pub>Springer Netherlands</pub><doi>10.1007/s11831-021-09566-x</doi><tpages>48</tpages><orcidid>https://orcid.org/0000-0002-9086-4122</orcidid><orcidid>https://orcid.org/0000-0002-2505-9565</orcidid><orcidid>https://orcid.org/0000-0001-6241-1612</orcidid><orcidid>https://orcid.org/0000-0001-8064-6300</orcidid><oa>free_for_read</oa></addata></record> |
fulltext | fulltext |
identifier | ISSN: 1134-3060 |
ispartof | Archives of computational methods in engineering, 2022-01, Vol.29 (1), p.47-94 |
issn | 1134-3060 1886-1784 |
language | eng |
recordid | cdi_proquest_journals_2616383247 |
source | Springer Link |
subjects | Best practice Decision trees Engineering Feature extraction Genetic algorithms Literature reviews Machine learning Mathematical and Computational Engineering Metaphor Open source software Programming languages Review Article Software Source code State-of-the-art reviews Support vector machines Systematic review Visualization |
title | Code Smells Detection and Visualization: A Systematic Literature Review |
url | http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-28T14%3A24%3A48IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Code%20Smells%20Detection%20and%20Visualization:%20A%20Systematic%20Literature%20Review&rft.jtitle=Archives%20of%20computational%20methods%20in%20engineering&rft.au=Pereira%20dos%20Reis,%20Jos%C3%A9&rft.date=2022-01-01&rft.volume=29&rft.issue=1&rft.spage=47&rft.epage=94&rft.pages=47-94&rft.issn=1134-3060&rft.eissn=1886-1784&rft_id=info:doi/10.1007/s11831-021-09566-x&rft_dat=%3Cproquest_cross%3E2616383247%3C/proquest_cross%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-c411t-36e727df6eb5de2e22d80cd1377d571585b28eeabe6cbebb512b0d278216505f3%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_pqid=2616383247&rft_id=info:pmid/&rfr_iscdi=true |