Skip to main content

Advertisement

Log in

Code Smells Detection and Visualization: A Systematic Literature Review

  • Review article
  • Published:
Archives of Computational Methods in Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

Notes

  1. http://www.core.edu.au/.

  2. https://scholar.google.com/.

  3. Data obtained in 22/09/2019.

  4. Weka is a collection of ML algorithms for data mining tasks (http://www.cs.waikato.ac.nz/ml/weka/).

  5. https://users.encs.concordia.ca/~nikolaos/jdeodorant/.

  6. http://loose.utt.ro/iplasma/.

  7. https://softvis.wordpress.com/.

  8. https://github.com/dataset-cs-surveys/Dataset-CS-surveys.git.

References

  1. Abreu FB, Goulão M, Esteves R (1995) Toward the design quality evaluation of object-oriented software systems. In: 5th International Conference on Software Quality. American Society for Quality, American Society for Quality, Austin, Texas, EUA, pp 44–57

  2. Al Dallal J (2015) Identifying refactoring opportunities in object-oriented code: a systematic literature review. Inf Softw Technol 58:231–249. https://doi.org/10.1016/j.infsof.2014.08.002, http://arxiv.org/abs/1011.1669v3arXiv:1011.1669v3

  3. Alkharabsheh K, Crespo Y, Manso E, Taboada JA (2018) Software design smell detection: a systematic mapping study. Softw Qual J. https://doi.org/10.1007/s11219-018-9424-8

    Article  Google Scholar 

  4. Azeem MI, Palomba F, Shi L, Wang Q (2019) Machine learning techniques for code smell detection: a systematic literature review and meta-analysis. Inf Softw Technol 108:115–138. https://doi.org/10.1016/j.infsof.2018.12.009

    Article  Google Scholar 

  5. Belikov A, Belikov V (2015) A citation-based, author- and age-normalized, logarithmic index for evaluation of individual researchers independently of publication counts [version 1; peer review: 2 approved]. F1000Research 4:884. https://doi.org/10.12688/f1000research.7070.1

    Article  Google Scholar 

  6. Brereton P, Kitchenham BA, Budgen D, Turner M, Khalil M (2007) Lessons from applying the systematic literature review process within the software engineering domain. J Syst Softw 80(4):571–583

    Article  Google Scholar 

  7. Brown WH, Malveau RC, McCormick HWS, Mowbray TJ (1998) AntiPatterns: refactoring software, architectures, and projects in crisis, 1st edn. Wiley, Hoboken

    Google Scholar 

  8. Carver JC (2010) Towards reporting guidelines for experimental replications: a proposal. In: 1st international workshop on replication in empirical software engineering. Citeseer

  9. Carver JC, Juristo N, Baldassarre MT, Vegas S (2014) Replications of software engineering experiments. Empir Softw Eng 19(2):267–276. https://doi.org/10.1007/s10664-013-9290-8

    Article  Google Scholar 

  10. Chen L, Babar MA (2011) A systematic review of evaluation of variability management approaches in software product lines. Inf Softw Technol 53(4):344–362

    Article  Google Scholar 

  11. Chen Z, Chen L, Ma W, Xu B (2016) Detecting code smells in Python programs. In: 2016 international conference on Software Analysis, Testing and Evolution (SATE), pp 18–23. https://doi.org/10.1109/SATE.2016.10

  12. dos Reis JP, e Abreu FB, de F Carneiro G (2017) Code smells detection 2.0: crowdsmelling and visualization. In: 2017 12th Iberian Conference on Information Systems and Technologies (CISTI), pp 1–4. https://doi.org/10.23919/CISTI.2017.7975961

  13. Dyba T, Dingsøyr T (2008) Empirical studies of agile software development: a systematic review. Inf Softw Technol 50(9–10):833–859. https://doi.org/10.1016/j.infsof.2008.01.006

    Article  Google Scholar 

  14. 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. https://doi.org/10.1109/SCAM.2013.6648192

  15. 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. ACM, Limerick, Ireland. https://doi.org/10.1145/2915970.2915984

  16. Fleiss JL, Levin B, Paik MC (2013) Statistical methods for rates and proportions, 3rd edn. Wiley, Hoboken

    MATH  Google Scholar 

  17. 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. https://doi.org/10.1109/ICSM.2007.4362679

  18. Fowler M, Beck K, Brant J, Opdyke W, Roberts D (1999) Refactoring: improving the design of existing code. Addison-Wesley Longman Publishing Co., Inc, Boston

    Google Scholar 

  19. Gerlitz T, Tran QM, Dziobek C (2015) Detection and handling of model smells for matlab/simulink models. In: MASE@MoDELS

  20. Gupta A, Suri B, Misra S (2017) A systematic literature review: code bad smells in Java Source Code. In: ICCSA 2017, vol 10409, pp 665–682. https://doi.org/10.1007/978-3-319-62407-5

  21. 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):1–20. https://doi.org/10.3390/e20050372

    Article  Google Scholar 

  22. Hammad M, Basit HA, Jarzabek S, Koschke R (2020) A systematic mapping study of clone visualization. Comput Sci Rev 37:100266

    Article  Google Scholar 

  23. Kaur A (2019) A systematic literature review on empirical analysis of the relationship between code smells and software quality attributes. Arch Comput Methods Eng. https://doi.org/10.1007/s11831-019-09348-6

    Article  Google Scholar 

  24. 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. https://doi.org/10.1109/MOBILESoft.2017.29

  25. Kessentini W, Kessentini M, Sahraoui H, Bechikh S, Ouni A (2014) A cooperative parallel search-based software engineering approach for code-smells detection. IEEE Trans Software Eng 40(9):841–861. https://doi.org/10.1109/TSE.2014.2331057

    Article  Google Scholar 

  26. Khomh F, Penta MD, Guéhéneuc YG, Antoniol G (2012) An exploratory study of the impact of antipatterns on class change- and fault-proneness. Empir Softw Eng 17(3):243–275. https://doi.org/10.1007/s10664-011-9171-y

    Article  Google Scholar 

  27. Kitchenham B (2008) The role of replications in empirical software engineering—a word of warning. Empir Softw Eng 13(2):219–221. https://doi.org/10.1007/s10664-008-9061-0

    Article  Google Scholar 

  28. Kitchenham B, Charters S (2007) Guidelines for performing systematic literature reviews in software engineering. Tech. rep., Keele University and Durham University

  29. Kreimer J (2005) Adaptive detection of design flaws. In: Electronic notes in theoretical computer science, Research Group Programming Languages and Compilers, Department of Computer Science, University of Paderborn, Germany, vol 141, pp 117–136. https://doi.org/10.1016/j.entcs.2005.02.059

  30. Lacerda G, Petrillo F, Pimenta M, Guéhéneuc YG (2020) Code smells and refactoring: a tertiary systematic review of challenges and observations. J Syst Softw 167:110610. https://doi.org/10.1016/j.jss.2020.110610

    Article  Google Scholar 

  31. Landis JR, Koch GG (1977) The measurement of observer agreement for categorical data. Biometrics 33(1):159–174. https://doi.org/10.2307/2529310

    Article  MATH  Google Scholar 

  32. Lanza M, Marinescu R (2006) Object-oriented metrics in practice, vol 1. Springer. https://doi.org/10.1017/CBO9781107415324.004, http://arxiv.org/abs/1011.1669v3arXiv:1011.1669v3

  33. Mantyla M, Vanhanen J, Lassenius C (2004) Bad smells—humans as code critics. In: 20th IEEE international conference on software maintenance, 2004 Proceedings, pp 399–408. https://doi.org/10.1109/ICSM.2004.1357825

  34. Marinescu C, Marinescu R, Mihancea PF, Wettel R (2005) iplasma: an integrated platform for quality assessment of object-oriented design. In: In ICSM (industrial and tool volume). Society Press, pp 77–80

  35. Martin RC (2002) Agile software development: principles, patterns, and practices, 1st edn. Prentice Hall, Upper Saddle River

    Google Scholar 

  36. McHugh ML (2012) Interrater reliability: the kappa statistic. Biochem Med 22(3):276–282

    Article  MathSciNet  Google Scholar 

  37. Merino L, Ghafari M, Anslow C, Nierstrasz O (2018) A systematic literature review of software visualization evaluation. J Syst Softw 144:165–180. https://doi.org/10.1016/j.jss.2018.06.027

    Article  Google Scholar 

  38. Moha N, Guéhéneuc YG, Duchien L, Le Meur AF (2010) DECOR: a method for the specification and detection of code and design smells. IEEE Trans Softw Eng 36(1):20–36. https://doi.org/10.3390/e200503720

    Article  MATH  Google Scholar 

  39. Monperrus M, Bruch M, Mezini M (2010) Detecting missing method calls in object-oriented software. In: D’Hondt T (ed) ECOOP 2010—object-oriented programming. Springer, Berlin, pp 2–25

    Chapter  Google Scholar 

  40. Noblit G, Hare R (1988) Meta-ethnography: synthesizing qualitative studies. Qualitative research methods. SAGE Publications, Thousand Oaks

    Book  Google Scholar 

  41. Olbrich SM, Cruzes DS, Sjøberg DIK (2010) Are all code smells harmful? A study of god classes and brain classes in the evolution of three open source systems. In: 2010 IEEE international conference on software maintenance, pp 1–10

  42. Palomba F, Panichella A, Lucia AD, Oliveto R, Zaidman A (2016) A textual-based technique for smell detection. In: IEEE 24th International Conference on Program Comprehension (ICPC), pp 1–10. https://doi.org/10.1109/ICPC.2016.7503704

  43. Palomba F, Nucci DD, Panichella A, Zaidman A, Lucia AD (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. https://doi.org/10.1109/SANER.2017.7884659

  44. Rasool G, Arshad Z (2015) A review of code smell mining techniques. J Softw Evol Process 27(11):867–895. https://doi.org/10.3390/e200503721

    Article  Google Scholar 

  45. Rattan D, Bhatia R, Singh M (2013) Software clone detection: a systematic review. Inf Softw Technol 55(7):1165–1199. https://doi.org/10.3390/e200503722

    Article  Google Scholar 

  46. Sabir F, Palma F, Rasool G, Guéhéneuc YG, Moha N (2019) A systematic literature review on the detection of smells and their evolution in object-oriented and service-oriented systems. Softw Pract Exp 49(1):3–39

    Article  Google Scholar 

  47. Santos JAM, Rocha-Junior JB, Prates LCL, do Nascimento RS, Freitas MF, de Mendonça MG (2018) A systematic review on the code smell effect. J Syst Softw 144:450–477. https://doi.org/10.1016/j.jss.2018.07.035

    Article  Google Scholar 

  48. Shull FJ, Carver JC, Vegas S, Juristo N (2008) The role of replications in empirical software engineering. Empir Softw Eng 13(2):211–218. https://doi.org/10.1007/s10664-008-9060-1

    Article  Google Scholar 

  49. Singh S, Kaur S (2017) A systematic literature review: refactoring for disclosing code smells in object oriented software. Ain Shams Eng J. https://doi.org/10.1016/j.asej.2017.03.002

    Article  Google Scholar 

  50. Sirikul K, Soomlek C (2016) Automated detection of code smells caused by null checking conditions in Java programs. In: 2016 13th International Joint Conference on Computer Science and Software Engineering (JCSSE), pp 1–7. https://doi.org/10.1109/JCSSE.2016.7748884

  51. Travassos G, Shull F, Fredericks M, Basili VR (1999) Detecting defects in object-oriented designs: using reading techniques to increase software quality. In: Proceedings of the 14th ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications. ACM, New York, NY, USA, OOPSLA ’99, pp 47–56. https://doi.org/10.1145/320384.320389

  52. Tsantalis N, Chaikalis T, Chatzigeorgiou A (2008) JDeodorant: identification and removal of type-checking bad smells. In: CSMR 2008—12th European conference on software maintenance and reengineering, pp 329–331. https://doi.org/10.1109/CSMR.2008.4493342

  53. van Emden E, Moonen L (2002) Java quality assurance by detecting code smells. In: Ninth working conference on reverse engineering, 2002. Proceedings, pp 97–106. https://doi.org/10.1109/WCRE.2002.1173068

  54. Wake WC (2003) Refactoring workbook. Addison-Wesley Longman Publishing Co., Inc, Boston

    Google Scholar 

  55. Wasylkowski A, Zeller A, Lindig C (2007) Detecting object usage anomalies. In: Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering. ACM, Dubrovnik, Croatia. https://doi.org/10.1145/1287624.1287632

  56. Wohlin C (2014) Guidelines for snowballing in systematic literature studies and a replication in software engineering. In: Proceedings of the 18th international conference on Evaluation and Assessment in Software Engineering—EASE ’14, pp 1–10. https://doi.org/10.1145/2601248.2601268, http://arxiv.org/abs/1011.1669v3arXiv:1011.1669v3

  57. Yamashita A, Moonen L (2012) Do code smells reflect important maintainability aspects? In: IEEE International Conference on Software Maintenance, ICSM, pp 306–315. https://doi.org/10.1109/ICSM.2012.6405287

  58. 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. https://doi.org/10.1016/j.infsof.2013.08.002

    Article  Google Scholar 

  59. Zhang H, Babar MA, Tell P (2011) Identifying relevant studies in software engineering. Inf Softw Technol 53(6):625–637

    Article  Google Scholar 

  60. Zhang M, Hall T, Baddoo N (2010) Code Bad Smells: a review of current knowledge. J Softw Maint Evol 26(12):1172–1192

    Google Scholar 

Download references

Acknowledgements

This work was partially funded by the Portuguese Foundation for Science and Technology, under ISTAR’s projects UIDB/ 04466/2020 and UIDP/04466/2020.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to José Pereira dos Reis.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Appendices

Appendices

1.1 Appendix 1: Studies included in the review

ID

Title

Authors

Year

Publish type

Source title

S1

Java quality assurance by detecting code smells

E. van Emden; L. Moonen

2002

Conference

9th Working Conference on Reverse Engineering (WCRE)

S2

Insights into system-wide code duplication

Rieger, M., Ducasse, S., Lanza, M.

2004

Conference

Working Conference on Reverse Engineering, IEEE Computer Society Press

S3

Detection strategies: Metrics-based rules for detecting design flaws

R. Marinescu

2004

Conference

20th International Conference on Software Maintenance (ICSM). IEEE Computer Society Press

S4

Product metrics for automatic identification of “bad smell” design problems in Java source-code

M. J. Munro

2005

Conference

11th IEEE International Software Metrics Symposium (METRICS’05)

S5

Multi-criteria detection of bad smells in code with UTA method

Walter B., Pietrzak B.

2005

Conference

International Conference on Extreme Programming and Agile Processes in Software Engineering (XP)

S6

Adaptive detection of design flaws

Kreimer J.

2005

Conference

Fifth Workshop on Language Descriptions, Tools, and Applications (LDTA)

S7

Visualization-Based Analysis of Quality for Large-Scale Software Systems

G. Langelier, H.A. Sahraoui,; P. Poulin

2005

Conference

20th International Conference on Automated Software Engineering (ASE)

S8

Automatic generation of detection algorithms for design defects

Moha N., Guéhéneuc Y.-G., Leduc P.

2006

Conference

21st IEEE/ACM International Conference on Automated Software Engineering (ASE)

S9

Object-Oriented Metrics in Practice

M. Lanza; R. Marinescu

2006

Book

Springer-Verlag

S10

Detecting Object Usage Anomalies

Andrzej Wasylkowski; Andreas Zeller; Christian Lindig

2007

Conference

6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE)

