Abstract
A code smell isn’t a bug and it won’t help your system operate exceptionally. It might simply make it more difficult for software engineers to comprehend and maintain project source code, resulting in extra maintenance expenses. Researchers have provided a variety of techniques and tools for extracting code smells throughout the last 20 years. Therefore, there is a need for comprehensive research that summarizes and compares the large range of existing tools. We present a complete catalogue of all known code smell detection tools in this paper. We found 112 tools as a result of our study, 52 of them available for download online. They also support a variety of programming languages including Java, JavaScript, C, C++, C#, Python, and others. We categorize different code smell detection tools in this study based on their type, availability, detection techniques, identified code smells, supported languages, and main features.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Sharma T, Spinellis D (2018) A survey on software smells. J Syst Softw 138:158–173
Van Emden E, Moonen L (2002) Java quality assurance by detecting code smells. In: Ninth working conference on reverse engineering, Proceedings, pp 97–106. IEEE
Liu H, Ma Z, Shao W, Niu Z (2011) Schedule of bad smell detection and resolution: a new way to save effort. IEEE Trans Software Eng 38(1):220–235
Fontana FA, Mariani E, Mornioli A, Sormani R, Tonello A (2011) An experience report on using code smells detection tools. In: 2011 IEEE fourth international conference on software testing, verification and validation workshops, pp 450–457. IEEE
Gerlitz T, Tran QM, Dziobek C (2015) Detection and handling of model smells for MATLAB/Simulink models. In: MASE@ MoDELS, pp 13–22
Kessentini M, Ouni A (2017) Detecting android smells using multi-objective genetic programming. In: 2017 IEEE/ACM 4th international conference on mobile software engineering and systems (MOBILESoft), pp 122–132. IEEE
Palomba F, Di Nucci D, Panichella A, Zaidman A, De Lucia A (2017) Lightweight detection of android-specific code smells: The adoctor project. In: 2017 IEEE 24th international conference on software analysis, evolution and reengineering (SANER), pp 487–491. IEEE
Singh S, Kaur S (2018) A systematic literature review: refactoring for disclosing code smells in object oriented software. Ain Shams Eng J 9(4):2129–2151
Fernandes E, Oliveira J, Vale G, Paiva T, Figueiredo E (2016) A review-based comparative study of bad smell detection tools. In: Proceedings of the 20th International conference on evaluation and assessment in software engineering, pp 1–12
Gupta A, Suri B, Kumar V, Misra S, Blažauskas T, Damaševičius R (2018) Software code smell prediction model using Shannon. Rényi and Tsallis entropies. Entropy 20(5):372
Tandon S, Kumar V, Singh VB (2022) An empirical analysis of code smells using CRITIC-TOPSIS method. In: 2022 12th international conference on cloud computing, data science & engineering (Confluence), pp 234–239. IEEE
Tandon S, Kumar V, Singh VB (2022) Empirical evaluation of code smells in open-source software (OSS) using Best Worst Method (BWM) and TOPSIS approach. Int J Qual Reliab Manag 39(3):815–835
Gupta A, Gandhi R, Kumar V (2023) Investigating bad smells with feature selection and machine learning approaches. In: Kumar V, Pham H (eds) Predictive analytics in system reliability. Springer series in reliability engineering. Springer, Cham. https://doi.org/10.1007/978-3-031-05347-4_4
Yamashita A, Moonen L (2013) To what extent can maintenance problems be predicted by code smell detection?–An empirical study. Inf Softw Technol 55(12):2223–2242
Trifu A, Marinescu R (2005) Diagnosing design problems in object oriented systems. In: 12th working conference on reverse engineering (WCRE’05), pp 10-pp. IEEE
Schumacher J, Zazworka N, Shull F, Seaman C, Shaw M (2010) Building empirical support for automated code smell detection. In: Proceedings of the 2010 ACM-IEEE international symposium on empirical software engineering and measurement, pp 1–10
Olbrich S, Cruzes DS, Basili V, Zazworka N (2009) The evolution and impact of code smells: a case study of two open source systems. In: 2009 3rd international symposium on empirical software engineering and measurement, pp 390–400. IEEE
Fontana FA, Ferme V, Marino A, Walter B, Martenka P (2013) Investigating the impact of code smells on system’s quality: an empirical study on systems of different application domains. In: 2013 IEEE international conference on software maintenance, pp 260–269. IEEE
Evans WS, Fraser CW, Ma F (2009) Clone detection via structural abstraction. Software Qual J 17(4):309–330
Yamashita A (2014) Assessing the capability of code smells to explain maintenance problems: an empirical study combining quantitative and qualitative data. Empir Softw Eng 19(4):1111–1143
Fontana FA, Mangiacavalli M, Pochiero D, Zanoni M (2015) On experimenting refactoring tools to remove code smells. In: Scientific workshop proceedings of the XP2015, pp 1–8
Kamiya T, Kusumoto S, Inoue K (2002) CCFinder: a multilinguistic token-based code clone detection system for large scale source code. IEEE Trans Software Eng 28(7):654–670
Ochodek M, Hebig R, Meding W, Frost G, Staron M (2020) Recognizing lines of code violating company-specific coding guidelines using machine learning. Empir Softw Eng 25(1):220–265
Kaurr H, Maini R (2020) Function clone removal using refactoring techniques. Adv Math Scientific J 9(6):4001–4013
Tourwé T, Mens T (2003) Identifying refactoring opportunities using logic meta programming. In: Seventh European conference onsoftware maintenance and reengineering, 2003. Proceedings, pp 91–100. IEEE
Basit HA, Jarzabek S (2009) A data mining approach for detecting higher-level clones in software. IEEE Trans Software Eng 35(4):497–514
Wahler V, Seipel D, Wolff J, Fischer G (2004) Clone detection in source code by frequent itemset techniques. In: Source code analysis and manipulation, fourth IEEE international workshop on, pp 128–135. IEEE
Marinescu R (2004) Detection strategies: Metrics-based rules for detecting design flaws. In: 20th IEEE international conference on software maintenance, 2004. Proceedings, pp 350–359. IEEE
Marinescu R, Ratiu D (2004) Quantifying the quality of object-oriented design: the factor-strategy model. In: 11th Working conference on reverse engineering, pp 192–201. IEEE
Deissenboeck F, Pizka M, Seifert T (2005) Tool support for continuous quality assessment. In: 13th IEEE International workshop on software technology and engineering practice (STEP’05), pp 127–136. IEEE
Ratzinger J, Fischer M, Gall H (2005) Evolens: Lens-view visualizations of evolution data. In: Eighth international workshop on principles of software evolution (IWPSE’05), pp 103–112. IEEE
Kreimer J (2005) Adaptive detection of design flaws. Electron Notes Theoret Comput Sci 141(4):117–136
Eichberg M, Haupt M, Mezini M, Schafer T (2005) Comprehensive software understanding with SEXTANT. In 21st IEEE international conference on software maintenance (ICSM’05), pp 315–324. IEEE
Basit HA, Jarzabek S (2005) Detecting higher-level similarity patterns in programs. ACM Sigsoft Softw Eng Notes 30(5):156–165
Slinger S (2005) Code smell detection in eclipse. Delft University of Technology
Fontana FA, Zanoni M, Marino A, Mäntylä MV (2013) Code smell detection: Towards a machine learning-based approach. In: 2013 IEEE international conference on software maintenance, pp 396–399. IEEE
Romano S, Scanniello G, Sartiani C, Risi M (2016) A graph-based approach to detect unreachable methods in java software. In Proceedings of the 31st Annual ACM symposium on applied computing, pp 1538–1541
Roy CK, Cordy JR, Koschke R (2009) Comparison and evaluation of code clone detection techniques and tools: a qualitative approach. Sci Comput Program 74(7):470–495
Parnin C, Görg C, Nnadi O (2008) A catalogue of lightweight visualizations to support code smell inspection. In Proceedings of the 4th ACM symposium on software visualization, pp 77–86
Sager T, Bernstein A, Pinzger M, Kiefer C (2006) Detecting similar Java classes using tree algorithms. In: Proceedings of the 2006 international workshop on Mining software repositories, pp 65–71
Kirk D, Roper M, Wood M (2007) A heuristic-based approach to code-smell detection
Lavazza L, Morasca S, Tosi D (2021) Comparing static analysis and code smells as defect predictors: an empirical study. In: IFIP international conference on open source systems, pp 1–15. Springer, Cham
Fokaefs M, Tsantalis N, Chatzigeorgiou A (2007) Jdeodorant: Identification and removal of feature envy bad smells. In: 2007 IEEE international conference on software maintenance, pp 519–520. IEEE
Jiang L, Misherghi G, Su Z, Glondu S (2007) Deckard: Scalable and accurate tree-based detection of code clones. In: 29th International conference on software engineering (ICSE’07), pp 96–105. IEEE
Kiefer C, Bernstein A, Tappolet J (2007) Mining software repositories with isparol and a software ontology. In: Fourth international workshop on mining software repositories (MSR’07: ICSE Workshops 2007), pp 10–10. IEEE
Duala-Ekoko E, Robillard MP (2007) Tracking code clones in evolving software. In: 29th International conference on software engineering (ICSE’07), pp 158–167. IEEE
Bulychev P, Minea M (2008) Duplicate code detection using anti-unification. In: Proceedings of the spring/summer young researchers’ colloquium on software engineering (No. 2)
Singh V, Snipes W, Kraft NA (2014) A framework for estimating interest on technical debt by monitoring developer activity related to code comprehension. In: 2014 Sixth international workshop on managing technical debt, pp 27–30. IEEE
Lujan S, Pecorelli F, Palomba F, De Lucia A, Lenarduzzi V (2020) A preliminary study on the adequacy of static analysis warnings with respect to code smell prediction. In Proceedings of the 4th ACM SIGSOFT international workshop on machine-learning techniques for software-quality evaluation, pp 1–6
Fu S, Shen B (2015) Code bad smell detection through evolutionary data mining. In: 2015 ACM/IEEE international symposium on empirical software engineering and measurement (ESEM), pp 1–9. IEEE
Roperia N (2009) JSmell: a bad smell detection tool for java systems. California State University, Long Beach
Juergens E, Deissenboeck F, Hummel B, Wagner S (2009) Do code clones matter?. In: 2009 IEEE 31st international conference on software engineering, pp 485–495. IEEE
Yang L, Liu H, Niu Z (2009) Identifying fragments to be extracted from long methods. In: 2009 16th Asia-pacific software engineering conference, pp 43–49. IEEE
Juergens E, Deissenboeck F, Hummel B (2009) Clonedetective-a workbench for clone detection research. In: 2009 IEEE 31st international conference on software engineering, p. 603–606. IEEE
Boccuzzo S, Gall HC (2009) Automated comprehension tasks in software exploration. In: 2009 IEEE/ACM international conference on automated software engineering, pp 570–574. IEEE
Higo Y, Kusumoto S (2009) Enhancing quality of code clone detection with program dependency graph. In 2009 16th Working conference on reverse engineering, pp 315–316. IEEE
Telea A, Byelas H, Voinea L (2009) A framework for reverse engineering large C++ code bases. Electron Notes Theoret Comput Sci 233:143–159
Nödler J, Neukirchen H, Grabowski J (2009) A flexible framework for quality assurance of software artefacts with applications to java, uml, and ttcn-3 test specifications. In: 2009 International conference on software testing verification and validation, pp 101–110. IEEE
Ganea G, Verebi I, Marinescu R (2017) Continuous quality assessment with inCode. Sci Comput Program 134:19–36
Moha N, Guéhéneuc YG, Duchien L, Le Meur AF (2009) Decor: a method for the specification and detection of code and design smells. IEEE Trans Software Eng 36(1):20–36
Murphy-Hill E, Black AP (2010) An interactive ambient visualization for code smells. In: Proceedings of the 5th international symposium on Software visualization, pp 5–14
Carneiro GDF, Silva M, Mara L, Figueiredo E, Sant’Anna C, Garcia A, Mendonça M (2010) Identifying code smells with multiple concern views. In: 2010 Brazilian symposium on software engineering, pp 128–137. IEEE
Li H, Thompson S (2010) Similar code detection and elimination for Erlang programs. In: International symposium on practical aspects of declarative languages, pp 104–118. Springer, Berlin, Heidelberg
Fontana FA, Ferme V, Spinelli S (2012) Investigating the impact of code smells debt on quality code evaluation. In: 2012 third international workshop on managing technical debt (MTD), pp 15–22. IEEE
Ferenc R (2010) Bug forecast: a method for automatic bug prediction. In: International conference on advanced software engineering and its applications, pp 283–295. Springer, Berlin, Heidelberg
Peldzius S (2010) Automatic detection of possible refactorings. I:n Proceedings of the 16th international conference on information and software technologies (ICIST), pp 238–245
Von Detten M, Meyer M, Travkin D (2010) Reverse engineering with the reclipse tool suite. In: Proceedings of the 32nd ACM/IEEE international conference on software engineering-Volume 2, pp 299–300
Guo Y, Seaman C, Zazworka N, Shull F (2010) Domain-specific tailoring of code smells: an empirical study. In: Proceedings of the 32nd ACM/IEEE international conference on software engineering, Vol 2, pp 167–170
Mathur N (2011) Java smell detector
Sjøberg DI, Yamashita A, Anda BC, Mockus A, Dybå T (2012) Quantifying the effect of code smells on maintenance effort. IEEE Trans Software Eng 39(8):1144–1156
Cordy JR, Roy CK (2011) The NiCad clone detector. In: 2011 IEEE 19th international conference on program comprehension, pp 219–220. IEEE
Feng C, Wang T, Liu J, Zhang Y, Xu K, Wang Y (2020) NiCad+: speeding the detecting process of nicad. In: 2020 IEEE international conference on service oriented systems engineering (SOSE), pp 103–110. IEEE
Griffith I, Wahl S, Izurieta C (2011) TrueRefactor: an automated refactoring tool to improve legacy system and application comprehensibility. In: 24th international conference on computer applications in industry and engineering, ISCA 2011
Stevens R, De Roover C, Noguera C, Kellens A, Jonckers V (2014) A logic foundation for a general-purpose history querying tool. Sci Comput Program 96:107–120
Kellens A, De Roover C, Noguera C, Stevens R, Jonckers V (2011) Reasoning over the evolution of source code using quantified regular path expressions. In: 2011 18th working conference on reverse engineering, pp 389–393. IEEE
Arcelli Fontana F, Mäntylä MV, Zanoni M, Marino A (2016) Comparing and experimenting machine learning techniques for code smell detection. Empir Softw Eng 21(3):1143–1191
Simon F, Steinbruckner F, Lewerentz C (2001) Metrics based refactoring. In: Proceedings fifth European conference on software maintenance and reengineering, pp 30–38. IEEE
Khomh F, Vaucher S, Guéhéneuc YG, Sahraoui H (2011) BDTEX: A GQM-based Bayesian approach for the detection of antipatterns. J Syst Softw 84(4):559–572
Mara L, Honorato G, Medeiros FD, Garcia A, Lucena C (2011) Hist-inspect: a tool for history-sensitive detection of code smells. In Proceedings of the tenth international conference on Aspect-oriented software development companion, pp 65–66
Zibran MF, Roy CK (2011) Towards flexible code clone detection, management, and refactoring in IDE. In: Proceedings of the 5th international workshop on software clones, pp 75–76
Gopalan R (2012) Automatic detection of code smells in Java source code (Doctoral dissertation, Dissertation for Honour Degree, The University of Western Australia)
Alves P, Santana D, Figueiredo E (2012) ConcernReCS: finding code smells in software aspectization. In: 2012 34th international conference on software engineering (ICSE), pp 1463–1464. IEEE
Wust J (2005) SDMetrics: the software design metrics tool for UML
Tamrawi A, Nguyen HA, Nguyen HV, Nguyen TN (2012) SYMake: a build code analysis and refactoring tool for makefiles. In: 2012 Proceedings of the 27th IEEE/ACM international conference on automated software engineering, pp 366–369. IEEE
Islam MR, Zibran MF, Nagpal A (2017) Security vulnerabilities in categories of clones and non-cloned code: an empirical study. In: 2017 ACM/IEEE international symposium on empirical software engineering and measurement (ESEM), pp 20–29. IEEE
Macia I, Arcoverde R, Cirilo E, Garcia A, von Staa A (2012) Supporting the identification of architecturally-relevant code anomalies. ICSM12, 662–665
Danphitsanuphan P, Suwantada T (2012) Code smell detecting tool and code smell-structure bug relationship. In: 2012 Spring congress on engineering and technology, pp 1–5. IEEE
Raab F (2012) CodeSmellExplorer: tangible exploration of code smells and refactorings. In: 2012 IEEE symposium on visual languages and human-centric computing (VL/HCC), pp 261–262. IEEE
Pessoa T, Monteiro MP, Bryton S (2012) An eclipse plugin to support code smells detection. arXiv preprint arXiv:1204.6492
Nongpong K (2012) Integrating” Code Smells” Detection with refactoring tool support (Doctoral dissertation, The University of Wisconsin-Milwaukee)
Rasool G, Arshad Z (2015) A review of code smell mining techniques. J Softw Evolut Process 27(11):867–895
Maiga A, Ali N, Bhattacharya N, Sabané A, Guéhéneuc YG, Antoniol G, Aïmeur E (2012) Support vector machines for anti-pattern detection. In: 2012 Proceedings of the 27th IEEE/ACM international conference on automated software engineering, pp 278–281. IEEE
Liu H, Guo X, Shao W (2013) Monitor-based instant software refactoring. IEEE Trans Software Eng 39(8):1112–1126
Fard AM, Mesbah A (2013) Jsnose: detecting javascript code smells. In: 2013 IEEE 13th international working conference on source code analysis and manipulation (SCAM), pp 116–125. IEEE
Kaur A, Raperia H (2013) Implementation and analysis of a refactoring tool for detecting code smells. Int J Comput Technol 6(1):242–247
Arnaoudova V, Di Penta M, Antoniol G, Guéhéneuc YG (2013) A new family of software anti-patterns: Linguistic anti-patterns. In: 2013 17th European conference on software maintenance and reengineering, pp 187–196. IEEE
Vidal SA, Marcos C, Díaz-Pace JA (2016) An approach to prioritize code smells for refactoring. Autom Softw Eng 23(3):501–532
Sahin D, Kessentini M, Bechikh S, Deb K (2014) Code-smell detection as a bilevel problem. ACM Trans Softw Eng Methodol (TOSEM) 24(1):1–44
Hall T, Zhang M, Bowes D, Sun Y (2014) Some code smells have a significant but small effect on faults. ACM Trans Softw Eng Methodol (TOSEM) 23(4):1–39
Medeiros F (2014) An approach to safely evolve program families in c. In: Proceedings of the companion publication of the 2014 ACM SIGPLAN conference on systems, programming, and applications: software for humanity, pp 25–27
Chaudron MR, Katumba B, Ran X (2014) Automated prioritization of metrics-based design flaws in UML class diagrams. In: 2014 40th EUROMICRO conference on software engineering and advanced applications, pp 369–376. IEEE
Grigera J, Garrido A, Rivero JM (2014) A tool for detecting bad usability smells automatically. In: International conference on web engineering, pp 490–493. Springer, Cham
Arcelli F, Rolla M, Zanoni M (2014) VCS-analyzer for software evolution empirical analysis. In: Proceedings of the 8th ACM/IEEE international symposium on empirical software engineering and measurement, pp 1–1
Sharma VS, Anwer S (2014) Performance antipatterns: detection and evaluation of their effects in the cloud. In: 2014 IEEE international conference on services computing, pp 758–765. IEEE
Mahajan G, Bharti M (2014) Implementing a 3-way approach of clone detection and removal using pc detector tool. In: 2014 IEEE international advance computing conference (IACC), pp 1435–1441. IEEE
Singh S, Kaur R (2014) Clone detection in UML class models using class metrics. ACM SIGSOFT Softw Eng Notes 39(3):1–3
Romano S, Scanniello G (2018) Exploring the use of rapid type analysis for detecting the dead method smell in java code. In: 2018 44th Euromicro conference on software engineering and advanced applications (SEAA), pp 167–174. IEEE
Hecht G, Rouvoy R, Moha N, Duchien L (2015) Detecting antipatterns in android apps. In: 2015 2nd ACM international conference on mobile software engineering and systems, pp 148–149. IEEE
Liu X, Zhang C (2017) DT: a detection tool to automatically detect code smell in software project. In: 2016 4th International conference on machinery, materials and information technology applications, pp 681–684. Atlantis Press
Velioğlu S, Selçuk YE (2017) An automated code smell and anti-pattern detection approach. In: 2017 IEEE 15th international conference on software engineering research, management and applications (SERA), pp 271–275. IEEE
Fontana FA, Pigazzini I, Roveda R, Zanoni M (2016) Automatic detection of instability architectural smells. In: 2016 IEEE international conference on software maintenance and evolution (ICSME), pp 433–437. IEEE
Peldszus S, Kulcsár G, Lochau M, Schulze S (2016) Continuous detection of design flaws in evolving object-oriented programs using incremental multi-pattern matching. In: 2016 31st IEEE/ACM international conference on automated software engineering (ASE), pp 578–589. IEEE
Sajnani H, Saini V, Svajlenko J, Roy CK, Lopes CV (2016) Sourcerercc: Scaling code clone detection to big-code. In: Proceedings of the 38th international conference on software engineering, pp 1157–1168
Chen B, Jiang ZM (2017) Characterizing and detecting anti-patterns in the logging code. In: 2017 IEEE/ACM 39th international conference on software engineering (ICSE), pp 71–81. IEEE
Sousa BL, Souza PP, Fernandes EM, Ferreira KA, Bigonha MA (2017) FindSmells: flexible composition of bad smell detection strategies. In: 2017 IEEE/ACM 25th international conference on program comprehension (ICPC), pp 360–363. IEEE
Prokić S, Grujić KG, Luburić N, Slivka J, Kovačević A, Vidaković D, Sladić G (2021) Clean code and design educational tool. In: 2021 44th international convention on information, communication and electronic technology (MIPRO), pp 1601–1606. IEEE
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2024 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this chapter
Cite this chapter
Mourya, S., Singh, P.P., Singh, V.B. (2024). An Insight into Code Smell Detection Tool. In: Kapur, P.K., Pham, H., Singh, G., Kumar, V. (eds) Reliability Engineering for Industrial Processes. Springer Series in Reliability Engineering. Springer, Cham. https://doi.org/10.1007/978-3-031-55048-5_17
Download citation
DOI: https://doi.org/10.1007/978-3-031-55048-5_17
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-55047-8
Online ISBN: 978-3-031-55048-5
eBook Packages: EngineeringEngineering (R0)