# Follow Your Nose -- Which Code Smells are Worth Chasing?

arXiv: https://arxiv.org/abs/2103.01861 · HTML: https://mlsanity.com/paper/2103.01861/

## Key facts

- Cited by 4 papers in the map (data through 14 Oct 2026).
- Builds on 13 of its 103 references that are in the map.
- First posted on arXiv 2 Mar 2021.

## Builds on (most cited first, 13 of 13)

- [A Closer Look at Memorization in Deep Networks](https://mlsanity.com/paper/1706.05394/) (2017)
- [Data Programming: Creating Large Training Sets, Quickly](https://mlsanity.com/paper/1605.07723/) (2016)
- [A Selective Review of Negative Control Methods in Epidemiology](https://mlsanity.com/paper/2009.05641/) (2020)
- [A deep learning model for estimating story points](https://mlsanity.com/paper/1609.00489/) (2016)
- [Does Code Quality Affect Pull Request Acceptance? An empirical study](https://mlsanity.com/paper/1908.09321/) (2019)
- [A Critical Comparison on Six Static Analysis Tools: Detection, Agreement, and Precision](https://mlsanity.com/paper/2101.08832/) (2021)
- [On the Impact of Programming Languages on Code Quality](https://mlsanity.com/paper/1901.10220/) (2019)
- [Machine Learning in Cyber-Security - Problems, Challenges and Data Sets](https://mlsanity.com/paper/1812.07858/) (2018)
- [Are SonarQube Rules Inducing Bugs?](https://mlsanity.com/paper/1907.00376/) (2019)
- [Learning to Recognize Actionable Static Code Warnings (is Intrinsically Easy)](https://mlsanity.com/paper/2006.00444/) (2020)
- [A Longitudinal Study of Static Analysis Warning Evolution and the Effects of PMD on Software Quality in Apache Open Source Projects](https://mlsanity.com/paper/1912.02179/) (2019)
- [Too Trivial To Test? An Inverse View on Defect Prediction to Identify Methods with Low Fault Risk](https://mlsanity.com/paper/1811.00820/) (2018)
- [The Corrective Commit Probability Code Quality Metric](https://mlsanity.com/paper/2007.10912/) (2020)

## Built on by (most cited first, 4 of 4)

- [ComSum: Commit Messages Summarization and Meaning Preservation](https://mlsanity.com/paper/2108.10763/) (2021)
- [End to End Software Engineering Research](https://mlsanity.com/paper/2112.11858/) (2021)
- [A Large Scale Survey of Motivation in Software Development and Analysis of its Validity](https://mlsanity.com/paper/2404.08303/) (2024)
- [Which Alert Removals are Beneficial?](https://mlsanity.com/paper/2603.21322/) (2026)

## Abstract (arXiv)

The common use case of code smells assumes causality: Identify a smell, remove it, and by doing so improve the code. We empirically investigate their fitness to this use. We present a list of properties that code smells should have if they indeed cause lower quality. We evaluated the smells in 31,687 Java files from 677 GitHub repositories, all the repositories with 200+ commits in 2019. We measured the influence of smells on four metrics for quality, productivity, and bug detection efficiency. Out of 151 code smells computed by the CheckStyle smell detector, less than 20% were found to be potentially causal, and only a handful are rather robust. The strongest smells deal with simplicity, defensive programming, and abstraction. Files without the potentially causal smells are 50% more likely to be of high quality. Unfortunately, most smells are not removed, and developers tend to remove the easy ones and not the effective ones.