S11

Empirically evaluating the usefulness of software visualization techniques in program comprehension activities

De F. Carneiro G., Orrico A.C.A., De Mendonça Neto M.G.

2007

Conference

VI Jornadas Iberoamericanas de Ingenieria de Software e Ingenieria del Conocimiento (JIISIC)

S12

A Catalogue of Lightweight Visualizations to Support Code Smell Inspection

Chris Parnin; Carsten Gorg; Ogechi Nnadi

2008

Conference

4th ACM Symposium on Software Visualization (SoftVis)

S13

A domain analysis to specify design defects and generate detection algorithms

Moha N., Guéhéneuc Y.-G., Le Meur A.-F., Duchien L.

2008

Conference

International Conference on Fundamental Approaches to Software Engineering (FASE)

S14

JDeodorant: Identification and removal of type-checking bad smells

Tsantalis N., Chaikalis T., Chatzigeorgiou A.

2008

Conference

European Conference on Software Maintenance and Reengineering (CSMR)

S15

Empirical evaluation of clone detection using syntax suffix trees

Raimar Falk, Pierre Frenzel, Rainer Koschke

2008

Journal

Empirical Software Engineering

S16

Visual Detection of Design Anomalies

K. Dhambri, H. Sahraoui,; P. Poulin

2008

Conference

12th European Conference on Software Maintenance and Reengineering (CSMR)

S17

Visually localizing design problems with disharmony maps

Richard Wettel; Michele Lanza

2008

Conference

4th ACM Symposium on Software Visualization (SoftVis)

S18

A Bayesian Approach for the Detection of Code and Design Smells

F. Khomh; S. Vaucher; Y. G. Gueheneuc; H. Sahraoui

2009

Conference

9th International Conference on Quality Software (QSIC)

S19

An Interactive Ambient Visualization for Code Smells

Emerson Murphy-Hill; Andrew P. Black

2010

Conference

5th International Symposium on Software Visualization (SoftVis)

S20

Learning from 6,000 Projects: Lightweight Cross-project Anomaly Detection

Natalie Gruska; Andrzej Wasylkowski; Andreas Zeller

2010

Conference

19th International Symposium on Software Testing and Analysis

S21

Identifying Code Smells with Multiple Concern Views

