Popularity
6.5
Growing
Activity
6.1
Declining
2,808
25
167

Monthly Downloads: 0
Programming language: TypeScript
License: MIT License
Tags: HTML     Yaml     C++     Go     Java     Ruby     Python     Css     Sass     Php     Coffeescript     JavaScript     Paste     Copy     Quality     Analyze     Pmd     Cpd     Code     Clone     XML     c#     c     swift     lua     objective-c     Xsl     Twig     Copy-paste     Scala     Perl     Code-quality     Code-smells     Duplication    
Latest version: v3.3.0-rc.9

jscpd alternatives and similar modules

Based on the "Command-line apps" category.
Alternatively, view jscpd alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of jscpd or a related project?

Add another 'Command-line apps' Module

README

🇺🇦 UKRAINE NEEDS YOUR HELP NOW!

I'm the creator of this project and I'm Ukrainian.

My country, Ukraine, is being invaded by the Russian Federation, right now. I've fled Kyiv and now I'm safe with my family in the western part of Ukraine. At least for now. Russia is hitting target all over my country by ballistic missiles.

Please, save me and help to save my country!

Ukrainian National Bank opened an account to Raise Funds for Ukraine’s Armed Forces:

SWIFT Code NBU: NBUA UA UX
JP MORGAN CHASE BANK, New York
SWIFT Code: CHASUS33
Account: 400807238
383 Madison Avenue, New York, NY 10179, USA
IBAN: UA843000010000000047330992708

You can also donate to charity supporting Ukrainian army.

THANK YOU!

jscpd

npm jscpd license Travis npm

codecov FOSSA Status Backers on Open Collective Sponsors on Open Collective

NPM

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.

jscpd screenshot

Packages of jscpd

name version description
[jscpd](packages/jscpd) npm main package for jscpd (cli and API for detections included)
[@jscpd/core](packages/core) npm core detection algorithm, can be used for detect duplication in different environments, one dependency to eventemmiter3
[@jscpd/finder](packages/finder) npm detector of duplication in files
[@jscpd/tokenizer](packages/tokenizer) npm tool for tokenize programming source code
[@jscpd/leveldb-store](packages/leveldb-store) npm LevelDB store, used for big repositories, slower than default store
[@jscpd/html-reporter](packages/html-reporter) npm Html reporter for jscpd
[@jscpd/badge-reporter](packages/badge-reporter) npm Badge reporter for jscpd

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](packages/jscpd).

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 (yarn install)
  • Add your changes
  • Add tests and check it with yarn test
  • 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]

ga tracker

License

[MIT](LICENSE) © Andrey Kucherenko


*Note that all licence references and agreements mentioned in the jscpd README section above are relevant to that project's source code only.