Skip to main content
QUICK REVIEW

[논문 리뷰] Styler: Learning Formatting Conventions to Repair Checkstyle Errors.

Benjamin Loriot, Fernanda Madeiral|arXiv (Cornell University)|2019. 04. 03.
Software Engineering Research참고 문헌 17인용 수 4
한 줄 요약

STYLER는 LSTM 기반 모델을 사용해 프로젝트별로 특화된 Checkstyle 형식 규칙을 학습하는 딥러닝 도구로, 70개의 GitHub 프로젝트에서 유래한 11,220개의 실제 Checkstyle 오류 중 38%를 자동으로 수정한다. 기존 도구보다 더 넓은 범위의 Checkstyle 규칙(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 형식 오류를 높은 정확도로 수리할 수 있는가?
  • 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는 비교된 도구들 중 어느 것도 수리하지 못하는 두 가지 Checkstyle 규칙에 대해 고유하게 오류를 수정한다.
  • 도구는 코드 의미와 의도를 유지하면서도 소규모이고 최소한의 수정을 생성한다.
  • 훈련이 완료된 후 STYLER는 몇 초 내에 수정을 예측하여 IDE 및 CI/CD 파이프라인에서 실시간 사용에 적합하다.
  • 자체 생성된 학습 데이터를 통해 프로젝트별 형식 관행에 강력한 일반화 능력을 보였다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.