G. d. F. Carneiro; M. Silva; L. Mara; E. Figueiredo; C. Sant’Anna; A. Garcia; M. Mendonca

2010

Conference

Brazilian Symposium on Software Engineering (SBES)

S22

Reducing Subjectivity in Code Smells Detection: Experimenting with the Long Method

S. Bryton; F. Brito e Abreu; M. Monteiro

2010

Conference

7th International Conference on the Quality of Information and Communications Technology (QUATIC)

S23

DECOR: A method for the specification and detection of code and design smells

Moha N., Guéhéneuc Y.-G., Duchien L., Le Meur A.-F.

2010

Journal

IEEE Transactions on Software Engineering

S24

IDS: An immune-inspired approach for the detection of software design smells

Hassaine S., Khomh F., Guéhéneucy Y.-G., Hamel S.

2010

Conference

7th International Conference on the Quality of Information and Communications Technology (QUATIC)

S25

Detecting Missing Method Calls in Object-Oriented Software

Martin Monperrus Marcel Bruch Mira Mezini

2010

Conference

European Conference on Object-Oriented Programming (ECOOP)

S26

From a domain analysis to the specification and detection of code and design smells

Naouel Moha, Yann-Gaël Guéhéneuc, Anne-Françoise Le Meur, Laurence Duchien, Alban Tiberghien

2010

Journal

Formal Aspects of Computing

S27

BDTEX: A GQM-based Bayesian approach for the detection of antipatterns

Khomh F., Vaucher S., Guéhéneuc Y.-G., Sahraoui H.

2011

Journal

Journal of Systems and Software

S28

IDE-based Real-time Focused Search for Near-miss Clones

Minhaz F. Zibran; Chanchal K. Roy

2012

Conference

27th Annual ACM Symposium on Applied Computing (SAC)

S29

Detecting Bad Smells with Weight Based Distance Metrics Theory

J. Dexun; M. Peijun; S. Xiaohong; W. Tiantian

2012

Conference

2nd International Conference on Instrumentation, Measurement, Computer, Communication and Control (IMCCC)

S30

Analytical learning based on a meta-programming approach for the detection of object-oriented design defects

Mekruksavanich S., Yupapin P.P., Muenchaisri P.

2012

Journal

Information Technology Journal

S31

A New Design Defects Classification: Marrying Detection and Correction

Rim Mahouachi, Marouane Kessentini, Khaled Ghedira

2012

Conference

Fundamental Approaches to Software Engineering

S32

Clones in Logic Programs and How to Detect Them

Céline Dandois, Wim Vanhoof

2012

Conference

Logic-Based Program Synthesis and Transformation

S33

Smurf: A svm-based incremental anti-pattern detection approach

Maiga, A., Ali, N., Bhattacharya, N., Sabane, A., Guéhéneuc, Y-G, & Aimeur, E

2012

Conference

19th Working Conference on Reverse Engineering (WCRE)

S34

Support vector machines for anti- pattern detection

Maiga A, Ali N, Bhattacharya N, Sabané A, Guéhéneuc Y-G, Antoniol G, Aïmeur E

2012

Conference

27th IEEE/ACM International Conference on Automated Software Engineering (ASE)

S35

Detecting Missing Method Calls As Violations of the Majority Rule

Martin Monperrus; Mira Mezini

2013

Journal

ACM Transactions on Software Engineering Methodology

S36

Code Smell Detection: Towards a Machine Learning-Based Approach

F. A. Fontana; M. Zanoni; A. Marino; M. V. Mantyla;

2013

Conference

29th IEEE International Conference on Software Maintenance (ICSM)

S37

Identification of Refused Bequest Code Smells

E. Ligu; A. Chatzigeorgiou; T. Chaikalis; N. Ygeionomakis

2013

Conference

29th IEEE International Conference on Software Maintenance (ICSM)

S38

JSNOSE: Detecting JavaScript Code Smells

A. M. Fard; A. Mesbah

2013

Conference

13th International Working Conference on Source Code Analysis and Manipulation (SCAM)

S39

Interactive ambient visualizations for soft advice

Murphy-Hill E., Barik T., Black A.P.

2013

Journal

Information Visualization

S40

A novel approach to effective detection and analysis of code clones

Rajakumari K.E., Jebarajan T.

2013

Conference

3rd International Conference on Innovative Computing Technology (INTECH)

S41

Competitive coevolutionary code-smells detection

Boussaa M., Kessentini W., Kessentini M., Bechikh S., Ben Chikha S.

2013

Conference

International Symposium on Search Based Software Engineering (SSBSE)

S42

Detecting bad smells in source code using change history information

Palomba F., Bavota G., Di Penta M., Oliveto R., De Lucia A., Poshyvanyk D.

2013

Conference

28th International Conference on Automated Software Engineering (ASE). IEEE/ACM

S43

Code-Smell Detection As a Bilevel Problem

Dilan Sahin; Marouane Kessentini; Slim Bechikh; Kalyanmoy Deb

2014

Journal

ACM Transactions on Software Engineering Methodology

S44

Two level dynamic approach for Feature Envy detection

S. Kumar; J. K. Chhabra

2014

Conference

International Conference on Computer and Communication Technology (ICCCT).

S45

A Cooperative Parallel Search-Based Software Engineering Approach for Code-Smells Detection

Kessentini W., Kessentini M., Sahraoui H., Bechikh S., Ouni A.

2014

Journal

IEEE Transactions on Software Engineering

S46

SourceMiner: Towards an Extensible Multi-perspective Software Visualization Environment

Glauco de Figueiredo Carneiro, Manoel Gomes de Mendonça Neto

2014

Conference

International Conference on Enterprise Information Systems (ICEIS)

S47

Including Structural Factors into the Metrics-based Code Smells Detection

Bartosz Walter; Błażej Matuszyk; Francesca Arcelli Fontana

2015

Conference

XP’2015 Workshops

S48

Textual Analysis for Code Smell Detection

Fabio Palomba

2015

Conference

37th International Conference on Software Engineering

S49

Using Developers’ Feedback to Improve Code Smell Detection

Mario Hozano; Henrique Ferreira; Italo Silva; Baldoino Fonseca; Evandro Costa

2015

Conference

30th Annual ACM Symposium on Applied Computing (SAC)

S50

Code Bad Smell Detection through Evolutionary Data Mining

S. Fu; B. Shen

2015

Conference

2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)

S51

Mining Version Histories for Detecting Code Smells

F. Palomba; G. Bavota; M. D. Penta; R. Oliveto; D. Poshyvanyk; A. De Lucia

2015

Conference

IEEE Transactions on Software Engineering

S52

Detection and handling of model smells for MATLAB/simulink models

Gerlitz T., Tran Q.M., Dziobek C.

2015

Conference

CEUR Workshop Proceedings

S53

Experience report: Evaluating the effectiveness of decision trees for detecting code smells

Amorim L., Costa E., Antunes N., Fonseca B., Ribeiro M.

2015

Conference

26th International Symposium on Software Reliability Engineering (ISSRE)

S54

Detecting software design defects using relational association rule mining

Gabriela Czibula, Zsuzsanna Marian, Istvan Gergely Czibula

2015

Journal

Knowledge and Information Systems

S55

A Graph-based Approach to Detect Unreachable Methods in Java Software

Simone Romano; Giuseppe Scanniello; Carlo Sartiani; Michele Risi

2016

Conference

31st Annual ACM Symposium on Applied Computing (SAC)

S56

Comparing and experimenting machine learning techniques for code smell detection

Arcelli Fontana F., Mäntylä M.V., Zanoni M., Marino A.

2016

Journal

Empirical Software Engineering

S57

A Lightweight Approach for Detection of Code Smells

Ghulam Rasool, Zeeshan Arshad

2016

Journal

Arabian Journal for Science and Engineering

S58

Multi-objective code-smells detection using good and bad design examples

Usman Mansoor, Marouane Kessentini, Bruce R. Maxim, Kalyanmoy Deb

2016

Journal

Software Quality Journal

S59

Continuous Detection of Design Flaws in Evolving Object-oriented Programs Using Incremental Multi-pattern Matching

Sven Peldszus; Géza Kulcsár; Malte Lochau; Sandro Schulze

2016

Conference

31st IEEE/ACM International Conference on Automated Software Engineering (ASE)

S60

Metric and rule based automated detection of antipatterns in object-oriented software systems

M. T. Aras, Y. E. Selçuk

2016

Conference

2016 7th International Conference on Computer Science and Information Technology (CSIT)

S61

Automated detection of code smells caused by null checking conditions in Java programs

K. Sirikul, C. Soomlek

2016

Conference

2016 13th International Joint Conference on Computer Science and Software Engineering (JCSSE)

S62

A textual-based technique for Smell Detection

F. Palomba, A. Panichella, A. De Lucia, R. Oliveto, A. Zaidman

2016

Conference

24th International Conference on Program Comprehension (ICPC)

S63

Detecting Code Smells in Python Programs

