RuboCop은 RuboCop 1.7부터 기존 비공식 확장 방식에서 공식 플러그인 시스템으로 전환했습니다. LintRoller
중간 계층을 활용하여 플러그인 개발을 표준화하고, 비효율적인 코드 복사 문제를 해결했습니다. 이로써 확장성과 커스텀 Cop 관리가 용이해졌습니다.
Ruby LSP와의 통합도 중요합니다. Rails devcontainers
에서 Ruby LSP가 기본 활성화되면서, RuboCop은 Ruby LSP Addon 기능을 활용, 자체 LSP 런타임을 재사용하도록 어댑터를 구현했습니다. 이는 코드 파싱 결과 재사용을 통한 성능 최적화와 중복 작업 감소에 기여하며, 통합 개발 경험 제공 가능성을 열었습니다.
마지막으로, RuboCop의 AST(Abstract Syntax Tree) 파서 변화가 핵심입니다. Parser Gem
의 유지보수 문제와 Ruby 3.4+ 문법 미지원으로 RuboCop은 Prism
으로의 전환을 추진했습니다. RuboCop 1.62부터 Prism
을 옵셔널 백엔드로, 1.75부터는 Ruby 3.4+에서 기본 파서로 사용합니다. Prism
은 Parser Gem
인터페이스를 에뮬레이트하여 호환성을 유지하며, 최신 Ruby 버전 지원과 Prism
의 활발한 개발 이점을 통해 RuboCop의 안정성과 성능을 향상시킵니다. 발표자는 미래에 AST 대신 CST(Concrete Syntax Tree) 사용 가능성 및 AI 기반 코드 어시스트를 통한 전환 자동화 가능성 등 파서 변화가 RuboCop 생태계에 미칠 영향에 대한 고민을 강조합니다.