🤖 AI Summary
This study addresses the lack of systematic research on code smells specific to Clojure and the severe insufficiency of existing detection tools. Through a gray literature review, manual content analysis, and expert evaluation involving 44 practitioners, the work presents the first comprehensive identification and classification of code smells in Clojure, proposing 26 distinct types: 12 unique to Clojure, 9 characteristic of functional programming styles, and 5 corresponding to traditional Fowler categories. The investigation reveals that current mainstream linters cover only two of these smells, highlighting a significant gap in tool support. These findings establish a foundational basis for future efforts in Clojure code quality assurance and tool development.
📝 Abstract
Code smells are widely used indicators of poor code quality, revealing structural problems and areas where improvement can be made. Although extensively studied in object-oriented languages, functional programming languages remain comparatively underexplored in literature. This paper presents early results from a grey literature investigation of code smells in Clojure, a modern functional programming language that runs on the Java Virtual Machine (JVM) and is widely adopted in open source and industrial systems. Inspired by prior work on Elixir, we manually inspected developer discussions retrieved through Google search, extracted quality concerns discussed by developers, and had 44 practitioners evaluate the relevance of non-traditional smell candidates. As preliminary results, we cataloged 26 code smells, including 12 Clojure-specific, 9 functional-style, and 5 traditional Fowler smells. We also analyzed tool support and observed a significant gap, as existing Clojure linters cover only 2 of these 26 smells. These early findings provide an initial characterization of how Clojure developers discuss code smells, a preliminary set of smell-like problems specific to this ecosystem, and an early assessment of tool support for their detection.