Z. Chen, L. Chen, W. Ma, B. Xu

2016

Conference

2016 International Conference on Software Analysis; Testing and Evolution (SATE)

S64

Interactive Code Smells Detection: An Initial Investigation

Mkaouer, Mohamed Wiem

2016

Conference

Symposium on Search-Based Software Engineering (SSBSE)

S65

Detecting shotgun surgery bad smell using similarity measure distribution model

Saranya G., Khanna Nehemiah H., Kannan A., Vimala S.

2016

Journal

Asian Journal of Information Technology

S66

Detecting Android Smells Using Multi-objective Genetic Programming

Marouane Kessentini; Ali Ouni

2017

Conference

4th International Conference on Mobile Software Engineering and Systems (MOBILESoft)

S67

Smells Are Sensitive to Developers!: On the Efficiency of (Un)Guided Customized Detection

Mario Hozano; Alessandro Garcia; Nuno Antunes; Baldoino Fonseca; Evandro Costa

2017

Conference

25th International Conference on Program Comprehension (ICPC)

S68

An automated code smell and anti-pattern detection approach

S. Velioglu, Y. E. Selçuk

2017

Conference

2017 IEEE 15th International Conference on Software Engineering Research; Management and Applications (SERA)

S69

Lightweight detection of Android-specific code smells: The aDoctor project

Palomba F., Di Nucci D., Panichella A., Zaidman A., De Lucia A.

2017

Conference

24th IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER)

S70

On the Use of Smelly Examples to Detect Code Smells in JavaScript

Ian Shoenberger, Mohamed Wiem Mkaouer, Marouane Kessentini

2017

Conference

European Conference on the Applications of Evolutionary Computation (EvoApplications)

S71

A Support Vector Machine Based Approach for Code Smell Detection

A. Kaur; S. Jain; S. Goel

2017

Conference

International Conference on Machine Learning and Data Science (MLDS)

S72

c-JRefRec: Change-based identification of Move Method refactoring opportunities

N. Ujihara; A. Ouni; T. Ishio; K. Inoue

2017

Conference

24th International Conference on Software Analysis, Evolution and Reengineering (SANER)

S73

A Feature Envy Detection Method Based on Dataflow Analysis

W. Chen; C. Liu; B. Li

2018

Conference

42nd Annual Computer Software and Applications Conference (COMPSAC)

S74

A Hybrid Approach To Detect Code Smells using Deep Learning

Hadj-Kacem, M; Bouassida, N

2018

Conference

13th International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE)

S75

Deep Learning Based Feature Envy Detection

Hui Liu and Zhifeng Xu and Yanzhen Zou

2018

Conference

33rd ACM/IEEE International Conference on Automated Software Engineering (ASE)

S76

Detecting Bad Smells in Software Systems with Linked Multivariate Visualizations

H. Mumtaz; F. Beck; D. Weiskopf

2018

Conference

Working Conference on Software Visualization (VisSoft)

S77

Detecting code smells using machine learning techniques: Are we there yet?

D. Di Nucci; F. Palomba; D. A. Tamburri; A. Serebrenik; A. De Lucia

2018

Conference

25th International Conference on Software Analysis, Evolution and Reengineering (SANER)

S78

Exploring the Use of Rapid Type Analysis for Detecting the Dead Method Smell in Java Code

S. Romano; G. Scanniello

2018

Conference

44th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)

S79

Model level code smell detection using EGAPSO based on similarity measures

Saranya, G; Nehemiah, HK; Kannan, A; Nithya, V

2018

Journal

Alexandria Engineering Journal

S80

Software Code Smell Prediction Model Using Shannon, Renyi and Tsallis Entropies

Gupta, A; Suri, B; Kumar, V; Misra, S; Blazauskas, T; Damasevicius, R

2018

Journal

Entropy

S81

Towards Feature Envy Design Flaw Detection at Block Level

Ã. Kiss; P. F. Mihancea

2018

Conference

International Conference on Software Maintenance and Evolution (ICSME)

S82

Understanding metric-based detectable smells in Python software: A comparative study

Chen, ZF; Chen, L; Ma, WWY; Zhou, XY; Zhou, YM; Xu, BW

2018

Journal

Information and Software Technology

S83

SP-J48: a novel optimization and machine-learning-based approach for solving complex problems: special application in software engineering for detecting code smells

Amandeep Kaur, Sushma Jain, Shivani Goel

2019

Journal

Neural Computing and Applications

1.2 Appendix 2: Studies after applying inclusion and exclusion criteria (phase 3)

ID

Title

Authors

Year

Publish type

Source title

1

Java quality assurance by detecting code smells

E. van Emden; L. Moonen

2002

Conference

9th Working Conference on Reverse Engineering (WCRE)

2

Insights into system-wide code duplication

Rieger, M., Ducasse, S., Lanza, M.

2004

Conference

11th Working Conference on Reverse Engineering (WCRE)

3

Detection strategies: Metrics-based rules for detecting design flaws

R. Marinescu

2004

Conference

20th International Conference on Software Maintenance (ICSM)

4

Product metrics for automatic identification of “bad smell” design problems in Java source-code

M. J. Munro

2005

Conference

11th IEEE International Software Metrics Symposium (METRICS’05)

5

Multi-criteria detection of bad smells in code with UTA method

Walter B., Pietrzak B.

2005

Conference

International Conference on Extreme Programming and Agile Processes in Software Engineering (XP)

6

Adaptive detection of design flaws

Kreimer J.

2005

Conference

Fifth Workshop on Language Descriptions, Tools, and Applications (LDTA)

7

Visualization-Based Analysis of Quality for Large-Scale Software Systems

G. Langelier, H.A. Sahraoui,; P. Poulin

2005

Conference

20th International Conference on Automated Software Engineering (ASE)

8

Automatic generation of detection algorithms for design defects

Moha N., Guéhéneuc Y.-G., Leduc P.

2006

Conference

21st IEEE/ACM International Conference on Automated Software Engineering (ASE)

9

Object-Oriented Metrics in Practice

M. Lanza; R. Marinescu

2006

Book

Springer-Verlag

10

Detecting Object Usage Anomalies

Andrzej Wasylkowski; Andreas Zeller; Christian Lindig

2007

Conference

6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE)

11

Using Concept Analysis to Detect Co-change Patterns

Tudor Girba; Stephane Ducasse; Adrian Kuhn; Radu Marinescu; Ratiu Daniel

2007

Conference

9th International Workshop on Principles of Software Evolution: In Conjunction with the 6th ESEC/FSE Joint Meeting

12

Empirically evaluating the usefulness of software visualization techniques in program comprehension activities

De F. Carneiro G., Orrico A.C.A., De Mendonça Neto M.G.

2007

Conference

VI Jornadas Iberoamericanas de Ingenieria de Software e Ingenieria del Conocimiento (JIISIC)

13

A Catalogue of Lightweight Visualizations to Support Code Smell Inspection

Chris Parnin; Carsten Gorg; Ogechi Nnadi

2008

Conference

4th ACM Symposium on Software Visualization (SoftVis)

14

A domain analysis to specify design defects and generate detection algorithms

Moha N., Guéhéneuc Y.-G., Le Meur A.-F., Duchien L.

2008

Conference

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

15

JDeodorant: Identification and removal of type-checking bad smells

Tsantalis N., Chaikalis T., Chatzigeorgiou A.

2008

Conference

European Conference on Software Maintenance and Reengineering (CSMR)

16

A Survey about the Intent to Use Visual Defect Annotations for Software Models

Jörg Rech, Axel Spriestersbach

2008

Conference

Model Driven Architecture – Foundations and Applications

17

Empirical evaluation of clone detection using syntax suffix trees

Raimar Falk, Pierre Frenzel, Rainer Koschke

2008

Journal

Empirical Software Engineering

18

Visual Detection of Design Anomalies

K. Dhambri, H. Sahraoui, P. Poulin

2008

Conference

12th European Conference on Software Maintenance and Reengineering (CSMR)

19

Detecting bad smells in object oriented design using design change propagation probability matrix

A. Rao; K. Raddy

2008

Conference

International MultiConference of Engineers and Computer Scientists (IMECS)

20

Visually localizing design problems with disharmony maps

Richard Wettel; Michele Lanza

2008

Conference

4th ACM Symposium on Software visualization (SoftVis)

21

A Bayesian Approach for the Detection of Code and Design Smells

F. Khomh; S. Vaucher; Y. G. Gueheneuc; H. Sahraoui

2009

Conference

2009 Ninth International Conference on Quality Software

22

A Flexible Framework for Quality Assurance of Software Artefacts with Applications to Java, UML, and TTCN-3 Test Specifications

J. Nodler; H. Neukirchen; J. Grabowski

2009

Conference

2009 International Conference on Software Testing Verification and Validation (ICST)

23

An Interactive Ambient Visualization for Code Smells

Emerson Murphy-Hill; Andrew P. Black

2010

Conference

5th International Symposium on Software Visualization (SoftVis)

24

