DocumentCode :
50732
Title :
Mining Version Histories for Detecting Code Smells
Author :
Palomba, Fabio ; Bavota, Gabriele ; Di Penta, Massimiliano ; Oliveto, Rocco ; Poshyvanyk, Denys ; De Lucia, Andrea
Author_Institution :
Univ. of Salerno, Fisciano, Italy
Volume :
41
Issue :
5
fYear :
2015
fDate :
May 1 2015
Firstpage :
462
Lastpage :
489
Abstract :
Code smells are symptoms of poor design and implementation choices that may hinder code comprehension, and possibly increase changeand fault-proneness. While most of the detection techniques just rely on structural information, many code smells are intrinsically characterized by how code elements change overtime. In this paper, we propose Historical Information for Smell deTection (HIST), an approach exploiting change history information to detect instances of five different code smells, namely Divergent Change, Shotgun Surgery, Parallel Inheritance, Blob, and Feature Envy. We evaluate HIST in two empirical studies. The first, conducted on 20 open source projects, aimed at assessing the accuracy of HIST in detecting instances of the code smells mentioned above. The results indicate that the precision of HIST ranges between 72 and 86 percent, and its recall ranges between 58 and 100 percent. Also, results of the first study indicate that HIST is able to identify code smells that cannot be identified by competitive approaches solely based on code analysis of a single system´s snapshot. Then, we conducted a second study aimed at investigating to what extent the code smells detected by HIST (and by competitive code analysis techniques) reflect developers´ perception of poor design and implementation choices. We involved 12 developers of four open source projects that recognized more than 75 percent of the code smell instances identified by HIST as actual design/implementation problems.
Keywords :
data mining; program compilers; public domain software; HIST; blob; code analysis; code smell detection; divergent change; feature envy; historical information for smell detection; mining version history; open source project; parallel inheritance; shotgun surgery; single system snapshot; Accuracy; Association rules; Detectors; Feature extraction; History; Surgery; Code Smells; Code smells; Empirical Studies; Mining Software Repositories; empirical studies; mining software repositories;
fLanguage :
English
Journal_Title :
Software Engineering, IEEE Transactions on
Publisher :
ieee
ISSN :
0098-5589
Type :
jour
DOI :
10.1109/TSE.2014.2372760
Filename :
6963448
Link To Document :
بازگشت