Machine learning techniques for code smell detection: A systematic literature review and meta-analysis

Information and Software Technology - Tập 108 - Trang 115-138 - 2019
Muhammad Ilyas Azeem1,2, Fabio Palomba3, Lin Shi1,2, Qing Wang1,2,4
1Laboratory for Internet Software Technologies, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China
2University of Chinese Academy of Sciences, Beijing, 100049, China
3University of Zurich, Zurich, Switzerland
4State Key Laboratory of Computer Science, Institute of Software, Chinese Academy of Sciences, Beijing 100190, China

Tài liệu tham khảo

Lehman, 1980, Programs, life cycles, and laws of software evolution, Proc. IEEE, 68, 1060, 10.1109/PROC.1980.11805 Tamburri, 2018, Discovering community patterns in open-source: a systematic approach and its evaluation, Empir. Softw. Eng., 1 Parnas, 1994, Software aging, 279 Avgeriou, 2016, Managing technical debt in software engineering (dagstuhl seminar 16162), 6 Cunningham, 1993, The wycash portfolio management system, ACM SIGPLAN OOPS Messenger, 4, 29, 10.1145/157710.157715 Fowler, 1999 Kruchten, 2012, Technical debt: from metaphor to theory and practice, IEEE Softw., 29, 18, 10.1109/MS.2012.167 Seaman, 2011, Measuring and monitoring technical debt, Adv. Comput., 82, 44 Abbes, 2011, An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension, 181 Khomh, 2012, An exploratory study of the impact of antipatterns on class change- and fault-proneness, Empir. Softw. Eng., 17, 243, 10.1007/s10664-011-9171-y Palomba, 2017, On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation, Empir. Softw. Eng., 1 Spadini, 2018, On the relation of test smells to software code quality, 1 Pascarella, 2019, Fine-grained just-in-time defect prediction, J. Syst. Softw., 10.1016/j.jss.2018.12.001 Banker, 1993, Software complexity and maintenance costs, Commun. ACM, 36, 81, 10.1145/163359.163375 Yamashita, 2012, Do code smells reflect important maintainability aspects?, 306 Sjøberg, 2013, Quantifying the effect of code smells on maintenance effort, IEEE Trans. Softw. Eng., 39, 1144, 10.1109/TSE.2012.89 Tufano, 2017, When and why your code starts to smell bad (and whether the smells go away), IEEE Trans. Softw. Eng., 10.1109/TSE.2017.2653105 Tufano, 2016, An empirical investigation into the nature of test smells, 4 Palomba, 2018, A large-scale empirical study on the lifecycle of code smell co-occurrences, Inf. Softw. Technol., 99, 1, 10.1016/j.infsof.2018.02.004 Arcoverde, 2011, Understanding the longevity of code smells: preliminary results of an explanatory survey, 33 Chatzigeorgiou, 2010, Investigating the evolution of bad smells in object-oriented code, 106 Lozano, 2007, Assessing the impact of bad smells using historical information, 31 Peters, 2012, Evaluating the lifespan of code smells using software repository mining, 411 Palomba, 2019, On the impact of code smells on the energy consumption of mobile applications, Inf. Softw. Technol., 105, 43, 10.1016/j.infsof.2018.08.004 Vassallo, 2018, Continuous code quality: are we (really) doing that?, 790 Vassallo, 2018, Continuous refactoring in ci: a preliminary study on the perceived advantages and barriers, 564 Vassallo, 2018, Context is king: the developer perspective on the usage of static analysis tools, 38 Pascarella, 2018, How is video game development different from software development in open source?, 392 Pascarella, 2018, Self-reported activities of android developers Bavota, 2015, An experimental investigation on the innate relationship between quality and refactoring, J. Syst. Softw., 107, 1, 10.1016/j.jss.2015.05.024 Palomba, 2014, Do they really smell bad? a study on developers’ perception of bad code smells, 101 Palomba, 2016, Automatic test case generation: what if test code quality matters?, 130 Palomba, 2017, The scent of a smell: an extensive comparison between textual and structural smells, IEEE Trans. Softw. Eng. Palomba, 2017, Does refactoring of test smells induce fixing flaky tests?, 1 Palomba, 2019, The smell of fear: on the relation between test smells and flaky tests, Journal of Empirical Software Engineering, 10.1007/s10664-019-09683-z Palomba, 2017, Toward a smell-aware bug prediction model, IEEE Trans. Softw. Eng., 10.1109/TSE.2017.2770122 Yamashita, 2013, Do developers care about code smells? An exploratory survey, 242 Bavota, 2014, Methodbook: recommending move method refactorings via relational topic models, IEEE Trans. Softw. Eng., 40, 671, 10.1109/TSE.2013.60 Marinescu, 2004, Detection strategies: metrics-based rules for detecting design flaws, 350 Moha, 2010, Decor: a method for the specification and detection of code and design smells, IEEE Trans. Softw. Eng., 36, 20, 10.1109/TSE.2009.50 Morales, 2017, On the use of developers? context for automatic refactoring of software anti-patterns, J. Syst. Softw., 128, 236, 10.1016/j.jss.2016.05.042 Munro, 2005, Product metrics for automatic identification of ”bad smell” design problems in java source-code, 15 Palomba, 2016, A textual-based technique for smell detection, 1 Palomba, 2015, Mining version histories for detecting code smells, IEEE Trans. Softw. Eng., 41, 462, 10.1109/TSE.2014.2372760 Tsantalis, 2009, Identification of move method refactoring opportunities, IEEE Trans. Software Eng., 35, 347, 10.1109/TSE.2009.1 Palomba, 2018, Automatic test smell detection using information retrieval techniques, 311 Palomba, 2019, Beyond technical aspects: how do community smells influence the intensity of code smells?, IEEE Trans. Softw. Eng. Fernandes, 2016, A review-based comparative study of bad smell detection tools, 18:1 Zhang, 2011, Code bad smells: a review of current knowledge, J. Softw. Maint. Evol., 23, 179, 10.1002/smr.521 Fontana, 2016, Antipattern and code smell false positives: Preliminary conceptualization and classification, 1, 609 Mäntylä, 2006, Subjective evaluation of software evolvability using code smells: an empirical study, Empir. Softw. Eng., 11, 395, 10.1007/s10664-006-9002-8 Fontana, 2012, Automatic detection of bad smells in code: an experimental assessment., J. Object Technol., 11 Fontana, 2016, Comparing and experimenting machine learning techniques for code smell detection, Empir. Softw. Eng., 21, 1143, 10.1007/s10664-015-9378-4 Alpaydin, 2014 Wangberg, 2010 Vale, 2014, Bad smells in software product lines: a systematic review, 84 Rasool, 2015, A review of code smell mining techniques, J. Softw. Evol. Process, 27, 867, 10.1002/smr.1737 Panichella, 2014, Cross-project defect prediction models: L’union fait la force, 164 Ghotra, 2015, Revisiting the impact of classification techniques on the performance of defect prediction models, 789 Tantithamthavorn, 2017, An empirical comparison of model validation techniques for defect prediction models, IEEE Trans. Softw.Eng., 43, 1, 10.1109/TSE.2016.2584050 Zimmermann, 2009, Cross-project defect prediction: a large scale experiment on data vs. domain vs. process, 91 B. Kitchenham, S. Charters, Guidelines for Performing Systematic Literature Reviews in Software Engineering, School of Computer Science and Mathematics, Keele University, UK, 2007. Khan, 2014, Intercultural challenges in offshore software development outsourcing relationships: an exploratory study using a systematic literature review, IET Softw., 8, 10.1049/iet-sen.2013.0012 Tarhan, 2017, On the use of ontologies in software process assessment: a systematic literature review, 2 Gasparic, 2016, What recommendation systems for software engineering recommend: a systematic literature review, J. Syst. Softw., 113, 101, 10.1016/j.jss.2015.11.036 Vilela, 2017, Integration between requirements engineering and safety analysis: a systematic literature review, J. Syst. Softw., 125, 68, 10.1016/j.jss.2016.11.031 Wohlin, 2014, Guidelines for snowballing in systematic literature studies and a replication in software engineering, 38:1 Krippendorff, 2004 Antoine, 2014, Weighted krippendorff’s alpha is a more reliable metrics for multi-coders ordinal annotations: experimental studies on emotion, opinion and coreference annotation., 550 Brown, 1998 Pressman, 2010 Nuñez-Varela, 2017, Source code metrics: a systematic mapping study, J. Syst. Softw., 128, 164, 10.1016/j.jss.2017.03.044 Li, 1993, Object-oriented metrics that predict maintainability, J. Syst. Softw., 23, 111, 10.1016/0164-1212(93)90077-B Chidamber, 1994, A metrics suite for object oriented design, IEEE Trans. Softw. Eng., 20, 476, 10.1109/32.295895 Perez, 2016, Framing program comprehension as fault localization, J. Softw., 28, 840 Padilha, 2014, On the effectiveness of concern metrics to detect code smells: an empirical study, 656 Figueiredo, 2008, On the maintainability of aspect-oriented software: aconcern-oriented measurement framework, 183 Figueiredo, 2011, On the impact of crosscutting concern projection on code measurement, 81 Catolino, 2017, Developer-related factors in change prediction: an empirical assessment, 186 Catolino, 2018, Enhancing change prediction models using developer-related factors, J. Syst. Softw., 10.1016/j.jss.2018.05.003 Catolino, 2018, Ensemble techniques for software change prediction: apreliminary investigation, 25 Di Nucci, 2017, A developer centered bug prediction model, IEEE Trans. Softw. Eng. Bavota, 2012, When does a refactoring induce bugs? an empirical study, 104 Safavian, 1991, A survey of decision tree classifier methodology, IEEE Trans Syst Man Cybern, 21, 660, 10.1109/21.97458 Cortes, 1995, Support vector machine, Mach. Learn., 20, 273, 10.1007/BF00994018 Corazza, 2013, Using tabu search to configure support vector regression for effort estimation, Empir. Softw. Eng., 18, 506, 10.1007/s10664-011-9187-3 Hall, 2012, A systematic literature review on fault prediction performance in software engineering, IEEE Trans. Softw. Eng., 38, 1276, 10.1109/TSE.2011.103 Nucci, 2017, Dynamic selection of classifiers in bug prediction: an adaptive method, IEEE Trans. Emerg. Topic.Comput. Intell., 1, 202, 10.1109/TETCI.2017.2699224 Di Nucci, 2018, Evaluating the adaptive selection of classifiers for cross-project bug prediction, 48 Thomas, 2013, The impact of classifier configuration and classifier combination on bug localization, IEEE Trans. Softw. Eng., 39, 1427, 10.1109/TSE.2013.27 Tantithamthavorn, 2018, The impact of automated parameter optimization on defect prediction models, IEEE Trans. Softw. Eng., PP Hsu, 2003, A practical guide to support vector classification He, 2015, An empirical study on software defect prediction with a simplified metric set, Inf. Softw. Technol., 59, 170, 10.1016/j.infsof.2014.11.006 Watanabe, 2008, Adapting a fault prediction model to allow inter languagereuse, 19 Devijver, 1982 Hall, 2011, Developing fault-prediction models: what the research can show industry, IEEE Softw., 28, 96, 10.1109/MS.2011.138 Di Nucci, 2018, Detecting code smells using machine learning techniques: are we there yet? Tempero, 2010, The qualitas corpus: a curated collection of java code for empirical studies, 336 Palomba, 2015, Landfill: an open dataset of code smells with public evaluation, 482 Cooper, 2009 Slavin, 1986, Best-evidence synthesis: an alternative to meta-analytic and traditional reviews, Educat.Res., 15, 5, 10.3102/0013189X015009005 Field, 2001, Meta-analysis of correlation coefficients: a monte carlo comparison of fixed-and random-effects methods., Psychol. Method., 6, 161, 10.1037/1082-989X.6.2.161 Borenstein, 2010, A basic introduction to fixed-effect and random-effects models for meta-analysis, Res. Synth. Method., 1, 97, 10.1002/jrsm.12 Kitchenham, 2015, 4 Hosseini, 2018, A systematic literature review and meta-analysis on cross project defect prediction, IEEE Trans. Softw. Eng. Rafique, 2013, The effects of test-driven development on external quality and productivity: a meta-analysis, IEEE Trans. Softw. Eng., 39, 835, 10.1109/TSE.2012.28 Hannay, 2009, The effectiveness of pair programming: a meta-analysis, Inf. Softw. Technol., 51, 1110, 10.1016/j.infsof.2009.02.001 Lipsey, 2001 Greenland, 1992, Methods for trend estimation from summarized dose-response data, with applications to meta-analysis, Am. J. Epidemiol., 135, 1301, 10.1093/oxfordjournals.aje.a116237 Tacconelli, 2010, Systematic reviews: Crd’s guidance for undertaking reviews in health care, Lancet Infecti. Dis., 10, 226, 10.1016/S1473-3099(10)70065-7 Bland, 2000, The odds ratio, BMJ, 320, 1468, 10.1136/bmj.320.7247.1468 Turhan, 2009, On the relative value of cross-company and within-company data for defect prediction, Empir. Softw. Eng., 14, 540, 10.1007/s10664-008-9103-7 Peters, 2013, Better cross company defect prediction, 409 Taibi, 2017, How developers perceive smells in source code: a replicated study, Inf. Softw. Technol., 92, 223, 10.1016/j.infsof.2017.08.008 Simons, 2015, Search-based refactoring: metrics are not enough, 47 Candela, 2016, Using cohesion and coupling for software remodularization: is it enough?, ACM Trans. Softw. Eng.Methodol. (TOSEM), 25, 24, 10.1145/2928268 Kovalenko, 2018, Mining file histories: should we consider branches?, 202 Fontana, 2015, Towards a prioritization of code debt: a code smell intensity index, 16 Di Nucci, 2017, Dynamic selection of classifiers in bug prediction: an adaptive method, IEEE Trans. Emerg. Topic.Comput. Intell., 1, 202, 10.1109/TETCI.2017.2699224