Learning from 6,000 Projects: Lightweight Cross-project Anomaly Detection

Natalie Gruska; Andrzej Wasylkowski; Andreas Zeller

2010

Conference

19th International Symposium on Software Testing and Analysis (ISSTA)

25

Identifying Code Smells with Multiple Concern Views

G. d. F. Carneiro; M. Silva; L. Mara; E. Figueiredo; C. Sant’Anna; A. Garcia; M. Mendonca

2010

Conference

Brazilian Symposium on Software Engineering (SBES)

26

Reducing Subjectivity in Code Smells Detection: Experimenting with the Long Method

S. Bryton; F. Brito e Abreu; M. Monteiro

2010

Conference

7th International Conference on the Quality of Information and Communications Technology (QUATIC)

27

DECOR: A method for the specification and detection of code and design smells

Moha N., Guéhéneuc Y.-G., Duchien L., Le Meur A.-F.

2010

Journal

IEEE Transactions on Software Engineering

28

IDS: An immune-inspired approach for the detection of software design smells

Hassaine S., Khomh F., Guéhéneucy Y.-G., Hamel S.

2010

Conference

7th International Conference on the Quality of Information and Communications Technology (QUATIC)

29

Detecting Missing Method Calls in Object-Oriented Software

Martin Monperrus Marcel Bruch Mira Mezini

2010

Conference

European Conference on Object-Oriented Programming (ECOOP)

30

From a domain analysis to the specification and detection of code and design smells

Naouel Moha, Yann-Gaël Guéhéneuc, Anne-Françoise Le Meur, Laurence Duchien, Alban Tiberghien

2010

Journal

Formal Aspects of Computing

31

BDTEX: A GQM-based Bayesian approach for the detection of antipatterns

Khomh F., Vaucher S., Guéhéneuc Y.-G., Sahraoui H.

2011

Journal

Journal of Systems and Software

32

An Approach for Source Code Classification Using Software Metrics and Fuzzy Logic to Improve Code Quality with Refactoring Techniques

Pornchai Lerthathairat, Nakornthip Prompoon

2011

Conference

2nd International Conference on Software Engineering and Computer Systems (ICSECS)

33

IDE-based Real-time Focused Search for Near-miss Clones

Minhaz F. Zibran; Chanchal K. Roy

2012

Conference

27th Annual ACM Symposium on Applied Computing (SAC)

34

Detecting Bad Smells with Weight Based Distance Metrics Theory

J. Dexun; M. Peijun; S. Xiaohong; W. Tiantian

2012

Conference

Second International Conference on Instrumentation, Measurement, Computer, Communication and Control (IMCCC)

35

Analytical learning based on a meta-programming approach for the detection of object-oriented design defects

Mekruksavanich S., Yupapin P.P., Muenchaisri P.

2012

Journal

Information Technology Journal

36

Automatic identification of the anti-patterns using the rule-based approach

Polášek I., Snopko S., Kapustík I.

2012

Conference

10th Jubilee International Symposium on Intelligent Systems and Informatics (SISY)

37

A New Design Defects Classification: Marrying Detection and Correction

Rim Mahouachi, Marouane Kessentini, Khaled Ghedira

2012

Conference

International Conference on Fundamental Approaches to Software Engineering (FASE)

38

Clones in Logic Programs and How to Detect Them

Céline Dandois, Wim Vanhoof

2012

Conference

International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR)

39

Smurf: A svm-based incremental anti-pattern detection approach

Maiga, A., Ali, N., Bhattacharya, N., Sabane, A., Guéhéneuc, Y. G., & Aimeur, E

2012

Conference

19th Working Conference on Reverse Engineering (WCRE)

40

Support vector machines for anti- pattern detection

Maiga A, Ali N, Bhattacharya N, Sabané A, Guéhéneuc Y-G, Antoniol G, Aïmeur E

2012

Conference

27th IEEE/ACM International Conference on Automated Software Engineering (ASE)

41

Detecting Missing Method Calls As Violations of the Majority Rule

Martin Monperrus; Mira Mezini

2013

Journal

ACM Transactions on Software Engineering Methodology

42

Code Smell Detection: Towards a Machine Learning-Based Approach

F. A. Fontana; M. Zanoni; A. Marino; M. V. Mantyla;

2013

Conference

29th IEEE International Conference on Software Maintenance (ICSM)

43

Identification of Refused Bequest Code Smells

E. Ligu; A. Chatzigeorgiou; T. Chaikalis; N. Ygeionomakis

2013

Conference

29th IEEE International Conference on Software Maintenance (ICSM)

44

JSNOSE: Detecting JavaScript Code Smells

A. M. Fard; A. Mesbah

2013

Conference

13th International Working Conference on Source Code Analysis and Manipulation (SCAM)

45

Interactive ambient visualizations for soft advice

Murphy-Hill E., Barik T., Black A.P.

2013

Journal

Information Visualization

46

A novel approach to effective detection and analysis of code clones

Rajakumari K.E., Jebarajan T.

2013

Conference

3rd International Conference on Innovative Computing Technology (INTECH)

47

Competitive coevolutionary code-smells detection

Boussaa M., Kessentini W., Kessentini M., Bechikh S., Ben Chikha S.

2013

Conference

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

48

Detecting bad smells in source code using change history information

Palomba F., Bavota G., Di Penta M., Oliveto R., De Lucia A., Poshyvanyk D.

2013

Conference

28th IEEE/ACM International Conference on Automated Software Engineering (ASE)

49

Code-Smell Detection As a Bilevel Problem

Dilan Sahin; Marouane Kessentini; Slim Bechikh; Kalyanmoy Deb

2014

Journal

ACM Trans. Softw. Eng. Methodol.

50

Two level dynamic approach for Feature Envy detection

S. Kumar; J. K. Chhabra

2014

Conference

International Conference on Computer and Communication Technology (ICCCT)

51

A Cooperative Parallel Search-Based Software Engineering Approach for Code-Smells Detection

Kessentini W., Kessentini M., Sahraoui H., Bechikh S., Ouni A.

2014

Journal

IEEE Transactions on Software Engineering

52

SourceMiner: Towards an Extensible Multi-perspective Software Visualization Environment

Glauco de Figueiredo Carneiro, Manoel Gomes de Mendonça Neto

2014

Conference

International Conference on Enterprise Information Systems (ICEIS)

53

Including Structural Factors into the Metrics-based Code Smells Detection

Bartosz Walter; Błażej Matuszyk; Francesca Arcelli Fontana

2015

Conference

XP’2015 Workshops

54

Textual Analysis for Code Smell Detection

Fabio Palomba

2015

Conference

37th International Conference on Software Engineering (ICSE)

55

Using Developers’ Feedback to Improve Code Smell Detection

Mario Hozano; Henrique Ferreira; Italo Silva; Baldoino Fonseca; Evandro Costa

2015

Conference

30th Annual ACM Symposium on Applied Computing (SAC)

56

Code Bad Smell Detection through Evolutionary Data Mining

S. Fu; B. Shen

2015

Conference

2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)

57

JSpIRIT: a flexible tool for the analysis of code smells

S. Vidal; H. Vazquez; J. A. Diaz-Pace; C. Marcos; A. Garcia; W. Oizumi

2015

Conference

34th International Conference of the Chilean Computer Science Society (SCCC)

58

Mining Version Histories for Detecting Code Smells

F. Palomba; G. Bavota; M. D. Penta; R. Oliveto; D. Poshyvanyk; A. De Lucia

2015

Conference

IEEE Transactions on Software Engineering

59

Detection and handling of model smells for MATLAB/simulink models

Gerlitz T., Tran Q.M., Dziobek C.

2015

Conference

CEUR Workshop Proceedings

60

Experience report: Evaluating the effectiveness of decision trees for detecting code smells

Amorim L., Costa E., Antunes N., Fonseca B., Ribeiro M.

2015

Conference

26th International Symposium on Software Reliability Engineering (ISSRE)

61

Detecting software design defects using relational association rule mining

Gabriela Czibula, Zsuzsanna Marian, Istvan Gergely Czibula

2015

Journal

Knowledge and Information Systems

62

A Graph-based Approach to Detect Unreachable Methods in Java Software

Simone Romano; Giuseppe Scanniello; Carlo Sartiani; Michele Risi

2016

Conference

31st Annual ACM Symposium on Applied Computing (SAC)

63

Comparing and experimenting machine learning techniques for code smell detection

Arcelli Fontana F., Mäntylä M.V., Zanoni M., Marino A.

2016

Journal

Empirical Software Engineering

64

A Lightweight Approach for Detection of Code Smells

Ghulam Rasool, Zeeshan Arshad

2016

Journal

Arabian Journal for Science and Engineering

65

Multi-objective code-smells detection using good and bad design examples

Usman Mansoor, Marouane Kessentini, Bruce R. Maxim, Kalyanmoy Deb

2016

Journal

Software Quality Journal

66

Continuous Detection of Design Flaws in Evolving Object-oriented Programs Using Incremental Multi-pattern Matching

