Skip to main content
Glama
kucherenko

jscpd

Official
by kucherenko

jscpd

NPM

Crates.io Version

NPM License jscpd CI Socket Badge OpenSSF Scorecard OpenSSF Best Practices

プログラミングソースコード用のコピー/ペースト検出器。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 jscpd

Related MCP server: tree-sitter-analyzer

ドキュメント

ドキュメント

説明

TypeScript (v4.x)

Node.jsエンジン — CLI、レポーター、設定、検出モード

Rust (v5.x)

Rustエンジン — インストール、CLI、レポーター、blame、Rust API

AI-Ready

AIレポーター、エージェントスキル、MCPサーバー

Programming API

TypeScriptおよびRustのプログラムAPI

CI & Pre-Commit Hooks

GitHub Action、pre-commitフック

Packages

Monorepoパッケージとcrateの概説

2つのエンジン

TypeScript (v4)

Rust (v5)

npmパッケージ

jscpd@4

jscpd@5 または cpd

CLIコマンド

jscpd

jscpd (jscpd@5 から) または cpd (cpd から)

速度

ベースライン

24〜37倍高速

フォーマット

224

223

Node.jsの要件

はい

いいえ(自己完結型バリナリ)

プログラムAPI

TypeScript (jscpd(), detectClones())

Rust (cpd-finder crate)

LevelDBストア

はい

いいえ

レポーター

13

13

jscpd@5jscpd コマンドをインストールします。cpd npmパッケージは cpd コマンドをインストールします。どちらにも同じRustバリナリが含まれています。1回のインストールで両方のコマンド名を使いたい場は、crates.io を使用してくださ: cargo install jscpd

新機能

v5.0.x — Rustエンジン

jscpd v5は、jscpd@5jscpd コマンドをインストール)または cpdcpd コマンドをインストール)として提供される、ゼロから書き直されたRust実装です。自己完結型バリナリ — Node.jsランタイムは不要です。

同じインターフェース、24〜37倍高速:

  • v4のすべてのCLIオプションを維持 — 置き換えそのまま: jscpdjscpd@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, silent

  • AIレポーター — 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エンジン

  • カスタムトークナイザーバックエンドprismjsreprism 上に構築した独自バックエンドに置き換え。実プロジェクトでトークナイズが約11.5%高速化

  • クロスフォーマット検出 — Vue SFC、Svelte、Astro、Markdownをブロックごとにトークナイズし、ファイルタイプをまたいだ検出を実現

  • 新しいフォーマット: Apex、CFML/ColdFusion、GDScript、および70以上の追加フォーマット(合計224、152から増加)

  • Shebang検出 — 拡張子のないスクリプトの言語を自動検出

  • --store-path — 並列実行時のLevelDBキャッシュディレクトリを設定

  • --skipComments--mode weak の短縮形

  • --formats-names — ファイル名(例: MakefileDockerfile)をフォーマットにマッピング

  • --noTips — CIでのヒント出力を抑制

  • バグ修正: ファイル全体の重複が黙って除外される問題(#728)、Lisp/ElispファイルでのReDoS(#737)、不正な package.json によるプロセスクラッシュ(#739)、Vue SFCのクロスファイル検出(#737)、Vue SFCの列番号(#737)、50件の依存関係のセキュリティ脆弱性

完全なCLIリファレンスについては、TypeScriptドキュメント を参照してください。

パッケージ

パッケージ

説明

jscpd

CLIおよびNode.js API(v4.x)

jscpd-server

REST API + MCPサーバー

@jscpd/core

コア検出アルゴリズム

@jscpd/finder

ファイル検出、レポーター

@jscpd/tokenizer

ソースコードのトークナイズ

@jscpd/html-reporter

HTMLレポート

@jscpd/badge-reporter

SVGバッジ

jscpd-sarif-reporter

SARIF(GitHub Code Scanning)

@jscpd/leveldb-store

LevelDB永続ストア

@jscpd/redis-store

Redis分散ストア

cpd (Rustエンジン)

Rust搭載エンジン(v5.x) — jscpd@5 としても利用可能

jscpdの利用者

npmパッケージ jscpd は毎月10M+回ダウンロードされており、GitHubのdependentsグラフでは~5,000のリポジトリがそれを宣言しています。

分析プラットフォームにバンドル:

  • GitHub Super Linter — 公式のGitHub linterアグリゲーターで、コピー/ペースト検出器としてjscpdをバンドル

  • MegaLinter — CI向けのオープンソースlinterアグリゲーターで、ci_light を含むすべてのフレーバーでjscpdを同梱

  • Codacy — 自動コード分析プラットフォームで、重複検出エンジンにjscpdを採用

注目すべきプロジェクトでの利用:

パフォーマンス

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つのスキル:

スキル

目的

インストール

jscpd

ツールリファレンス — CLIオプション、AIレポーターのフォーマット、設定構文

npx skills add kucherenko/jscpd --skill jscpd

dry-refactoring

ガイド付きリファクタリングワークフロー — クローンを読み、戦略を選び、適用し、検証

npx skills add kucherenko/jscpd --skill dry-refactoring

インストール後、エージェントに「コードの重複を見つけて修正して」と依頼すると、適切なオプションでjscpdを呼び出し、結果に基づいてアクションを実行します。

詳細については、AI-Readyドキュメント を参照してください。

コントリビューション

開発環境(Rust と TypeScript)、テスト方針、受け入れ可能なプルリクエストの要件については、CONTRIBUTING.md を参照してください。セキュリティ問題は公開の issue ではなく、セキュリティポリシー を通じて報告してください。

  1. リポジトリ kucherenko/jscpd をフォークする

  2. フォークしたバージョンをクローンする (git clone https://github.com/{your-id}/jscpd)

  3. 依存関係をインストールする (pnpm install)

  4. 開発モードで実行する: pnpm dev

  5. 変更を追加する

  6. テストを追加して確認する: pnpm test

  7. ビルドする: pnpm build

  8. PR を作成する

バッカー

バッカーの皆様、ありがとうございます! 🙏 [バッカーになる]

スポンサー

スポンサーになってこのプロジェクトを支援してください。あなたのロゴがウェブサイトへのリンクとともにここに表示されます。 [スポンサーになる]

ライセンス

MIT © Andrey Kucherenko

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
2hResponse time
1wRelease cycle
15Releases (12mo)
Issues opened vs closed

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

  • A
    license
    A
    quality
    A
    maintenance
    Framework-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.
    28
    5,033
    102
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An 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.
    9
    47
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local MCP server that indexes TypeScript/JavaScript projects and returns budget-aware, dependency-optimized context packs for AI coding assistants.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Token-efficient MCP server for multi-language project analysis (Java, TypeScript, JavaScript, Markdown, Python) with plugins, semantic search, and static analysis.
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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