Ensuring the consistent usage of formatting conventions is an important aspect of modern software quality assurance. While formatting convention violations can be automatically detected by format checkers implemented in linters, there is no satisfactory solution for repairing them. Manually fixing formatting convention violations is a waste of developer time and code formatters do not take into account the conventions adopted and configured by developers for the used linter. In this paper, we present Styler, a tool dedicated to fixing formatting rule violations raised by format checkers using a machine learning approach. For a given project, Styler first generates training data by injecting violations of the project-specific rules in violation-free source code files. Then, it learns fixes by feeding long short-term memory neural networks with the training data encoded into token sequences. Finally, it predicts fixes for real formatting violations with the trained models. Currently, Styler supports a single checker, Checkstyle, which is a highly configurable and popular format checker for Java. In an empirical evaluation, Styler repaired 41% of 26,791 Checkstyle violations mined from 104 GitHub projects. Moreover, we compared Styler with the IntelliJ plugin CheckStyle-IDEA and the machine-learning-based code formatters Naturalize and CodeBuff. We found out that Styler fixes violations of a diverse set of Checkstyle rules (24/25 rules), generates smaller repairs in comparison to the other systems, and predicts repairs in seconds once trained on a project. Through a manual analysis, we identified cases in which Styler does not succeed to generate correct repairs, which can guide further improvements in Styler. Finally, the results suggest that Styler can be useful to help developers repair Checkstyle formatting violations.
翻译:确保格式化公约的一致使用是现代软件质量保证的一个重要方面。 格式化违反公约的情况可以通过在 Iinter 中执行的格式检查器自动检测, 但没有令人满意的解决办法可以修复它们。 手工修正格式化违反公约的情况是浪费开发者的时间, 代码格式化者没有考虑到开发者通过和配置的公约, 在本文中, 我们介绍Styler, 这是专门用机器学习方法来确定格式检查器提出的违反规则情况的工具。 对于一个特定的项目, Styler 风格化者首先通过在无侵犯源代码文档中输入违反项目特定规则的行为来生成培训数据。 然后, 它通过将培训数据编码编码编码编码编码输入到代号序列序列序列中的长期内存储神经网络来学习。 最后, 它预测使用经过培训的模型来修正真正的格式化违规情况。 目前, Styler 支持一个单一的检查器, Checkstystem, 它是一个非常易配置和受欢迎的格式检查器。 在一项实验性评估中, Styler 将26, 791 检查器违反规则的情况输入了41% 。 在104 GitHeurwb 中, 校验型修理公司的校正 中, 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校对 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校对 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正 校正