Sven Peldszus; Géza Kulcsár; Malte Lochau; Sandro Schulze

2016

Conference

31st IEEE/ACM International Conference on Automated Software Engineering (ASE)

67

Metric and rule based automated detection of antipatterns in object-oriented software systems

M. T. Aras, Y. E. Selçuk

2016

Conference

7th International Conference on Computer Science and Information Technology (CSIT)

68

Automated detection of code smells caused by null checking conditions in Java programs

K. Sirikul, C. Soomlek

2016

Conference

13th International Joint Conference on Computer Science and Software Engineering (JCSSE)

69

A textual-based technique for Smell Detection

F. Palomba, A. Panichella, A. De Lucia, R. Oliveto, A. Zaidman

2016

Conference

24th International Conference on Program Comprehension (ICPC)

70

Detecting Code Smells in Python Programs

Z. Chen, L. Chen, W. Ma, B. Xu

2016

Conference

International Conference on Software Analysis, Testing and Evolution (SATE)

71

DT : a detection tool to automatically detect code smell in software project

Liu, Xinghua; Zhang, Cheng

2016

Conference

4th International Conference on Machinery, Materials and Information Technology Applications

72

Interactive Code Smells Detection: An Initial Investigation

Mkaouer, Mohamed Wiem

2016

Conference

Symposium on Search-Based Software Engineering (SSBSE)

73

Automatic detection of bad smells from code changes

Hammad M., Labadi A.

2016

Journal

International Review on Computers and Software

74

Detecting shotgun surgery bad smell using similarity measure distribution model

Saranya G., Khanna Nehemiah H., Kannan A., Vimala S.

2016

Journal

Asian Journal of Information Technology

75

Detecting Android Smells Using Multi-objective Genetic Programming

Marouane Kessentini; Ali Ouni

2017

Conference

4th International Conference on Mobile Software Engineering and Systems (MOBILESoft)

76

Smells Are Sensitive to Developers!: On the Efficiency of (Un)Guided Customized Detection

Mario Hozano; Alessandro Garcia; Nuno Antunes; Baldoino Fonseca; Evandro Costa

2017

Conference

25th International Conference on Program Comprehension

77

An arc-based approach for visualization of code smells

M. Steinbeck

2017

Conference

24th International Conference on Software Analysis; Evolution and Reengineering (SANER). IEEE

78

An automated code smell and anti-pattern detection approach

S. Velioglu, Y. E. Selçuk

2017

Conference

15th International Conference on Software Engineering Research; Management and Applications (SERA)

79

Lightweight detection of Android-specific code smells: The aDoctor project

Palomba F., Di Nucci D., Panichella A., Zaidman A., De Lucia A.

2017

Conference

24th IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER)

80

On the Use of Smelly Examples to Detect Code Smells in JavaScript

Ian Shoenberger, Mohamed Wiem Mkaouer, Marouane Kessentini

2017

Conference

European Conference on the Applications of Evolutionary Computation (EvoApplications)

81

A Support Vector Machine Based Approach for Code Smell Detection

A. Kaur; S. Jain; S. Goel

2017

Conference

International Conference on Machine Learning and Data Science (MLDS)

82

An ontology-based approach to analyzing the occurrence of code smells in software

Da Silva Carvalho, L.P., Novais, R., Do Nascimento Salvador, L., De Mendonça Neto, M.G.

2017

Conference

19th International Conference on Enterprise Information Systems (ICEIS)

83

Automatic multiprogramming bad smell detection with refactoring

Verma, A; Kumar, A; Kaur, I

2017

Journal

International Journal of Advanced and Applied Sciences

84

c-JRefRec: Change-based identification of Move Method refactoring opportunities

N. Ujihara; A. Ouni; T. Ishio; K. Inoue

2017

Conference

24th International Conference on Software Analysis, Evolution and Reengineering (SANER)

85

Finding bad code smells with neural network models

Kim, D.K.

2017

Journal

International Journal of Electrical and Computer Engineering

86

Metric based detection of refused bequest code smell

B. M. Merzah; Y. E. Selçuk

2017

Conference

9th International Conference on Computational Intelligence and Communication Networks (CICN)

87

Systematic exhortation of code smell detection using JSmell for Java source code

M. Sangeetha; P. Sengottuvelan

2017

Conference

International Conference on Inventive Systems and Control (ICISC)

88

A Feature Envy Detection Method Based on Dataflow Analysis

W. Chen; C. Liu; B. Li

2018

Conference

42nd Annual Computer Software and Applications Conference (COMPSAC)

89

A Hybrid Approach To Detect Code Smells using Deep Learning

Hadj-Kacem, M; Bouassida, N

2018

Conference

13th International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE)

90

Automatic detection of feature envy using machine learning techniques

Özkalkan, Z., Aydin, K., Tetik, H.Y., Sağlam, R.B.

2018

Conference

12th Turkish National Software Engineering Symposium

91

Code-smells identification by using PSO approach

Ramesh, G., Mallikarjuna Rao, C.

2018

Journal

International Journal of Recent Technology and Engineering

92

Deep Learning Based Feature Envy Detection

Hui Liu and Zhifeng Xu and Yanzhen Zou

2018

Conference

33rd ACM/IEEE International Conference on Automated Software Engineering (ASE)

93

Detecting Bad Smells in Software Systems with Linked Multivariate Visualizations

H. Mumtaz; F. Beck; D. Weiskopf

2018

Conference

Working Conference on Software Visualization (VisSoft)

94

Detecting code smells using machine learning techniques: Are we there yet?

D. Di Nucci; F. Palomba; D. A. Tamburri; A. Serebrenik; A. De Lucia

2018

Conference

25th International Conference on Software Analysis, Evolution and Reengineering (SANER)

95

DT: An Upgraded Detection Tool to Automatically Detect Two Kinds of Code Smell: Duplicated Code and Feature Envy

Xinghua Liu and Cheng Zhang

2018

Conference

International Conference on Geoinformatics and Data Analysis

96

Exploring the Use of Rapid Type Analysis for Detecting the Dead Method Smell in Java Code

S. Romano; G. Scanniello

2018

Conference

2018 44th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)

97

Model level code smell detection using EGAPSO based on similarity measures

Saranya, G; Nehemiah, HK; Kannan, A; Nithya, V

2018

Journal

Alexandria Engineering Journal

98

Software Code Smell Prediction Model Using Shannon, Renyi and Tsallis Entropies

Gupta, A; Suri, B; Kumar, V; Misra, S; Blazauskas, T; Damasevicius, R

2018

Journal

Entropy

99

Towards Feature Envy Design Flaw Detection at Block Level

Ã. Kiss; P. F. Mihancea

2018

Conference

International Conference on Software Maintenance and Evolution (ICSME)

100

Understanding metric-based detectable smells in Python software: A comparative study

Chen, ZF; Chen, L; Ma, WWY; Zhou, XY; Zhou, YM; Xu, BW

2018

Journal

Information and Software Technology

101

SP-J48: a novel optimization and machine-learning-based approach for solving complex problems: special application in software engineering for detecting code smells

Amandeep Kaur, Sushma Jain, Shivani Goel

2019

Journal

Neural Computing and Applications

102

Visualizing code bad smells

Hammad, M., Alsofriya, S.

2019

Journal

International Journal of Advanced Computer Science and Applications

1.3 Appendix 3: Quality assessment

Study

QC1

QC2

QC3

QC4

QC5

QC6

QC7

QC8

Total

Venue quality

Data collected

Findings

Recognized relevance

Validation

Replication

Evaluation

Visualization

S1

1

1

1

1

0

0

1

1

6

S2

1

1

1

1

0

0

0

1

5

S3

1

1

1

1

1

0

1

0

6

S4

1

0

1

1

0

0

1

0

4

S5

1

1

1

1

0

0

0

0

4

S6

1

0

1

1

1

0

1

0

5

S7

1

0

1

1

0

0

1

1

5

S8

1

1

1

1

1

0

1

0

6

S9

1

1

1

1

0

0

0

1

5

S10

1

1

1

1

0

0

1

0

5

S11

0

1

1

1

0

0

0

0

3

S12

0

1

1

0

0

0

1

1

4

S13

0

1

1

1

0

0

0

1

4

S14

1

1

1

1

1

0

1

0

6

S15

1

1

1

1

0

0

1

0

5

S16

0

0

1

0

0

0

1

1

3

S17

1

1

1

1

1

0

1

0

6

S18

1

1

1

1

0

0

1

1

6

S19

0

1

1

1

0

0

0

0

3

S20

0

1

1

1

0

0

0

1

4

S21

1

1

1

1

1

1

1

0

7

S22

1

0

1

1

0

0

0

0

3

S23

1

0

1

1

0

0

0

1

4

S24

1

0

1

1

1

0

1

0

5

S25

0

1

1

1

0

0

1

1

5

S26

1

0

1

1

0

0

1

0

4

S27

1

1

1

1

1

