Description:
<jats:p>
High-quality source code comments are valuable for software development and maintenance, however, code often contains low-quality comments or lacks them altogether. We name such source code comments as suboptimal comments. Such suboptimal comments create challenges in code comprehension and maintenance. Despite substantial research on low-quality source code comments, empirical knowledge about commenting practices that produce suboptimal comments and reasons that lead to suboptimal comments are lacking. We help bridge this knowledge gap by investigating (1)
<jats:italic>independent comment changes (ICCs)</jats:italic>
—comment changes committed independently of code changes—which likely address suboptimal comments, (2) commenting guidelines, and (3) comment-checking tools and comment-generating tools, which are often employed to help commenting practice—especially to prevent suboptimal comments.
</jats:p>
<jats:p>
We collect 24M+ comment changes from 4,392 open-source GitHub Java repositories and find that ICCs widely exist. The
<jats:italic>ICC ratio</jats:italic>
—proportion of ICCs among all comment changes—is ~15.5%, with 98.7% of the repositories having ICC. Our thematic analysis of 3,533 randomly sampled ICCs provides a three-dimensional taxonomy for
<jats:italic>what</jats:italic>
is changed (four comment categories and 13 subcategories),
<jats:italic>how</jats:italic>
it changed (six commenting activity categories), and
<jats:italic>what factors</jats:italic>
are associated with the change (three factors). We investigate 600 repositories to understand the prevalence, content, impact, and violations of commenting guidelines. We find that only 15.5% of the 600 sampled repositories have any commenting guidelines. We provide the first taxonomy for elements in commenting guidelines: where and what to comment are particularly important. The repositories without such guidelines have a statistically significantly higher ICC ratio, indicating the negative impact of the lack of commenting guidelines. However, commenting guidelines are not strictly followed: 85.5% of checked repositories have violations. We also systematically study how developers use two kinds of tools, comment-checking tools and comment-generating tools, in the 4,392 repositories. We find that the use of
<jats:monospace>Javadoc</jats:monospace>
tool is negatively correlated with the ICC ratio, while the use of
<jats:monospace>Checkstyle</jats:monospace>
has no statistically significant correlation; the use of comment-generating tools leads to a higher ICC ratio.
</jats:p>
<jats:p>To conclude, we reveal issues and challenges in current commenting practice, which help understand how suboptimal comments are introduced. We propose potential research directions on comment location prediction, comment generation, and comment quality assessment; suggest how developers can formulate commenting guidelines and enforce rules with tools; and recommend how to enhance current comment-checking and comment-generating tools.</jats:p>