피드로 돌아가기
Add a 50x+ faster duplicate-code gate to GitHub Actions with jscpd-rs
Dev.toDev.to
DevOps

Rust 기반 jscpd-rs 도입으로 중복 코드 검사 속도 50배 이상 개선

Add a 50x+ faster duplicate-code gate to GitHub Actions with jscpd-rs

Viacheslav Bogdanov2026년 6월 4일6intermediate

Context

기존 JavaScript 기반 jscpd의 느린 실행 속도로 인해 CI 파이프라인의 병목 지점 발생. 특히 AI 코드 생성 도구 보급으로 중복 코드 발생 빈도가 증가했으나, 느린 피드백 루프로 인해 품질 게이트가 무력화되는 한계 직면.

Technical Solution

  • File Discovery, Tokenization, Matching, Reporting 등 Hot Path 전체를 Rust로 재구현하여 실행 효율 극대화
  • 기존 jscpd의 워크플로우와 .jscpd.json 설정 파일을 유지하는 Compatibility-first 설계로 마이그레이션 비용 최소화
  • OS별 Prebuilt Binary 제공을 통한 Rust Toolchain 설치 없는 npm 환경의 즉각적인 배포 구조 확보
  • SARIF 포맷 지원을 통한 GitHub Code Scanning UI와의 유기적 통합 및 시각적 피드백 제공
  • Coverage-first 검증 모델을 적용하여 기존 도구 대비 누락 없는 중복 탐지 신뢰성 확보

Impact

  • React 프로젝트 기준 약 52.77배 속도 향상 (10.41s -> 0.19s)
  • Next.js 프로젝트 기준 약 55.33배 속도 향상 (14.98s -> 0.27s)
  • Prometheus(Go) 프로젝트 기준 약 58.23배 속도 향상 (4.84s -> 0.08s)

Key Takeaway

CI 단계의 품질 게이트는 개발자의 피드백 루프에 직접적인 영향을 미치므로, 도구의 실행 성능이 곧 도구의 채택률과 품질 유지 가능성을 결정하는 핵심 변수임.


- 기존 코드베이스 도입 시 현재 중복률을 먼저 파악하고, 점진적으로 Threshold를 낮추는 Ratchet 전략 적용 - CI 설정 파일(YAML) 대신 .jscpd.json 같은 설정 파일을 통한 코드 품질 정책의 코드화(Policy as Code) 권장 - 느린 정적 분석 도구로 인해 PR 리뷰가 지연된다면, 핵심 로직의 Native 언어 재작성 또는 대체제 검토 필요

원문 읽기