0

1

0

6

S28

1

1

1

1

1

0

1

0

6

S29

1

1

1

1

0

0

1

0

5

S30

1

1

1

1

1

0

1

0

6

S31

1

1

1

1

1

1

1

0

7

S32

0

0

1

0

0

0

0

0

1

S33

1

1

1

1

1

0

1

0

6

S34

0

1

1

1

0

0

1

0

4

S35

1

1

1

1

1

0

1

0

6

S36

1

0

1

1

0

0

0

0

3

S37

1

1

1

1

1

0

1

0

6

S38

1

1

1

0

0

0

1

0

4

S39

1

0

1

1

1

0

1

0

5

S40

1

1

1

1

1

0

1

0

6

S41

1

1

1

1

0

0

1

0

5

S42

1

1

1

1

0

0

1

0

5

S43

1

1

1

1

0

0

0

0

4

S44

1

1

1

1

1

1

1

0

7

S45

1

0

1

1

0

0

1

1

5

S46

0

1

1

1

0

0

0

1

4

S47

0

1

1

1

1

0

1

0

5

S48

1

1

1

1

1

0

1

0

6

S49

1

1

1

1

1

0

1

0

6

S50

0

1

1

1

1

0

1

0

5

S51

1

1

1

1

1

0

1

0

6

S52

1

1

1

1

0

0

1

1

6

S53

0

1

1

1

1

0

1

0

5

S54

1

1

1

1

1

0

1

0

6

S55

1

1

1

1

1

0

1

0

6

S56

1

1

1

1

1

0

1

0

6

S57

0

0

1

1

0

0

0

0

2

S58

1

1

1

1

1

1

1

0

7

S59

0

1

1

1

0

0

1

0

4

S60

1

1

1

1

1

0

1

0

6

S61

1

1

1

1

1

0

0

0

5

S62

1

1

1

1

1

0

1

0

6

S63

1

1

1

1

1

1

1

0

7

S64

0

1

1

1

0

0

1

1

5

S65

1

1

1

1

1

0

1

0

6

S66

1

1

1

1

1

1

1

0

7

S67

0

1

1

1

1

0

1

0

5

S68

0

1

1

0

1

0

1

0

4

S69

1

1

1

1

1

0

1

0

6

S70

0

1

1

1

0

0

1

0

4

S71

0

0

1

1

1

0

0

0

3

S72

0

1

1

1

1

0

1

0

5

S73

0

1

1

0

0

0

1

0

3

S74

1

1

1

0

1

0

1

0

5

S75

0

1

1

1

1

0

1

0

5

S76

1

1

1

1

1

0

1

0

6

S77

0

0

1

0

0

0

0

1

2

S78

1

1

1

1

1

0

1

0

6

S79

0

1

1

1

0

1

1

0

5

S80

0

1

1

1

1

0

1

0

5

S81

0

1

1

1

1

0

1

0

5

S82

1

1

1

0

0

0

0

0

3

S83

0

0

1

0

0

0

1

0

2

S84

0

1

1

1

1

0

1

0

5

S85

0

1

1

0

0

0

1

0

3

S86

0

1

1

0

0

0

0

0

2

S87

0

0

1

0

0

0

0

0

1

S88

1

1

1

0

1

0

1

0

5

S89

1

1

1

1

1

0

1

0

6

S90

0

1

1

0

0

0

1

0

3

S91

0

0

1

0

0

0

0

0

1

S92

1

1

1

1

1

0

1

0

6

S93

1

1

1

1

0

0

0

1

5

S94

0

1

1

1

1

0

1

0

5

S95

0

1

1

0

1

0

0

0

3

S96

1

1

1

1

1

0

1

0

6

S97

0

1

1

1

1

0

1

0

5

S98

0

1

1

1

0

0

1

0

4

S99

1

1

1

1

1

0

0

1

6

S100

1

1

1

1

0

1

1

0

6

S101

1

1

1

1

1

0

1

0

6

S102

0

0

1

1

0

0

1

0

3

Total

63

83

102

85

54

8

78

18

491

1.4 Appendix 4: Description of code smells detected in the studies, according to the authors

Code smell

Description

References

Alternative Classes with Different Interface

One class supports different classes, but their interface is different

[18, 30]

AntiSingleton

A class that provides mutable class variables, which consequently could be used as global variables

[26]

God Class (Large Class or Blob)

Class that has many responsibilities and consequently contains many methods and variables. The same Single Responsibility Principle (SRP) also applies in this case

[18, 30]

Brain Class

Class that tends to centralize the functionality of the system and consequently complex. They are therefore assumed to be difficult to understand and maintain. However, unlike God Classes, Brain Classes do not use much data from foreign classes and are slightly more cohesive

[32, 41]

Brain Method

Often a method starts out as a “normal” method, but due to more and more functionality being added gets out of control, making it difficult to understand or maintain. Brain methods tend to centralize the functionality of a class

[32]

Careless Cleanup

The exception resource can be interrupted by another exception

[21]

Class Data Should Be Private

A class that exposes its fields, thus violating the principle of encapsulation

[26]

Closure Smells

Nested functions declared in JavaScript, are called closures. Closures make it possible to emulate object-oriented notions, such as public, private members, and privileged members. Inner functions have access to the parameters and variables—except for the this and argument variables—of the functions in which they are nested, even after the outer function has returned. Four smells related to the concept of function closures (long scope chaining, closures in loops, variable name conflict in closures, accessing the this reference in closures)

[14]

Code clone/Duplicated code

Consists of equal or very similar passages in different fragments of the same code base

[18, 30]

Comments

Comments should be used with care as they are generally not required. Whenever it is necessary to insert a comment, it is worth checking if the code cannot be more expressive

[18, 30]

Complex Class

A class that has (at least) one large and complex method, in terms of cyclomatic complexity and LOCs

[26]

Complex Container Comprehension

A container comprehension (including list comprehension, set comprehension, dictionary comprehension, and generator expression) that is too complex

[11]

Complex List Comprehension

A list comprehension that is too complex. List comprehensions in Python provide a concise and efficient way to create new lists. However, when list comprehensions contain complex expressions, they are no longer clear. Apparently, it is hard to analyze control flows of complex list comprehensions

[11]

Coupling between JavaScript, HTML, and CSS

In web applications, HTML is meant for presenting content and structure, CSS for styling, and JavaScript for functional behaviour. It is a well-established programming technique, known as division of concerns, to hold these three entities apart. Unfortunately, JavaScript code is frequently mixed with markup and styling code by web developers, which negatively affects software understanding, maintenance and debugging efforts in web applications

[14]

Data class

A class that only acts as a data container, without any behaviour. Other classes are typically responsible for manipulating their data, which is the case of Feature Envy,

[18, 30]

Data Clump

Data structures that always appear together, and the entire collection loses its sense when one of the elements is not present

[18, 30]

Dead Code

Characterized by a variable, attribute, or code fragment that is not used anywhere. Typically it is a result of a change in code with insufficient cleaning

[30, 54]

Delegator

Overuse of delegation or misuse of inheritance

[29]

Dispersed Coupling

Refers to a method which is tied to many operations dispersed among many classes throughout the system

[32]

Divergent Change

A single class needs to be changed for many reasons. This is a strong indication that it is not sufficiently cohesive and must be divided

[18, 30]

Dummy Handler

Dummy handler is only used for viewing the exception but it will not handle the exception

[21]

Empty Catch Block

When the catch block is left blank in the catch statement

[21]

Exception thrown in the finally block

How to handle the exception thrown inside the finally block of another try catch statement

[21]

Excessive Global Variables

Global variables can be accessed in the JavaScript code from anywhere, even if they are defined in different files loaded on the same page. As such, naming conflicts between global variables in different JavaScript source files is common, which affects program dependability and correctness. The higher the number of global variables in the code, the more dependent existing modules are likely to be; and dependency increases errorproneness, and maintainability efforts

[14]

Feature Envy

When a method is more interested in members of other classes than its own, is a clear sign that it is in the wrong class

[18, 30]

Functional Decomposition

A procedural code in a technology that implements the OO paradigm (usually the main function that calls many others), caused by the previous expertise of the developers in a procedural language and little experience in OO

[7, 30]

God Package

A package that is too large. That knows too much or does too much

[35]

Inappropriate Intimacy

A case where two classes are known too, characterizing a high level of coupling

[18, 30]

Incomplete Library Class

The software uses a library that is not complete, and therefore extensions to that library are required

[18, 30]

Instanceof

In Java, the instanceof operator is used to check that an object is an instance of a given class or implements a certain interface. These are considered CS aspects because a concentration of instanceof operators in the same block of code may indicate a place where the introduction of an inheritance hierarchy or the use of method overloading might be a better solution

[53]

Intensive Coupling

Refers to a method that is tied to many other operations located in only a few classes within the system

[32]

Introduce null object

Repeated null checking conditions are added into the code to prevent the null pointer exception problem. By doing so, the duplications of null checking conditions could have been placed in different locations of the software system

