Skip to main content
QUICK REVIEW

[论文解读] Styler: Learning Formatting Conventions to Repair Checkstyle Errors.

Benjamin Loriot, Fernanda Madeiral|arXiv (Cornell University)|Apr 3, 2019
Software Engineering Research参考文献 17被引用 4
一句话总结

STYLER 是一种深度学习工具,通过基于LSTM的模型学习项目特定的Checkstyle格式规则,自动修复了来自70个GitHub项目的11,220个真实世界Checkstyle错误中的38%。它在规则覆盖范围(24种对比17–19种)和修复多样性方面优于现有工具,并能唯一修复两种规则类型,其推理速度足够快,适用于IDE和CI流水线。

ABSTRACT

Ensuring code formatting conventions is an essential aspect of modern software quality assurance, because it helps in code readability. In this paper, we present STYLER , a tool dedicated to fix formatting errors raised by Checkstyle, a highly configurable format checker for Java. To fix formatting errors in a given project, STYLER 1) learns fixes for self-generated errors according to the project-specific Checkstyle ruleset, based on token sequence fed into a LSTM neural network, and then 2) predicts fixes. In an empirical evaluation, we find that STYLER repairs 38% of 11,220 real Checkstyle errors mined from 70 GitHub projects. Moreover, we compare STYLER with the IntelliJ plugin CHECKSTYLE-IDEA and the machine learning-based code formatters NATURALIZE and CODEBUFF. We find that STYLER fixes errors from a more diverse set of Checkstyle rules (24 rules, compared to CHECKSTYLE-IDEA: 19; NATURALIZE : 20; C ODE B UFF: 17), and it uniquely repairs errors for two rules. Finally, STYLER generates small repairs, and once trained, it predicts repairs in seconds. The promising results suggest that STYLER can be used in IDEs and in Continuous Integration environments to repair Checkstyle errors.

研究动机与目标

  • 解决在Java项目中自动化修复Checkstyle格式错误的挑战。
  • 减少手动修复重复性、语法级别格式问题所需的工作量,这些问题是影响代码可读性和可维护性的根源。
  • 开发一种能够从项目特定的Checkstyle规则中学习的模型,而非依赖通用的格式启发式规则。
  • 通过确保快速、准确且小规模的修复,实现与IDE和CI/CD流水线的集成。

提出的方法

  • STYLER 基于项目特定的规则集生成人工Checkstyle错误,以构建训练数据集。
  • 它将源代码标记编码为序列,并将其输入长短期记忆(LSTM)神经网络。
  • 该模型经过训练,以预测修复每个人工生成的格式错误所需的最小修复。
  • 训练完成后,STYLER 将学习到的修复策略应用于生产项目中的真实Checkstyle错误。
  • 它专注于最小化、局部化的更改,以在纠正格式的同时保持代码语义不变。
  • 该工具在GitHub上的真实项目中进行了评估,测试集包含11,220个实际的Checkstyle违规。

实验结果

研究问题

  • RQ1深度学习模型是否仅通过标记序列和项目特定规则,就能以高准确率学习修复Checkstyle格式错误?
  • RQ2与CHECKSTYLE-IDEA、NATURALIZE和CODEBUFF等现有工具相比,STYLER在支持的Checkstyle规则数量方面表现如何?
  • RQ3STYLER是否能唯一修复其他工具无法修复的错误类型?
  • RQ4在预测速度和修复大小方面,STYLER的效率如何?
  • RQ5STYLER是否能有效部署于IDE和CI/CD等真实开发环境?

主要发现

  • STYLER 从70个GitHub项目的11,220个真实Checkstyle错误中成功修复了38%。
  • 它支持24种不同的Checkstyle规则,超过CHECKSTYLE-IDEA(19种)、NATURALIZE(20种)和CODEBUFF(17种)。
  • STYLER 唯一修复了两种其他比较工具无法修复的Checkstyle规则错误。
  • 该工具生成的小型、最小化修复能保持代码语义和意图不变。
  • 训练完成后,STYLER 在数秒内即可预测修复结果,适用于IDE和CI/CD流水线中的实时使用。
  • 通过自动生成的训练数据,该模型在项目特定格式规范方面表现出强大的泛化能力。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。