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 форматов. Готов для AI: MCP-сервер и экономный по токенам репортер. Теперь на движке Rust — в 24-37 раз быстрее.

jscpd реализует алгоритм Рабина—Карпа для поиска дублирующихся блоков кода в файлах.

Быстрый старт

# 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

Программные API на TypeScript и Rust

CI & Pre-Commit Hooks

GitHub Action, pre-commit хуки

Packages

Обзор пакетов и крейтов монорепозитория

Два движка

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)

Хранилище LevelDB

Да

Нет

Репортеры

13

13

jscpd@5 устанавливает команду jscpd. npm-пакет cpd устанавливает команду cpd. Оба содержат один и тот же Rust-бинарный файл. Чтобы получить оба имени команды из одной установки, используйте crates.io: cargo install jscpd.

Что нового

v5.0.x — движок Rust

jscpd v5 — это полная переписка на Rust с нуля, которая поставляется как jscpd@5 (устанавливает команду jscpd) или cpd (устанавливает команду cpd). Автономный бинарь — Node.js рантайм не требуется.

Тот же интерфейс, в 24-37 раз быстрее:

  • Все CLI-опции из v4 сохранеы — полная замена: jscpdjscpd@5

  • Тот же конфигурационный файл .jscpd.json, тот же алгоритм детекции, те же репортеры

  • 223 языковых формата с межформатной детекцией (Vue SFC, Svelte, Astro, Markdown)

Новое в v5:

  • В 24-37 раз быстрее детекция на реальных проектах (см. бенчмарк)

    • Небольшие кодовые базы (548 файлов): в 34 раза быстрее

    • Средние кодовые базы (9K файлов): в 37 раз быстрее

    • Крупные кодовые базы (17K файлов, 900 MB): в 24 раза быстрее

  • Git blame с параллельным сравнением авторов (--blame --reporter console-full)

  • --workers — управляет параллелизмом токенизации файлов и детекции (по умолчанию: авто, использует все ядра CPU; недоступно в v4)

  • 13 репортеров: console, console-full, json, xml, csv, html, markdown, badge, sarif, ai, xcode, threshold, silent

  • AI-репортер — экономный по токенам вывод для LLM-пайплайнов (~79% меньше токенов, чем у console)

  • --mcp — встроенный MCP-сервер через stdio: укажите вашему AI-ассистенту на бинарный файл, и он сможет проверять фрагменты на дубликаты относительно вашей кодовой базы (см. документацию)

  • --summary — сводка по кодовой базе: топ файлов и папок по токенам, строкам, размеру и оценке сложности — горячие точки для рефакторинга прямо из результатов сканирования (см. документацию)

  • Автономный бинарь — готовые сборки для 7 платформ (macOS arm64/x64, Linux arm64/x64, Windows arm64/x64)

Пока нет в v5 (для этого используйте v4):

  • Хранилища LevelDB/Redis (--store leveldb))

  • Программный API Node.js (jscpd(), detectClones()))

Полный справочник по CLI и отличия от v4 см. в документации по Rust.

v4.2.x — TypeScript-движок

  • Собственный бекенд токенизатора — заменен prismjs на собственный бекенд на основе reprism. Токенизация реальных проектов выполняется ~11,5% быстрее

  • Межформатная детекция — Vue SFC, Svelte, Astro и Markdown токенизируются поблочно, что позвояет обнаруживать дубликаты между типами файлов

  • Новые форматы: Apex, CFML/ColdFusion, GDScrip и еще более 70 форматов (всего 224, раньше было 152)

  • Определение shebang — авоматическое определе语言 для скриптов без расширения

  • --store-path — задает каталог кэша LevelDB для параллельных запусков

  • --skipComments — сокращение для --mode weak

  • --formats-names — сопоставляет имена файлов (например, Makefile, Dockerfile) с форматами

  • --noTips — подавляет вывод подсказок в CI

  • Исправления багов: дубликаты целых файлов молча отбрасывались (#728), ReDoS на файлах Lisp/Elisp (#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 скачивают более 10 млн раз в месяц, и ~5000 репозиториев указыают его на графе зависимостей GitHub.

Входит в состав аналитических платформ:

  • GitHub Super Linter — официальный агрегатор линтеров GitHub, включает jscpd в качестве детектора копипасты

  • MegaLinter — опенсорсный агрегатор линтеров для CI, поставляет jscpd во всех вариантах, включая ci_light

  • Codacy — платформа авоматического анализа кода, jscpd обеспечивает работу движка обнаружения дубликатов

Используется в известных проектах:

  • OpenClaw — персональный AI-ассистент, запускает jscpd как проверку на дубликаты в своих скриптах проверки

  • DeepSeek Harness — плагинный харнесс DeepSeek, конфигурация jscpd в CI

  • degit — генератор каркаса проектов Рича Харриса

  • MEGA webclient — веб-клиент MEGA.nz

  • Microsoff TypeAgent

  • Saleforce DX VS Code

  • Alibaba AppWorks — встраивает jscpd в качестве библотеки

  • OVHcloud manager — клиентская панель управления OVHcloud

  • KiroCrew — самосовершенствующееся постоянное рабочее пространство разработки

Производительность

Замеры проводились на macOS (Apple Silicon), по 10 прогонов на цель (3 для CopilotKit). 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-Ready

jscpd интегрируется в рабочие процессы на основе AI с помощью трех механизмов:

AI-репортер

Экономный по токенам вывод для LLM-пайплайнов (~79% меньше токенов, чем у стандартного репортера console):

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 и рефакторить обнаруженные дубликаты:

Навык

Назначение

Установка

jscpd

Справочник по инструменту — опции CLI, формат AI-репортера, синтаксис конфигурации

npx skills add kucherenko/jscpd --skill jscpd

dry-refactoring

Направляемый процесс рефакторинга — прочитать клоны, выбрать стратегию, применить, проверить

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

После установки попросите вашего агента «найти и исправить дублирование кода» — он вызовет jscpd с нужными опциями и обработает результаты.

Подробности см. в документации AI-Ready.

Участие в разработке

См. CONTRIBUTING.md: здесь описаны настройка среды разработки (Rust и TypeScript), политика тестирования и требования к приемлемым pull request. Проблемы безопасности передавайте через политику безопасности, а не в публичные issues.

  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