A Textual-based Technique for Smell Detection – Fabio Palomba

Code smells are bad, we all know that [1,2] Because of this, some tools have been developed that detect smells based on source code analysis. In addition to this Fabio himself has also analyzed code repos in order to find code smells. For example, if a class is involved in more that 8% of commits, this class might have too much responsibility[3].

But, structural and historical analysis are only part of the story, source code also has textual components. Thus, Fabio proposes Taco, a tool for textual analysis.

I missed how it exactly works, but they validated TACO with an empirical study. They studies 10 software system, with an oracle from Landfill[4]. Taco outperformed structural approaches by 22%. A concrete example:

findTypesAndPackages()

Looking at the name we can already see that this method has two different purposes. But, it only has 50 lines, so structural approaches will not find it. There is not a lot of overlap in the smells found by the two different approaches, so, the approaches are highly complementary, says Fabio. A preprint is here: http://www.st.ewi.tudelft.nl/~zaidman/publications/palombaICPC2016.pdf

—–

[1] F. Palomba, G. Bavota, M. Di Penta, R. Oliveto, and A. De Lucia, “Do they really smell bad? a study on developers’ perception of bad code
smells,” in Proceedings of the International Conference on Software Maintenance and Evolution (ICSME). IEEE, 2014, pp. 101–110.
[2] A. F. Yamashita and L. Moonen, “Do developers care about code smells? an exploratory survey,” in Proceedings of the Working Conference on Reverse Engineering (WCRE). IEEE, 2013, pp. 242–251.
[3] F. Palomba, G. Bavota, M. Di Penta, R.Oliveto, D. Poshyvanyk, A. De Lucia. Mining Version Histories for Detecting Code Smells.*
Transactions on Software Engineering (TSE), Volume 41, Issue 5, pp. 462-489.
[4] F. Palomba, D. Di Nucci, M. Tufano, G. Bavota, R. Oliveto, D. Poshyvanyk, and A. De Lucia, “Landfill: An open dataset of code smells with
public evaluation,” in Proceedings of the Working Conference on Mining Software Repositories (MSR). IEEE, 2015, pp. 482–485. (PDF)