  Code review that detects and locates defects and other quality issues plays
an important role in software quality control. One type of issue that may
impact the quality of software is code smells. Yet, little is known about the
extent to which code smells are identified during modern code review. To
investigate the concept behind code smells identified in modern code review and
what actions reviewers suggest and developers take in response to the
identified smells, we conducted a study of code smells in code reviews by
analyzing reviews from four large open source projects from the OpenStack (Nova
and Neutron) and Qt (Qt Base and Qt Creator) communities. We manually checked a
total of 25,415 code review comments obtained by keywords search and random
selection, and identified 1,539 smell-related reviews. Our analysis found that
1) code smells were not commonly identified in code reviews, 2) smells were
usually caused by violation of coding conventions, 3) reviewers usually
provided constructive feedback, including fixing (refactoring) recommendations
to help developers remove smells, 4) developers generally followed those
recommendations and actioned the changes, 5) once identified by reviewers, it
usually takes developers less than one week to fix the smells, and 6) the main
reason why developers chose to ignore the identified smells is not worth fixing
the smell. Our results suggest that: 1) developers should closely follow coding
conventions in their projects to avoid introducing code smells, 2) review-based
detection of code smells is perceived to be a trustworthy approach by
developers, mainly because reviews are context-sensitive (as reviewers are more
aware of the context of the code given that they are part of the project's
development team), and 3) program context needs to be fully considered in order
to make a decision of whether to fix the identified code smell immediately.
