jscpd
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 5514 GitHub stars
Code Fail
- rimraf — Recursive directory removal in apps/jscpd-server/package.json
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Copy/paste detector for programming source code.
jscpd
Copy/paste detector for programming source code, supports 150+ formats.
Copy/paste is a common technical debt on a lot of projects. The jscpd gives the ability to find duplicated blocks implemented on more than 150 programming languages and digital formats of documents.
The jscpd tool implements Rabin-Karp algorithm for searching duplications.
Packages of jscpd
| name | version | description |
|---|---|---|
| jscpd | main package for jscpd (cli and API for detections included) | |
| jscpd-server | jscpd server application | |
| @jscpd/core | core detection algorithm, can be used for detect duplication in different environments, one dependency to eventemitter3 | |
| @jscpd/finder | detector of duplication in files | |
| @jscpd/tokenizer | tool for tokenize programming source code | |
| @jscpd/leveldb-store | LevelDB store, used for big repositories, slower than default store | |
| @jscpd/html-reporter | Html reporter for jscpd | |
| @jscpd/badge-reporter | Badge reporter for jscpd |
AI Agent Skill
jscpd includes an agent skill for detecting and eliminating code duplication with AI coding assistants (Claude, Copilot, Gemini, Cursor, etc.).
npx skills add kucherenko/jscpd
Once installed, the skill teaches your agent to run jscpd with the ai reporter and refactor detected duplications.
Installation
$ npm install -g jscpd
Usage
$ npx jscpd /path/to/source
or
$ jscpd /path/to/code
or
$ jscpd --pattern "src/**/*.js"
More information about cli here.
JSCPD Server
JSCPD Server is a standalone application that provides an API for detecting code duplication. It can be used to integrate duplication detection into your services or tools.
Installation
$ npm install -g jscpd-server
Usage
Start the server:
$ jscpd-server
Check code for duplication:
$ curl -X POST http://localhost:3000/api/check \
-H "Content-Type: application/json" \
-d '{
"code": "console.log(\"hello\");\nconsole.log(\"world\");",
"format": "javascript"
}'
More information about server here.
Programming API
For integration copy/paste detection to your application you can use programming API:
jscpd Promise API
import {IClone} from '@jscpd/core';
import {jscpd} from 'jscpd';
const clones: Promise<IClone[]> = jscpd(process.argv);
jscpd async/await API
import {IClone} from '@jscpd/core';
import {jscpd} from 'jscpd';
(async () => {
const clones: IClone[] = await jscpd(['', '', __dirname + '/../fixtures', '-m', 'weak', '--silent']);
console.log(clones);
})();
detectClones API
import {detectClones} from "jscpd";
(async () => {
const clones = await detectClones({
path: [
__dirname + '/../fixtures'
],
silent: true
});
console.log(clones);
})()
detectClones with persist store
import {detectClones} from "jscpd";
import {IMapFrame, MemoryStore} from "@jscpd/core";
(async () => {
const store = new MemoryStore<IMapFrame>();
await detectClones({
path: [
__dirname + '/../fixtures'
],
}, store);
await detectClones({
path: [
__dirname + '/../fixtures'
],
silent: true
}, store);
})()
In case of deep customisation of detection process you can build your own tool with @jscpd/core, @jscpd/finder and @jscpd/tokenizer.
Start contribution
- Fork the repo kucherenko/jscpd
- Clone forked version (
git clone https://github.com/{your-id}/jscpd) - Install dependencies (
pnpm install) - Run the project in dev mode:
pnpm dev(watch changes and rebuild the packages) - Add your changes
- Add tests and check it with
pnpm test - Build your project
pnpm build - Create PR
Who uses jscpd
- GitHub Super Linter is combination of multiple linters to install as a GitHub Action
- Code-Inspector is a code analysis and technical debt management service.
- Mega-Linter is a 100% open-source linters aggregator for CI (GitHub Action & other CI tools) or to run locally
- Codacy automatically analyzes your source code and identifies issues as you go, helping you develop software more efficiently with fewer issues down the line.
- Natural is a general natural language facility for nodejs. It offers a broad range of functionalities for natural language processing.
Backers
Thank you to all our backers! 🙏 [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
License
MIT © Andrey Kucherenko
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found