[50]

Large object

An object with too many responsibilities. An object that is doing too much should be refactored. Large objects may be restructured or broken into smaller objects

[14]

Lazy Class

Classes that do not have sufficient responsibilities and therefore should not exist

[18, 30]

Lazy object

An object that does too little. An object that is not doing enough work should be refactored. Lazy objects maybe collapsed or combined into other classes

[14]

Long Base Class List

A class definition with too many base classes. Python supports a limited form of multiple inheritance. If an attribute in Python is not found in the derived class during execution, it is searched recursively in the base classes declared in the base class list in sequence. Too long base class list will limit the speed of interpretive execution

[11]

Long Element Chain

An expression that is accessing an object through a long chain of elements by the bracket operator. Long Element Chain is directly caused by nested arrays. It is unreadable especially when a deep level of array traversing is taking place

[11]

Long Lambda Function

A lambda function that is overly long, in term of the number of its characters

[11]

Long Message Chain

An expression that is accessing an object through a long chain of attributes or methods by the dot operator

[11]

Long Method

Very large method/function and, therefore, difficult to understand, extend and modify. It is very likely that this method has too many responsibilities, hurting one of the principles of a good OO design (SRP: Single Responsibility Principle

[18, 30]

Long Parameter List

Extensive parameter list, which makes it difficult to understand and is usually an indication that the method has too many responsibilities

[18, 30]

Long Scope Chaining

A method or a function that is multiply-nested

[11]

Long Ternary Conditional Expression

A ternary conditional expression (“X if C else Y”) that is overly long

[11]

Message Chain

One object accesses another, to then access another object belonging to this second, and so on, causing a high coupling between classes

[18, 30]

Method call sequences

The interplay of multiple methods, though–in particular, whether a specific sequence of method calls is allowed or not–is neither specified nor checked at compile time

[55]

Middle Man

Identified how much a class has almost no logic, as it delegates almost everything to another class

[18, 30]

Misplaced Class

Suggests a class that is in a package that contains other classes not related to it

[42]

Missing method calls

Overlook certain important method calls that are required at particular places in code

[39]

Multiply-Nested Container

A container (including set, list, tuple, dict) that is multiply-nested. It directly produces expressions accessing an object through a long chain of indexed elements

[11]

Nested Callback

A callback is a function passed as an argument to another (parent) function. Using excessive callbacks, however, can result in hard to read and maintain code due to their nested anonymous (and usually asynchronous) nature

[14]

Nested Try Statements

When one or more try statements are contained in the try statement

[21]

Null checking in a string comparison problem

Null checking conditions are usually found in string comparison, particularly in an if statement. This form of defensive programming can be employed to prevent the null pointer exception error. The same null checking statement is repeatedly appeared when the same String object is compared, resulting in a marvellous number of duplicated null checking conditions

[50]

Parallel Inheritance

Existence of two hierarchies of classes that are fully connected, that is, when adding a subclass in one of the hierarchies, it is required that a similar subclass be created in the other

[18, 30]

Primitive Obsession

It represents the situation where primitive types are used in place of light classes

[18, 30]

Promiscuous Package

A package can be considered as promiscuous if it contains classes implementing too many features, making it too hard to understand and maintain

[42]

Refused Bequest

It indicates that a subclass does not use inherited data or behaviors

[18, 30]

Shotgun Surgery

Opposite to Divergent Change, because when it happens a modification, several different classes have to be changed

[18, 30]

Spaghetti Code

Use of classes without structures, long methods without parameters, use of global variables, in addition to not exploiting and preventing the application of OO principles such as inheritance and polymorphism

[7, 30]

Speculative Generality

Code snippets are designed to support future software behavior that is not yet required

[18, 30]

Swiss Army Knife

Exposes the high complexity to meet the predictable needs of a part of the system (usually utility classes with many responsibilities)

[7, 30]

Switch Statement

It is not necessarily smells by definition, but when they are widely used, they are usually a sign of problems, especially when used to identify the behavior of an object based on its type

[18, 30]

Temporary Field

Member-only used in specific situations, and that outside of it has no meaning

[18, 30]

Tradition Breaker

This design disharmony strategy takes its name from the principle that the interface of a class should increase in an evolutionary fashion. This means that a derived class should not break the inherited “tradition” and provide a large set of services which are unrelated to those provided by its base class

[32]

Type Checking

Type-checking code is introduced in order to select a variation of an algorithm that should be executed, depending on the value of an attribute

[52]

Typecast

Typecasts are used to explicitly convert an object from one class type into another. Many people consider typecasts to be problematic since it is possible to write illegal casting instructions in the source code which cannot be detected during compilation but result in runtime errors

[53]

Unprotected Main

Outer exception will not be handled in the main program; it can only be handled in a subprogram or a function

[21]

Useless Exception Handling

A try…except statement that does little

[11]

Wide Subsystem Interface

A Subsystem Interface consists of classes that are accessible from outside the package they belong to. The flaw refers to the situation where this interface is very wide, which causes a very tight coupling between the package and the rest of the system

[57]

1.5 Appendix 5: Frequencies of code smells detected in the studies

Code smell

No. of studies

% Studies

Programming language

God Class (Large Class or Blob)

43

51.8

Java, C/C++ , C#, Python

Feature Envy

28

33.7

Java, C/C++ , C#

Long Method

22

26.5

Java, C/C++ , C#, Python, JavaScript

Data class

18

21.7

Java, C/C++ , C#

Functional Decomposition

17

20.5

Java

Spaghetti Code

17

20.5

Java

Long Parameter List

12

14.5

Java, C/C++ , C#, Python, JavaScript

Swiss Army Knife

11

13.3

Java

Refused Bequest

10

12.0

Java, C/C++ , C#, JavaScript

Shotgun Surgery

10

12.0

Java, C++ , C#

Code clone/Duplicated code

9

10.8

Java, C/C++ , C#

Lazy Class

8

9.6

Java, C++ , C#

Divergent Change

7

8.4

Java, C#

Dead Code

4

4.8

Java, C++ , C#

Switch Statement

4

4.8

Java, C#, JavaScript

Brain Class

3

3.6

Java, C++

Data Clump

3

3.6

Java, C/C++ , C#

Long Message Chain

3

3.6

JavaScript, Python

Misplaced Class

3

3.6

Java, C++

Parallel Inheritance

3

3.6

Java, C#

Primitive Obsession

3

3.6

Java, C/C++ , C#

Speculative Generality

3

3.6

Java, C#

Temporary Field

3

3.6

Java, C#

Dispersed Coupling

2

2.4

Java, C++

Empty Catch Block

2

2.4

Java, JavaScript

Excessive Global Variables

2

2.4

JavaScript

Intensive Coupling

2

2.4

Java, C++

Large object

2

2.4

JavaScript

Lazy object

2

2.4

JavaScript

Long Base Class List

2

2.4

Python

Long Lambda Function

2

2.4

Python

Long Scope Chaining

2

2.4

Python

Long Ternary Conditional Expression

2

2.4

Python

Message Chain

2

2.4

Java, C/C++ , C#

Middle Man

2

2.4

Java, C/C++ , C#

Missing method calls

2

2.4

Java

Alternative Classes with Different Interface

1

1.2

Java, C#

AntiSingleton

1

1.2

Java

Brain Method

1

1.2

Java, C++

Careless Cleanup

1

1.2

Java

Class Data Should Be Private

1

1.2

Java

Closure Smells

1

1.2

JavaScript

Comments

1

1.2

Java, C#

Complex Class

1

1.2

Java

Complex Container Comprehension

1

1.2

Python

Complex List Comprehension

1

1.2

Python

Coupling between JavaScript, HTML, and CSS

1

1.2

JavaScript

Delegator

1

1.2

Java

Dummy Handler

1

1.2

Java

Exception thrown in the finally block

1

1.2

Java

God Package

1

1.2

Java, C++

Inappropriate Intimacy

1

1.2

Java, C#

Incomplete Library Class

1

1.2

Java, C#

Instanceof

1

1.2

Java

Introduce null object

1

1.2

Java

Long Element Chain

1

1.2

Python

Method call sequences

1

1.2

Java

Multiply-Nested Container

1

1.2

Python

Nested Callback

1

1.2

JavaScript

Nested Try Statements

1

1.2

Java

Null checking in a string comparison problem

1

1.2

Java

Promiscuous Package

1

1.2

Java

Tradition Breaker

1

1.2

Java, C++

Type Checking

1

1.2

Java

Typecast

1

1.2

Java

Unprotected Main

1

1.2

Java

Useless Exception Handling

1

1.2

Python

Wide Subsystem Interface

1

1.2

Java, C++

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Pereira dos Reis, J., Brito e Abreu, F., de Figueiredo Carneiro, G. et al. Code Smells Detection and Visualization: A Systematic Literature Review. Arch Computat Methods Eng 29, 47–94 (2022). https://doi.org/10.1007/s11831-021-09566-x

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11831-021-09566-x

Navigation