jscpd
Officialjscpd
Kopier-/Einfüge-Detektor für Programmquellcode. Unterstützt 224+ Formate. KI-bereit mit MCP-Server und token-effizientem Reporter. Jetzt mit Rust-basierter Engine – 24-37x schneller.
jscpd implementiert den Rabin-Karp-Algorithmus, um doppelte Codeblöcke in Dateien zu finden.
Quick Start
# 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
Dokumentation
Dokument | Beschreibung |
Node.js-Engine – CLI, Reporter, Konfiguration, Erkennungsmodi | |
Rust-Engine – Installation, CLI, Reporter, Blame, Rust-API | |
KI-Reporter, Agent-Fähigkeiten, MCP-Server | |
TypeScript- und Rust-Programmierschnittstellen | |
GitHub Action, Pre-Commit-Hooks | |
Monorepo-Paket- und Crate-Übersicht |
Zwei Engines
TypeScript (v4) | Rust (v5) | |
npm-Paket | ||
CLI-Befehl |
|
|
Geschwindigkeit | Basis | 24-37x schneller |
Formate | 224 | 223 |
Node.js erforderlich | Ja | Nein (eigenständige Binärdatei) |
Programmierschnittstelle | TypeScript ( | Rust ( |
LevelDB-Speicher | Ja | Nein |
Reporter | 13 | 13 |
jscpd@5 installiert den Befehl jscpd. Das npm-Paket cpd installiert den Befehl cpd. Beide enthalten dieselbe Rust-Binärdatei. Für beide Befehlsnamen aus einer einzigen Installation verwenden Sie crates.io: cargo install jscpd.
Was ist neu
v5.0.x – Rust-Engine
jscpd v5 ist eine vollständige Rust-Neuimplementierung, die als jscpd@5 (installiert den Befehl jscpd) oder cpd (installiert den Befehl cpd) ausgeliefert wird. Eigenständige Binärdatei – keine Node.js-Laufzeit erforderlich.
Gleiche Schnittstelle, 24-37x schneller:
Alle CLI-Optionen aus v4 bleiben erhalten – Drop-in-Ersatz:
jscpd→jscpd@5Gleiche
.jscpd.json-Konfigurationsdatei, gleicher Erkennungsalgorithmus, gleiche Reporter223 Sprachformate mit formatübergreifender Erkennung (Vue SFC, Svelte, Astro, Markdown)
Neu in v5:
24-37x schnellere Erkennung bei realen Projekten (siehe Benchmark)
Kleine Codebasen (548 Dateien): 34x schneller
Mittlere Codebasen (9K Dateien): 37x schneller
Große Codebasen (17K Dateien, 900 MB): 24x schneller
Git-Blame mit nebeneinanderliegendem Autorenvergleich (
--blame --reporters console-full)--workers– Parallelität für Datei-Tokenisierung und Erkennung steuern (Standard: auto, nutzt alle CPU-Kerne; nicht in v4 verfügbar)13 Reporter:
console,console-full,json,xml,csv,html,markdown,badge,sarif,ai,xcode,threshold,silentKI-Reporter – token-effiziente Ausgabe für LLM-Pipelines (~79% weniger Tokens als console)
--mcp– integrierter MCP-Server über stdio: Richten Sie Ihren KI-Assistenten auf die Binärdatei aus, und er kann Snippets auf Duplikate in Ihrer Codebasis prüfen (siehe Dokumentation)--summary– Codebasis-Zusammenfassung: Top-Dateien und -Ordner nach Tokens, Zeilen, Größe und einer Komplexitätsschätzung – Refactoring-Hotspots direkt aus dem Scan (siehe Dokumentation)Eigenständige Binärdatei – vorgebaut für 7 Plattformen (macOS arm64/x64, Linux arm64/x64, Windows arm64/x64)
Noch nicht in v5 (verwenden Sie dafür v4):
LevelDB/Redis-Speicher (
--store leveldb)Node.js-Programmierschnittstelle (
jscpd(),detectClones())
Siehe Rust-Dokumentation für die vollständige CLI-Referenz und Unterschiede zu v4.
v4.2.x – TypeScript-Engine
Benutzerdefiniertes Tokenizer-Backend –
prismjsdurch eigenes Backend auf Basis von reprism ersetzt. ~11,5% schnellere Tokenisierung bei realen ProjektenFormatübergreifende Erkennung – Vue SFC, Svelte, Astro und Markdown werden blockweise tokenisiert, was die Erkennung über Dateitypen hinweg ermöglicht
Neue Formate: Apex, CFML/ColdFusion, GDScript und 70+ weitere Formate (insgesamt 224, gegenüber 152)
Shebang-Erkennung – automatische Spracherkennung für Skripte ohne Erweiterung
--store-path– LevelDB-Cache-Verzeichnis für parallele Läufe konfigurieren--skipComments– Kurzform für--mode weak--formats-names– Dateinamen (z. B.Makefile,Dockerfile) auf Formate abbilden--noTips– Tipp-Ausgabe in CI unterdrückenFehlerbehebungen: stilles Verwerfen von Duplikaten ganzer Dateien (#728), ReDoS bei Lisp/Elisp-Dateien (#737), Prozessabsturz bei fehlerhafter
package.json(#739), Vue-SFC-Erkennung über Dateien hinweg (#737), Vue-SFC-Spaltennummern (#737), 50 Sicherheitslücken in Abhängigkeiten
Siehe TypeScript-Dokumentation für die vollständige CLI-Referenz.
Pakete
Paket | Beschreibung |
CLI und Node.js-API (v4.x) | |
REST-API + MCP-Server | |
Kern-Erkennungsalgorithmus | |
Dateierkennung, Reporter | |
Quellcode-Tokenisierung | |
HTML-Bericht | |
SVG-Abzeichen | |
SARIF (GitHub-Code-Scanning) | |
LevelDB-persistenter Speicher | |
Redis-verteilter Speicher | |
cpd (Rust-Engine) | Rust-basierte Engine (v5.x) – auch als |
Wer nutzt jscpd
Das npm-Paket jscpd wird über 10 Millionen Mal pro Monat heruntergeladen, und ~5.000 Repositorys führen es im Abhängigkeitsdiagramm von GitHub auf.
Gebündelt in Analyseplattformen:
GitHub Super Linter – offizieller GitHub-Linter-Aggregator, bündelt jscpd als Kopier-/Einfüge-Detektor
MegaLinter – Open-Source-Linter-Aggregator für CI, liefert jscpd in jeder Variante einschließlich
ci_lightCodacy – automatisierte Code-Analyseplattform, jscpd betreibt die Duplikations-Engine
Verwendet in bekannten Projekten:
OpenClaw – persönlicher KI-Assistent, führt jscpd als Duplikations-Gate in seinen Prüfskripten aus
DeepSeek Harness – DeepSeeks Plugin-Harness, jscpd-Konfiguration in CI
degit – Rich Harris' Projekt-Gerüstbauer
MEGA webclient – der MEGA.nz-Webclient
Alibaba AppWorks – bettet jscpd als Bibliothek ein
OVHcloud manager – OVHclouds Kundenkontrollpanel
KiroCrew – selbstverbessernder persistenter Entwicklungsworkspace
Leistung
Benchmark auf macOS (Apple Silicon), 10 Läufe pro Ziel (3 für CopilotKit). v4 lief mit --no-gitignore -i "node_modules", um vergleichbares Datei-Scannen zu gewährleisten.
Ziel | Dateien | Größe | jscpd v4 | jscpd v5 | Beschleunigung |
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 |
Siehe performance-comparison.md für die vollständige Methodik und Rohdaten.
KI-bereite Funktionen
jscpd integriert sich über drei Mechanismen in KI-gestützte Arbeitsabläufe:
KI-Reporter
Token-effiziente Ausgabe für LLM-Pipelines (~79% weniger Tokens als der Standard-Console-Reporter):
jscpd --reporters ai /path/to/source # v4
cpd --reporters ai /path/to/source # v5
cpd --reporters ai --summary /path/to/source # v5: + compact codebase summaryAgent-Fähigkeiten
Zwei installierbare Fähigkeiten, die KI-Codierungsassistenten beibringen, jscpd zu verwenden und erkannte Duplikate zu refaktorisieren:
Fähigkeit | Zweck | Installation |
| Werkzeugreferenz – CLI-Optionen, KI-Reporter-Format, Konfigurationssyntax |
|
| Geführter Refactoring-Workflow – Klone lesen, Strategie wählen, anwenden, verifizieren |
|
Nach der Installation bitten Sie Ihren Agenten, „Code-Duplikate finden und beheben“ auszuführen, und er wird jscpd mit den richtigen Optionen aufrufen und die Ergebnisse umsetzen.
Siehe KI-bereite Dokumentation für vollständige Details.
Mitwirken
Siehe CONTRIBUTING.md für Informationen zum Entwicklungssetup (Rust und TypeScript), zur Testrichtlinie und zu den Anforderungen für akzeptable Pull Requests. Sicherheitsprobleme werden über die Sicherheitsrichtlinie gemeldet, nicht über öffentliche Issues.
Forke das Repository kucherenko/jscpd
Klone die geforkte Version (
git clone https://github.com/{your-id}/jscpd)Installiere die Abhängigkeiten (
pnpm install)Starte das Projekt im Entwicklungsmodus:
pnpm devFüge deine Änderungen hinzu
Füge Tests hinzu und prüfe:
pnpm testErstelle den Build:
pnpm buildErstelle einen PR
Unterstützer
Danke an alle unsere Unterstützer! 🙏 [Werde Unterstützer]
Sponsoren
Unterstütze dieses Projekt, indem du Sponsor wirst. Dein Logo wird hier mit einem Link zu deiner Website angezeigt. [Werde Sponsor]
Lizenz
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