Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork213
Copy/paste detector for programming source code.
License
kucherenko/jscpd
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 implementsRabin-Karp algorithm for searching duplications.
name | version | description |
---|---|---|
jscpd | main package for jscpd (cli and API for detections included) | |
@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 |
$ npm install -g jscpd
$ npx jscpd /path/to/source
or
$ jscpd /path/to/code
or
$ jscpd --pattern"src/**/*.js"
More information about clihere.
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';constclones:Promise<IClone[]>=jscpd(process.argv);
jscpd
async/await API
import{IClone}from'@jscpd/core';import{jscpd}from'jscpd';(async()=>{constclones:IClone[]=awaitjscpd(['','',__dirname+'/../fixtures','-m','weak','--silent']);console.log(clones);})();
detectClones
API
import{detectClones}from"jscpd";(async()=>{constclones=awaitdetectClones({path:[__dirname+'/../fixtures'],silent:true});console.log(clones);})()
detectClones
with persist store
import{detectClones}from"jscpd";import{IMapFrame,MemoryStore}from"@jscpd/core";(async()=>{conststore=newMemoryStore<IMapFrame>();awaitdetectClones({path:[__dirname+'/../fixtures'],},store);awaitdetectClones({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
.
- Fork the repokucherenko/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
- 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.
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
MIT © Andrey Kucherenko
About
Copy/paste detector for programming source code.
Topics
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.