2013 · 234 citations · 30 references
ComputingComputer ScienceData MiningFeature EngineeringSoftware EngineeringDefect DetectionSoftware DesignSoftware EvolutionSoftware MaintenanceStatic Code AnalysisVersion Control SystemsCode Smell DetectionCode SmellsSource Code AnalysisSource Code Change AnalysisSource Code Evolution
Code smells represent symptoms of poor implementation choices. Previous studies found that these smells make source code more difficult to maintain, possibly also increasing its fault-proneness. There are several approaches that identify smells based on code analysis techniques. However, we observe that many code smells are intrinsically characterized by how code elements change over time. Thus, relying solely on structural information may not be sufficient to detect all the smells accurately. We propose an approach to detect five different code smells, namely Divergent Change, Shotgun Surgery, Parallel Inheritance, Blob, and Feature Envy, by exploiting change history information mined from versioning systems. We applied approach, coined as HIST (Historical Information for Smell deTection), to eight software projects written in Java, and wherever possible compared with existing state-of-the-art smell detectors based on source code analysis. The results indicate that HIST's precision ranges between 61% and 80%, and its recall ranges between 61% and 100%. More importantly, the results confirm that HIST is able to identify code smells that cannot be identified through approaches solely based on code analysis.
30
Mining association rules between sets of items in large databases
Rakesh Agrawal, Tomasz Imieliński, Arun Swami · 1993 · 14.8K citations · Full text
Thomas J. McCabe · IEEE Transactions on Software Engineering · 1976 · 5.8K citations
Refactoring improving the design of existing code
Mauricio A. Saca · 2017 · 2.1K citations
David M. Ridley, Harold Jordaan · Journal of Clinical Ultrasound · 1986 · 864 citations