SkillAgentSearch skills...

JPlag

State-of-the-Art Source Code Plagiarism & Collusion Detection. Check for plagiarism in a set of programs.

Install / Use

/learn @jplag/JPlag

README

<p align="center"> <img alt="JPlag logo" src="core/src/main/resources/de/jplag/logo-dark.png" width="350"> </p>

JPlag - Detecting Source Code Plagiarism

CI Build Latest Release Maven Central License GitHub commit activity SonarCloud Coverage Java Version

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

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

  1. Download or clone the code from this repository.
  2. Run mvn clean package from the repository root to compile and build all submodules. Run mvn clean package assembly:single instead if you need the full jar, which includes all dependencies. Run mvn -P with-report-viewer clean package assembly:single to build the full jar with the report viewer. In this case, you'll need Node.js installed.
  3. You will find the generated JARs (jplag-x.y.z-jar-with-dependencies.jar) in the subdirectory cli/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

View on GitHub
GitHub Stars1.9k
CategoryEducation
Updated15h ago
Forks360

Languages

Java

Security Score

100/100

Audited on Mar 27, 2026

No findings