JPlag
State-of-the-Art Source Code Plagiarism & Collusion Detection. Check for plagiarism in a set of programs.
Install / Use
/learn @jplag/JPlagQuality Score
Category
Education & ResearchSupported Platforms
Tags
README
JPlag - Detecting Source Code Plagiarism
JPlag finds pairwise similarities among a set of multiple programs. It can reliably detect software plagiarism and collusion in software development, even when obfuscated. All similarities are calculated locally; no source code or plagiarism results are ever uploaded online. JPlag supports a large number of languages.
Supported Languages
All supported languages and their supported versions are listed below.
| Language | Version | CLI Argument Name | state | parser | |--------------------------------------------------------|---------------------------------------------------------------------------------------:|-------------------|:-------------------------------------------------------------------:|:---------:| | Java | 25 | java | mature | JavaC | | C | 11 | c | legacy | JavaCC | | C++ | 14 | cpp | mature | ANTLR 4 | | C# | 6 | csharp | mature | ANTLR 4 | | Python | 3.6 | python3 | mature | ANTLR 4 | | JavaScript | ES6 | javascript | beta | ANTLR 4 | | TypeScript | ~5 | typescript | beta | ANTLR 4 | | Go | 1.17 | golang | beta | ANTLR 4 | | Kotlin | 1.3 | kotlin | mature | ANTLR 4 | | R | 3.5.0 | rlang | mature | ANTLR 4 | | Rust | 1.60.0 | rust | mature | ANTLR 4 | | Swift | 5.4 | swift | beta | ANTLR 4 | | Scala | 2.13.8 | scala | mature | Scalameta | | LLVM IR | 15 | llvmir | beta | ANTLR 4 | | Scheme | ? | scheme | legacy | JavaCC | | EMF Metamodel | 2.25.0 | emf | beta | EMF | | EMF Model | 2.25.0 | emf-model | alpha | EMF | | SCXML | 1.0 | scxml | alpha | XML | | Text (naive, use with caution) | - | text | legacy | CoreNLP | | Multi-Language | - | multi | alpha | - |
Download and Installation
You need Java SE 25 to run or build JPlag.
Downloading a release
- Download a released version.
- In case you depend on the legacy version of JPlag, we refer to the legacy release v2.12.1 and the legacy branch.
Via Maven
JPlag is released on Maven Central, it can be included as follows:
<dependency>
<groupId>de.jplag</groupId>
<artifactId>jplag</artifactId>
<version><!--desired version--></version>
</dependency>
Building from sources
- Download or clone the code from this repository.
- Run
mvn clean packagefrom the repository root to compile and build all submodules. Runmvn clean package assembly:singleinstead if you need the full jar, which includes all dependencies. Runmvn -P with-report-viewer clean package assembly:singleto build the full jar with the report viewer. In this case, you'll need Node.js installed. - You will find the generated JARs (
jplag-x.y.z-jar-with-dependencies.jar) in the subdirectorycli/target.
Usage
JPlag can either be used via the CLI or directly via its Java API. For more information, see the usage information in the wiki. If you are using the CLI, the report viewer UI will launch automatically. No data will leave your computer!
CLI
Note that the legacy CLI is varying slightly.
The language can either be set with the -l parameter or as a subcommand (jplag [jplag options] -l <language name> [language options]). A subcommand takes priority over the -l option.
Language-specific arguments can be set when using the subcommand. A list of language-specific options can be obtained by requesting the help page of a subcommand (e.g., jplag java —h).
Parameter descriptions:
[root-dirs[,root-dirs...]...]
Root-directory with submissions to check for
plagiarism. If mode is set to VIEW, this parameter
can be used to specify a report file to open. In that
case only a single file may be specified.
-bc, --bc, --base-code=<baseCode>
Path to the base code directory (common fr
Related Skills
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
best-practices-researcher
The most comprehensive Claude Code skills registry | Web Search: https://skills-registry-web.vercel.app
research_rules
Research & Verification Rules Quote Verification Protocol Primary Task "Make sure that the quote is relevant to the chapter and so you we want to make sure that we want to have it identifie
groundhog
398Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
