Sniffing Through Millions of Blocks for Bad Smells


Code smells codify poor coding patterns known to degrade software quality. Block-based languages have proven to be a viable educational and end-user programming paradigm with increasing adoption across a broad spectrum of users and domains. This rising popularity of this programming paradigm calls for a serious look at the program quality written in block-based languages. While code smells in the context of text-based languages have been studied extensively, the research community lacks a comprehensive understanding of code smells in block-based software. To address this problem, we present the results of a large-scale study of code smells prevalent in programs written in the highly popular Scratch programming language. We analyzed programs submitted to the public Scratch repository in 2016, considering a million programs altogether. We discovered interesting relationships between the prevalence of certain smells and the levels of proficiency of the programmers commonly introducing them. Our findings not only can help block-based programmers improve the quality of their software, but also establish the requirements for refactoring support in this programming domain.

Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education.