# Styler: learning formatting conventions to repair Checkstyle violations

**Authors:** Benjamin Loriot, Fernanda Madeiral, and Martin Monperrus

arXiv: 1904.01754 · 2022-08-22

## TL;DR

Styler is a machine learning tool that automatically repairs Checkstyle formatting violations in Java code, reducing manual effort and improving code consistency based on project-specific rules.

## Contribution

It introduces a novel ML-based approach for automatically fixing formatting violations tailored to individual project conventions, outperforming existing tools in repair size and speed.

## Key findings

- Repaired 41% of violations across 104 GitHub projects
- Fixes are smaller and faster than competing tools
- Effective across diverse Checkstyle rules

## Abstract

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.

---
Source: https://tomesphere.com/paper/1904.01754