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% を自動で修復する。既存のツールと比較して、より広範な Checkstyle ルール(24 対 17–19)をカバーしており、2 種類のルールタイプを独自に修復する。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 形式エラーを高い正確性で修復できるか?
  • RQ2STYLER の修復カバレッジは、CHECKSTYLE-IDEA、NATURALIZE、CODEBUFF といった既存のツールと比較して、対応する Checkstyle ルール数においてどのように異なるか?
  • RQ3STYLER は、他のツールが修復できないエラーの種別を独自に修復できるか?
  • RQ4予測速度と修復サイズの観点から、STYLER の効率性はいかがなものか?
  • RQ5STYLER は、IDE や CI パイプラインなどの実際の開発環境に効果的に導入可能か?

主な発見

  • STYLER は、70 個の GitHub プロジェクトから抽出した 11,220 件の実際の Checkstyle エラーのうち 38% を正常に修復した。
  • STYLER は 24 種類の異なる Checkstyle ルールをサポートしており、CHECKSTYLE-IDEA(19)、NATURALIZE(20)、CODEBUFF(17)を上回っている。
  • STYLER は、比較対象のツールがいずれも修復できない 2 種類の Checkstyle ルールに対して独自にエラーを修復している。
  • ツールはコードの意味論と意図を保持しつつ、小さく最小限の修復を生成する。
  • 学習が完了した後、STYLER は数秒で修正を予測するため、IDE や CI/CD パイプラインにおけるリアルタイム利用に適している。
  • 自己生成された学習データを通じて、プロジェクト固有のフォーマット慣習への強い一般化能力を示している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。