jscpd
Officialjscpd
프로그래밍 소스 코드용 복사/붙여넣기 감지기입니다. 224개 이상의 형식을 지원합니다. MCP 서버와 토큰 효율적인 리포터로 AI에 대비되어 있습니다. 이제 Rust 기반 엔진을 탑재하여 24-37배 더 빠릅니다.
jscpd는 Rabin-Karp 알고리즘을 구현하여 파일 전체에서 중복된 코드 블록을 찾습니다.
빠른 시작
# Install (all platforms — installs the jscpd command)
curl -fsSL https://jscpd.dev/install.sh | bash
# TypeScript engine (Node.js, v4.x)
npm install -g jscpd@4
jscpd /path/to/code
# or use without installing
npx jscpd@4 /path/to/code
# Rust engine (v5.x, 24-37x faster) — installs the jscpd command
npm install -g jscpd@5
jscpd /path/to/code
# Rust engine — cpd command only
npm install -g cpd
cpd /path/to/code
# Rust-native install (exposes both jscpd and cpd)
cargo install jscpd
# Nix (installs both jscpd and cpd)
nix run github:kucherenko/jscpd -- /path/to/code
# or install permanently
nix profile install github:kucherenko/jscpd
# Homebrew (macOS/Linux)
brew install jscpdRelated MCP server: tree-sitter-analyzer
문서
문서 | 설명 |
Node.js 엔진 — CLI, 리포터, 구성, 감지 모드 | |
Rust 엔진 — 설치, CLI, 리포터, blame, Rust API | |
AI 리포터, 에이전트 스킬, MCP 서버 | |
TypeScript 및 Rust 프로그래밍 API | |
GitHub Action, pre-commit 훅 | |
Monorepo 패키지 및 crate 개요 |
두 엔진
TypeScript (v4) | Rust (v5) | |
npm 패키지 | ||
CLI 명령 |
|
|
속도 | 기준 | 24-37배 더 빠름 |
형식 | 224 | 223 |
Node.js 필요 | 예 | 아니요 (자체 포함 바이너리) |
프로그래밍 API | TypeScript ( | Rust ( |
LevelDB 저장소 | 예 | 아니요 |
리포터 | 13 | 13 |
jscpd@5는 jscpd 명령을 설치합니다. cpd npm 패키지는 cpd 명령을 설치합니다. 둘 다 동일한 Rust 바이너리를 포함합니다. 단일 설치에서 두 명령 이름을 모두 사용하려면 crates.io를 사용하세요: cargo install jscpd.
새로운 기능
v5.0.x — Rust 엔진
jscpd v5는 jscpd@5 (jscpd 명령 설치) 또는 cpd (cpd 명령 설치)로 제공되는 처음부터 다시 작성된 Rust 버전입니다. 자체 포함 바이너리 — Node.js 런타임이 필요 없습니다.
동일한 인터페이스, 24-37배 더 빠름:
v4의 모든 CLI 옵션이 유지됩니다 — 대체 설치:
jscpd→jscpd@5동일한
.jscpd.json구성 파일, 동일한 감지 알고리즘, 동일한 리포터223개 언어 형식과 교차 형식 감지(Vue SFC, Svelte, Astro, Markdown)
v5의 새로운 기능:
24-37배 더 빠른 감지 (실제 프로젝트 기준, benchmark 참조)
소규모 코드베이스(548개 파일): 34배 더 빠름
중간 규모 코드베이스(9K개 파일): 37배 더 빠름
대규모 코드베이스(17K개 파일, 900MB): 24배 더 빠름
Git blame — 나란히 보는 작성자 비교 (
--blame --reporters console-full)--workers— 파일 토큰화 및 감지의 병렬 처리 제어(기본값: 자동, 모든 CPU 코어 사용, v4에서는 사용 불가)13개 리포터:
console,console-full,json,xml,csv,html,markdown,badge,sarif,ai,xcode,threshold,silentAI 리포터 — LLM 파이프라인을 위한 토큰 효율적 출력(console보다 약 79% 적은 토큰)
--mcp— stdio 기반 내장 MCP 서버: AI 어시스턴트를 바이너리에 지정하면 코드베이스에서 스니펫의 중복을 확인할 수 있습니다 (docs 참조)--summary— 코드베이스 요약: 토큰, 줄, 크기, 복잡도 추정치 기준 상위 파일 및 폴더 — 스캔에서 바로 리팩토링 핫스팟 확인 (docs 참조)자체 포함 바이너리 — 7개 플랫폼용 사전 빌드(macOS arm64/x64, Linux arm64/x64, Windows arm64/x64)
아직 v5에 없음 (이 기능들은 v4를 사용하세요):
LevelDB/Redis 저장소 (
--store leveldb)Node.js 프로그래밍 API (
jscpd(),detectClones())
전체 CLI 참조 및 v4와의 차이점은 Rust 문서를 참조하세요.
v4.2.x — TypeScript 엔진
사용자 정의 토크나이저 백엔드 —
prismjs를 reprism 기반 자체 백엔드로 교체. 실제 프로젝트에서 토큰화가 약 11.5% 빨라짐교차 형식 감지 — Vue SFC, Svelte, Astro, Markdown을 블록 단위로 토큰화하여 파일 유형 간 감지 가능
새로운 형식: Apex, CFML/ColdFusion, GDScript 및 70개 이상의 추가 형식(총 224개, 기존 152개에서 증가)
Shebang 감지 — 확장자가 없는 스크립트의 언어 자동 감지
--store-path— 병렬 실행을 위한 LevelDB 캐시 디렉터리 구성--skipComments—--mode weak의 약어--formats-names— 파일 이름(예:Makefile,Dockerfile)을 형식에 매핑--noTips— CI에서 팁 출력 억제버그 수정: 전체 파일 중복이 조용히 누락되던 문제 (#728), Lisp/Elisp 파일의 ReDoS (#737), 잘못된
package.json으로 인한 프로세스 충돌 (#739), Vue SFC 교차 파일 감지 (#737), Vue SFC 열 번호 (#737), 50개의 의존성 보안 취약점
전체 CLI 참조는 TypeScript 문서를 참조하세요.
패키지
패키지 | 설명 |
CLI 및 Node.js API(v4.x) | |
REST API + MCP 서버 | |
핵심 감지 알고리즘 | |
파일 감지, 리포터 | |
소스 코드 토큰화 | |
HTML 리포트 | |
SVG 배지 | |
SARIF (GitHub Code Scanning) | |
LevelDB 영구 저장소 | |
Redis 분산 저장소 | |
cpd (Rust 엔진) | Rust 기반 엔진(v5.x) — |
jscpd를 사용하는 곳
jscpd npm 패키지는 월 1,000만 회 이상 다운로드되며, 약 5,000개 저장소가 GitHub의 dependents 그래프에 이를 명시하고 있습니다.
분석 플랫폼에 번들로 포함:
GitHub Super Linter — 공식 GitHub 린터 애그리게이터로, jscpd를 복사/붙여넣기 감지기로 번들합니다
MegaLinter — CI용 오픈소스 린터 애그리게이터로,
ci_light를 포함한 모든 변형에 jscpd를 포함합니다Codacy — 자동화된 코드 분석 플랫폼으로, jscpd가 중복 엔진을 구동합니다
주목할 만한 프로젝트에서 사용:
OpenClaw — 개인 AI 어시스턴트로, 체크 스크립트에서 jscpd를 중복 게이트로 실행합니다
DeepSeek Harness — DeepSeek의 플러그인 하네스로, CI에 jscpd 구성이 포함되어 있습니다
degit — Rich Harris의 프로젝트 스캐폴더
MEGA webclient — MEGA.nz 웹 클라이언트
Alibaba AppWorks — jscpd를 라이브러리로 내장합니다
OVHcloud manager — OVHcloud의 고객 제어판
KiroCrew — 스스로 개선되는 지속적 개발 워크스페이스
성능
macOS(Apple Silicon)에서 벤치마크했으며, 대상별 10회 실행(CopilotKit은 3회)했습니다. v4는 비교 가능한 파일 스캔을 위해 --no-gitignore -i "node_modules"로 실행했습니다.
대상 | 파일 | 크기 | jscpd v4 | jscpd v5 | 속도 향상 |
fixtures | 548 | 1.5 MB | 1.03s | 0.03s | 34.3x |
svelte | 9K | 38 MB | 15.80s | 0.43s | 36.9x |
CopilotKit | 17K | 159 MB | 82.89s | 3.44s | 24.1x |
전체 방법론과 원시 데이터는 performance-comparison.md를 참조하세요.
AI 지원 기능
jscpd는 세 가지 메커니즘을 통해 AI 기반 워크플로에 통합됩니다:
AI 리포터
LLM 파이프라인을 위한 토큰 효율적 출력 (기본 console 리포터보다 약 79% 적은 토큰):
jscpd --reporters ai /path/to/source # v4
cpd --reporters ai /path/to/source # v5
cpd --reporters ai --summary /path/to/source # v5: + compact codebase summary에이전트 스킬
AI 코딩 어시스턴트에게 jscpd 사용 방법과 감지된 중복 리팩토링 방법을 가르치는 설치 가능한 두 가지 스킬:
스킬 | 용도 | 설치 |
| 도구 참조 — CLI 옵션, AI 리포터 형식, 구성 구문 |
|
| 안내형 리팩토링 워크플로 — 클론 읽기, 전략 선택, 적용, 검증 |
|
설치 후 에이전트에게 "코드 중복을 찾아 수정해"라고 요청하면, 에이전트가 올바른 옵션으로 jscpd를 호출하고 결과에 따라 작업을 수행합니다.
자세한 내용은 AI-Ready 문서를 참조하세요.
기여
개발 환경 설정(Rust 및 TypeScript), 테스트 정책, 그리고 pull request 승인을 위한 요구 사항은 CONTRIBUTING.md를 참조하세요. 보안 문제는 공개 이슈가 아닌 보안 정책을 통해 접수해 주세요.
저장소 kucherenko/jscpd를 포크하세요
포크한 버전을 클론하세요 (
git clone https://github.com/{your-id}/jscpd)의존성을 설치하세요 (
pnpm install)개발 모드로 실행하세요:
pnpm dev변경 사항을 추가하세요
테스트를 추가하고 확인하세요:
pnpm test빌드하세요:
pnpm buildPR을 생성하세요
후원자
모든 후원자분들께 감사드립니다! 🙏 [후원자가 되기]
스폰서
스폰서가 되어 이 프로젝트를 지원해 주세요. 귀하의 로고가 웹사이트 링크와 함께 여기에 표시됩니다. [스폰서가 되기]
라이선스
MIT © Andrey Kucherenko
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceFramework-aware code intelligence MCP server that builds a cross-language dependency graph from source code. 53 integrations (Laravel, Django, Rails, Spring, NestJS, Next.js, and more) across 68 languages. 100+ tools for navigation, impact analysis, refactoring, security scanning, session memory, and CI/PR reports — up to 97% token reduction.285,033102MIT
- AlicenseAqualityAmaintenanceAn MCP code-intelligence server for AI agents with pre-indexed AST cache, 62 MCP tools, and TOON-compressed output, enabling token-efficient code analysis and project health grading entirely locally.947MIT
- AlicenseNot gradedqualityBmaintenanceA local MCP server that indexes TypeScript/JavaScript projects and returns budget-aware, dependency-optimized context packs for AI coding assistants.1MIT
- AlicenseNot gradedqualityCmaintenanceToken-efficient MCP server for multi-language project analysis (Java, TypeScript, JavaScript, Markdown, Python) with plugins, semantic search, and static analysis.MIT
Related MCP Connectors
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kucherenko/jscpd'
If you have feedback or need assistance with the MCP directory API, please join our Discord server