{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,31]],"date-time":"2026-07-31T22:40:13Z","timestamp":1785537613546,"version":"3.56.0"},"reference-count":46,"publisher":"Springer Science and Business Media LLC","issue":"7","license":[{"start":{"date-parts":[[2022,9,20]],"date-time":"2022-09-20T00:00:00Z","timestamp":1663632000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2022,9,20]],"date-time":"2022-09-20T00:00:00Z","timestamp":1663632000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2022,12]]},"DOI":"10.1007\/s10664-022-10212-8","type":"journal-article","created":{"date-parts":[[2022,9,20]],"date-time":"2022-09-20T09:04:03Z","timestamp":1663664643000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":9,"title":["An empirical study of Android behavioural code smells detection"],"prefix":"10.1007","volume":"27","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-2914-9066","authenticated-orcid":false,"given":"Dimitri","family":"Prestat","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Naouel","family":"Moha","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Roger","family":"Villemaire","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2022,9,20]]},"reference":[{"key":"10212_CR1","unstructured":"Almalki K (2018) Bad droid! An in-depth empirical study on the occurrence and impact of android specific code smells. Ph.D. thesis, Rochester Institute of Technology"},{"key":"10212_CR2","doi-asserted-by":"crossref","unstructured":"Banerjee A, Chong L K, Chattopadhyay S, Roychoudhury A (2014) Detecting energy bugs and hotspots in mobile apps. In: Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering","DOI":"10.1145\/2635868.2635871"},{"key":"10212_CR3","doi-asserted-by":"crossref","unstructured":"Dennis C, Krutz D E, Mkaouer M W (2017) P-lint: a permission smell detector for android applications. In: 2017 IEEE\/ACM 4th international conference on mobile software engineering and systems (MOBILESoft), pp 219\u2013220","DOI":"10.1109\/MOBILESoft.2017.24"},{"key":"10212_CR4","unstructured":"Developer.Android (2022) Onlowmemory. https:\/\/developer.android.com\/reference\/android\/content\/ComponentCallbacks#onLowMemory(). Online, Accessed Aug 2022"},{"key":"10212_CR5","unstructured":"Developer.Android (2020) Arraymap. https:\/\/developer.android.com\/reference\/android\/support\/v4\/util\/ArrayMap.html. Online, Accessed Aug 2022"},{"key":"10212_CR6","doi-asserted-by":"crossref","unstructured":"Elsayed E K, ElDahshan K A, El-Sharawy E E, Ghannam N E (2019) Reverse engineering approach for improving the quality of mobile applications. PeerJ Comput Sci 5","DOI":"10.7717\/peerj-cs.212"},{"key":"10212_CR7","unstructured":"Emden E V, Moonen L (2002) Java quality assurance by detecting code smells. In: Ninth working conference on reverse engineering. Proceedings, pp 97\u2013106"},{"key":"10212_CR8","doi-asserted-by":"crossref","unstructured":"Fard A M, Mesbah A (2013) Jsnose: detecting javascript code smells. In: 2013 IEEE 13th international working conference on source code analysis and manipulation (SCAM), pp 116\u2013125","DOI":"10.1109\/SCAM.2013.6648192"},{"key":"10212_CR9","unstructured":"Fowler M (1999) Refactoring\u2014improving the design of existing code, 1 edn. Addison-Wesley"},{"key":"10212_CR10","doi-asserted-by":"crossref","unstructured":"Gadient P, Ghafari M, Frischknecht P, Nierstrasz O (2018) Security code smells in android icc. Empir Softw Eng 1\u201331","DOI":"10.1007\/s10664-018-9673-y"},{"key":"10212_CR11","doi-asserted-by":"crossref","unstructured":"Ghafari M, Gadient P, Nierstrasz O (2017) Security smells in android. In: 2017 IEEE 17th international working conference on source code analysis and manipulation (SCAM), pp 121\u2013130","DOI":"10.1109\/SCAM.2017.24"},{"key":"10212_CR12","unstructured":"Gottschalk M, Josefiok M, Jelschen J, Winter A (2012) Removing energy code smells with reengineering services. In: GI-Jahrestagung"},{"key":"10212_CR13","unstructured":"Haase C (2015) Developing for android ii the rules: memory. https:\/\/medium.com\/google-developers\/developing-for-android-ii-bb9a51f8c8b9. Online, Accessed May 2021"},{"key":"10212_CR14","doi-asserted-by":"crossref","unstructured":"Habchi S, Hecht G, Rouvoy R, Moha N (2017) Code smells in ios apps: how do they compare to android?. In: 2017 IEEE\/ACM 4th international conference on mobile software engineering and systems (MOBILESoft), pp 110\u2013121","DOI":"10.1109\/MOBILESoft.2017.11"},{"key":"10212_CR15","doi-asserted-by":"crossref","unstructured":"Habchi S, Blanc X, Rouvoy R (2018) On adopting linters to deal with performance concerns in android apps. In: 2018 33rd IEEE\/ACM international conference on automated software engineering (ASE), pp 6\u201316","DOI":"10.1145\/3238147.3238197"},{"key":"10212_CR16","doi-asserted-by":"crossref","unstructured":"Habchi S, Moha N, Rouvoy R (2019a) The rise of android code smells: Who is to blame?. In: 2019 IEEE\/ACM 16th international conference on mining software repositories (MSR), pp 445\u2013456","DOI":"10.1109\/MSR.2019.00071"},{"key":"10212_CR17","doi-asserted-by":"crossref","unstructured":"Habchi S, Rouvoy R, Moha N (2019b) On the survival of android code smells in the wild. In: 2019 IEEE\/ACM 6th international conference on mobile software engineering and systems (MOBILESoft), pp 87\u201398","DOI":"10.1109\/MOBILESoft.2019.00022"},{"key":"10212_CR18","unstructured":"Hecht G (2016) D\u00e9tection et analyse de l\u2019impact des d\u00e9fauts de code dans les applications mobiles. (detection and analysis of impact of code smells in mobile applications). Ph.D. thesis, Universit\u00e9 du Qu\u00e9bec \u00e0 Montr\u00e9al"},{"key":"10212_CR19","doi-asserted-by":"crossref","unstructured":"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\u2013149","DOI":"10.1109\/MobileSoft.2015.38"},{"key":"10212_CR20","doi-asserted-by":"crossref","unstructured":"Iannone E, Pecorelli F, Nucci D D, Palomba F, Lucia A (2020) Refactoring android-specific energy smells: a plugin for android studio. In: Proceedings of the 28th international conference on program comprehension","DOI":"10.1145\/3387904.3389298"},{"issue":"3","key":"10212_CR21","first-page":"367","volume":"32","author":"R Ibrahim","year":"2020","unstructured":"Ibrahim R, Ahmed M, Nayak R, Jamel S (2020) Reducing redundancy of test cases generation using code smell detection and refactoring. J King Saud Univ\u2014Comput Inf Sci 32(3):367\u2013374","journal-title":"J King Saud Univ\u2014Comput Inf Sci"},{"key":"10212_CR22","doi-asserted-by":"crossref","unstructured":"Johnson B, Song Y, Murphy-Hill E R, Bowdidge R W (2013) Why don\u2019t software developers use static analysis tools to find bugs?. In: 2013 35th International conference on software engineering (ICSE), pp 672\u2013681","DOI":"10.1109\/ICSE.2013.6606613"},{"key":"10212_CR23","doi-asserted-by":"crossref","unstructured":"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\u2013132","DOI":"10.1109\/MOBILESoft.2017.29"},{"key":"10212_CR24","doi-asserted-by":"crossref","unstructured":"Kumar S, Chhabra J K (2014) Two level dynamic approach for feature envy detection. In: 2014 International conference on computer and communication technology (ICCCT), pp 41\u201346","DOI":"10.1109\/ICCCT.2014.7001467"},{"key":"10212_CR25","unstructured":"Lim D (2018) Detecting code smells in android applications. Master\u2019s thesis, TU Delft"},{"key":"10212_CR26","doi-asserted-by":"crossref","unstructured":"Lin Y, Okur S (2015) Study and refactoring of android asynchronous programming","DOI":"10.1109\/ASE.2015.50"},{"key":"10212_CR27","doi-asserted-by":"crossref","unstructured":"Malavolta I, Verdecchia R, Filipovic B, Bruntink M, Lago P (2018) How maintainability issues of android apps evolve. In: 2018 IEEE International conference on software maintenance and evolution (ICSME), pp 334\u2013344","DOI":"10.1109\/ICSME.2018.00042"},{"key":"10212_CR28","doi-asserted-by":"crossref","unstructured":"Mannan U A, Ahmed I, Almurshed R A M, Dig D, Jensen C (2016) Understanding code smells in android applications. In: 2016 IEEE\/ACM International conference on mobile software engineering and systems (MOBILESoft), pp 225\u2013236","DOI":"10.1145\/2897073.2897094"},{"key":"10212_CR29","unstructured":"Marinescu C, Marinescu R, Mihancea P F, Ratiu D, Wettel R (2005) iplasma: an integrated platform for quality assessment of object-oriented design. In: ICSM"},{"key":"10212_CR30","unstructured":"Mariotti G (2013a) Antipattern: freezing a ui with broadcast receiver http:\/\/gmariotti.blogspot.ca\/2013\/02\/antipattern-freezing-ui-with-broadcast.html. Online, Accessed May 2021"},{"key":"10212_CR31","unstructured":"Mariotti G (2013b) Antipattern: freezing the ui with a service and an intentservice http:\/\/gmariotti.blogspot.com\/2013\/03\/antipattern-freezing-ui-with-service.html. Online, Accessed: May 2021"},{"key":"10212_CR32","unstructured":"Mariotti G (2013c) Antipattern: freezing the ui with an asynctask http:\/\/gmariotti.blogspot.com\/2013\/02\/antipattern-freezing-ui-with-asynctask.html. Online, Accessed May 2021"},{"key":"10212_CR33","doi-asserted-by":"publisher","first-page":"20","DOI":"10.1109\/TSE.2009.50","volume":"36","author":"N Moha","year":"2010","unstructured":"Moha N, Gu\u00e9h\u00e9neuc Y G, Duchien L, Meur A F L (2010) Decor: a method for the specification and detection of code and design smells. IEEE Trans Softw Eng 36:20\u201336","journal-title":"IEEE Trans Softw Eng"},{"key":"10212_CR34","unstructured":"Morales R, Saborido R, Khomh F, Chicano F, Antoniol G (2018) [journal first] earmo: an energy-aware refactoring approach for mobile apps. In: 2018 IEEE\/ACM 40th international conference on software engineering (ICSE), pp 59\u201359"},{"key":"10212_CR35","unstructured":"Ni-Lewis I (2015) Avoiding allocations in ondraw() (100 days of google dev) https:\/\/youtu.be\/{HAK}5acHQ53e. Online, Accessed May 2021"},{"key":"10212_CR36","unstructured":"Oracle (2020) Java thread primitive deprecation. https:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/concurrency\/threadPrimitiveDeprecation.html. Online, Accessed: May 2021"},{"key":"10212_CR37","doi-asserted-by":"crossref","unstructured":"Palomba F, Nucci D D, Panichella A, Zaidman A, Lucia A D (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\u2013491","DOI":"10.1109\/SANER.2017.7884659"},{"key":"10212_CR38","doi-asserted-by":"crossref","unstructured":"Patern\u00f2 F, Schiavone A G, Conte A (2017) Customizable automatic detection of bad usability smells in mobile accessed web applications. In: Proceedings of the 19th international conference on human-computer interaction with mobile devices and services","DOI":"10.1145\/3098279.3098558"},{"key":"10212_CR39","unstructured":"Peruma A S (2018) What the smell? An empirical investigation on the distribution and severity of test smells in open source android applications"},{"key":"10212_CR40","doi-asserted-by":"publisher","unstructured":"Rasool G, Ali A (2020) Recovering android bad smells from android applications. Arab J Sci Eng 45. https:\/\/doi.org\/10.1007\/s13369-020-04365-1","DOI":"10.1007\/s13369-020-04365-1"},{"key":"10212_CR41","unstructured":"Reimann J, Brylski M, A\u00dfmann U (2014) A tool-supported quality smell catalogue for android developers. Softwaretechnik-Trends 34"},{"key":"10212_CR42","doi-asserted-by":"crossref","unstructured":"Rubin J, Henniche A N, Moha N, Bouguessa M, Bousbia N (2019) Sniffing android code smells: an association rules mining-based approach. In: 2019 IEEE\/ACM 6th international conference on mobile software engineering and systems (MOBILESoft), pp 123\u2013127","DOI":"10.1109\/MOBILESoft.2019.00025"},{"key":"10212_CR43","unstructured":"Statista (2020) Number of apps available in leading app stores as of 1st quarter 2020 https:\/\/www.statista.com\/statistics\/276623\/number-of-apps-available-in-leading-app-stores\/. Online, Accessed May 2021"},{"key":"10212_CR44","unstructured":"Statista (2020) Number of mobile app downloads worldwide from 2016 to 2019 https:\/\/www.statista.com\/statistics\/271644\/worldwide-free-and-paid-mobile-app-store-downloads\/. Online, Accessed May 2021"},{"key":"10212_CR45","unstructured":"Study Artifacts (2021) https:\/\/figshare.com\/s\/8235a0575ff4a88f0deb. Online, Accessed: February 2022"},{"key":"10212_CR46","doi-asserted-by":"crossref","unstructured":"Wohlin C, Runeson P, H\u00f6st M, Ohlsson M C, Regnell B (2000) Experimentation in software engineering. In: The Kluwer international series in software engineering","DOI":"10.1007\/978-1-4615-4625-2"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-022-10212-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-022-10212-8\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-022-10212-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,11,21]],"date-time":"2022-11-21T02:11:00Z","timestamp":1668996660000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-022-10212-8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,9,20]]},"references-count":46,"journal-issue":{"issue":"7","published-print":{"date-parts":[[2022,12]]}},"alternative-id":["10212"],"URL":"https:\/\/doi.org\/10.1007\/s10664-022-10212-8","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,9,20]]},"assertion":[{"value":"15 July 2022","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"20 September 2022","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors declare that they have no conflict of interest.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"<!--Emphasis Type='Bold' removed-->Conflict of Interest"}}],"article-number":"179"}}