jscpd
Officialjscpd
プログラミングソースコード用のコピー/ペースト検出器。224以上のフォーマットに対応。MCPサーバーとトーケン効率的なレポーターでAI対応。Rust搭載エンジンで24〜37倍高速化。
jscpdは、abin-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の概説 |
2つのエンジン
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バリナリが含まれています。1回のインストールで両方のコマンド名を使いたい場は、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ファイル、900 MB): 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の利用者
npmパッケージ jscpd は毎月10M+回ダウンロードされており、GitHubのdependentsグラフでは~5,000のリポジトリがそれを宣言しています。
分析プラットフォームにバンドル:
GitHub Super Linter — 公式のGitHub linterアグリゲーターで、コピー/ペースト検出器としてjscpdをバンドル
MegaLinter — CI向けのオープンソースlinterアグリゲーターで、
ci_lightを含むすべてのフレーバーでjscpdを同梱Codacy — 自動コード分析プラットフォームで、重複検出エンジンにjscpdを採用
注目すべきプロジェクトでの利用:
OpenClaw — 個人向けAIアシスタント。チェックスクリプトで重複ゲートとしてjscpdを実行
DeepSeek Harness — DeepSeekのプラグインハーネス。CIでjscpd設定を使用
degit — Rich Harrisのプロジェクトスキャフォルダー
MEGA webclient — MEGA.nzのWebクライアント
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は、次の3つのメカニズムを通じてAIを活用したワークフローに統合されます:
AIレポーター
LLMパイプライン向けのトークン効率的な出力(デフォルトのコンソールレポーター比で約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の使い方と検出された重複のリファクタリング方法を教える、インストール可能な2つのスキル:
スキル | 目的 | インストール |
| ツールリファレンス — CLIオプション、AIレポーターのフォーマット、設定構文 |
|
| ガイド付きリファクタリングワークフロー — クローンを読み、戦略を選び、適用し、検証 |
|
インストール後、エージェントに「コードの重複を見つけて修正して」と依頼すると、適切なオプションでjscpdを呼び出し、結果に基づいてアクションを実行します。
詳細については、AI-Readyドキュメント を参照してください。
コントリビューション
開発環境(Rust と TypeScript)、テスト方針、受け入れ可能なプルリクエストの要件については、CONTRIBUTING.md を参照してください。セキュリティ問題は公開の issue ではなく、セキュリティポリシー を通じて報告してください。
リポジトリ 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