|
|
@@ -1,4 +1,9 @@
|
|
|
-# Download and Run JPlag
|
|
|
+[](https://travis-ci.org/jplag/)
|
|
|
+[](https://github.com/jplag/jplag/releases/latest)
|
|
|
+[](https://github.com/jplag/jplag/blob/master/LICENSE)
|
|
|
+
|
|
|
+
|
|
|
+## Download and Run JPlag
|
|
|
Download a released version - all releases are single-JAR releases.
|
|
|
|
|
|
Type `java -jar jplag-yourVersion.jar` in a console to see the command line options.
|
|
|
@@ -39,7 +44,7 @@ options are:
|
|
|
|
|
|
**Note:** java19 refers to all java version from 9 on (currently 9 - 12).
|
|
|
|
|
|
-## Example
|
|
|
+### Example
|
|
|
Assume that we want to check students' solutions that are written in Java 11.
|
|
|
|
|
|
Each student solution is in its own directory, say `student1`, `student2`, and so on.
|
|
|
@@ -54,34 +59,34 @@ To run JPlag, simply type `java -jar jplag-yourVersion.jar -l java19 -r /tmp/jpl
|
|
|
**Note:** You have to specify the language exactly as they are printed by JPlag (running JPlag without command line arguments prints all available languages - and other options).
|
|
|
E.g., if you want to process C++ files, you have specify `-l c/c++` as language option.
|
|
|
|
|
|
-## Options
|
|
|
-### `-x <file>` (eXclude) All files named in `<file>` will be ignored
|
|
|
+### Options
|
|
|
+#### `-x <file>` (eXclude) All files named in `<file>` will be ignored
|
|
|
The option `-x` requires an exclusion list saved as `<file>`.
|
|
|
The exclusion list contains a number of suffixes.
|
|
|
JPlag will ignore all files that end with one of the suffixes.
|
|
|
|
|
|
-### `-c [files]` (Compare) Compare a list of files
|
|
|
+#### `-c [files]` (Compare) Compare a list of files
|
|
|
Example: `java -jar jplag-yourVersion.jar -l java19 -c student1_file student2_file student3_file`
|
|
|
This option must be the last one.
|
|
|
JPlag will compare just a list of files pairwise.
|
|
|
|
|
|
-### `-bc <dir>` (common framework) Name of the directory which contains the basecode
|
|
|
+#### `-bc <dir>` (common framework) Name of the directory which contains the basecode
|
|
|
Example: `java -jar jplag-yourVersion.jar -s -l java19 ./submissions -bc template`
|
|
|
This option includes files that were given out to students as a framework or to fill in blanks - the content is compared with each submission and matching parts are excluded from mutual student matching.
|
|
|
`<dir>` is considered to be the name of a subdirectory residing somewhere in the submission directory, on the same level as student submissions.
|
|
|
|
|
|
-# Building JPlag
|
|
|
+## Building JPlag
|
|
|
To build and run a local installation of JPlag, you can use the pom.xml in this directory (aggregator). It builds JPlag and the available frontends.
|
|
|
|
|
|
To generate single modules run `mvn clean generate-sources package` in the base directory; if you want a single file then run `mvn clean generate-sources assembly:assembly` inside the `jplag` directory. You will find the JARs in the respective `target` directories. If you build a single JAR, it will be generated in `jplag/target`.
|
|
|
|
|
|
-## Web Service
|
|
|
+### Web Service
|
|
|
Installing, running and maintaining a local web service is not recommended as the web service uses outdated libraries and (really) needs polishing.
|
|
|
|
|
|
If you want to do it anyway: `atujplag` is the client, `webservice` is the - yepp - web service.
|
|
|
|
|
|
-# Improving JPlag
|
|
|
+## Improving JPlag
|
|
|
We're happy to incorporate all improvements to JPlag into this code base. Feel free to fork the project and send pull requests.
|
|
|
|
|
|
-## Adding new languages
|
|
|
+### Adding new languages
|
|
|
Adding a new language frontend is quite simple. Have a look at one of the `jplag.frontend` projects. All you need is a parser for the language (e.g., for ANTLR or for JavaCC) and a few lines of code that sends the tokens (that are generated by the parser) to JPlag.
|