{'fraction_non_alphanumeric': 0.023756495916852263, 'fraction_numerical': 0.005939123979213066, 'mean_word_length': 5.299065420560748, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
An Empirical Study on Code Smells Co-occurrences in Android Applications

Android applications (apps) evolve quickly to meet users requirements, fix bugs or adapt to technological changes. Such changes can lead to the presence of code smells - symptoms of poor design and/or implementation choices that may hinder the project maintenance and evolution. Previous research studied the characteristics of traditional object-oriented (OO) code smells affecting source code files in desktop software systems, and advocated that the interaction and co-presence of code smells reduce the ability of developers to understand and maintain source code. However, little knowledge is available on emerging categories of Android-specific code smells and their interactions, i.e., co-occurences, with traditional OO smells, in the context of Android apps. To provide a broader understanding of this phenomenon, we conduct an empirical study on 1,923 open source Android apps taking into account 15 types of Android-specific and 10 types of traditional OO code smells. Our results show that the co-occurrence phenomenon is indeed prevalent in Android apps and several smell types have strong associations. Developers need to be aware of this phenomenon and consider detecting and eliminating both traditional and Android smells separately, using dedicated tools.