August 16th, 2024

JPlag – Detecting Software Plagiarism

JPlag is a local software plagiarism detection tool supporting various programming languages. It requires Java SE 21, allows customization of detection sensitivity, and can be used via CLI or API.

Read original articleLink Icon
ConcernInterestSatisfaction
JPlag – Detecting Software Plagiarism

JPlag is a software plagiarism detection tool that operates locally, ensuring that no source code or results are uploaded to the internet. It is capable of identifying similarities in code, including obfuscated versions, and supports a wide range of programming languages such as Java, C, C++, Python, and JavaScript. Users can customize the sensitivity of the plagiarism detection process. To use JPlag, it requires Java SE 21 and can be downloaded from its GitHub releases page. The tool can be utilized through a command line interface or integrated into Java applications via its API. Examples of usage are provided for both CLI and Java API, demonstrating how to set up and run plagiarism checks. Contributions to the project are encouraged, and users can report issues or provide feedback through the designated channels. For further details, users can refer to the JPlag Wiki.

- JPlag detects software plagiarism and collusion locally without internet uploads.

- It supports multiple programming languages, including Java, C, and Python.

- Users can customize detection parameters for tailored results.

- Installation requires Java SE 21, and it can be used via CLI or Java API.

- Contributions and feedback are welcomed through GitHub.

Related

1JPM: A Maven/Gradle alternative in a single Java file

1JPM: A Maven/Gradle alternative in a single Java file

The project "1JPM" is a Java Project Manager offering an alternative to Maven and Gradle. It is a single customizable Java file for project configuration, eliminating XML or Groovy. Users can integrate it by adding the JPM.java file and executing commands in the terminal. 1JPM treats everything as a plugin, allowing the addition of third-party plugins. It covers essential functions like build, clean, assemble, check, dependencies, help, tasks, and jar, but may lack some advanced features. The project is in early stages, providing basic build capabilities. Users can seek further assistance for details or support.

Malware Developers Increasingly Use V8 JavaScript for Evasion

Malware Developers Increasingly Use V8 JavaScript for Evasion

Researchers from Check Point Research (CPR) discovered a surge in malware using compiled V8 JavaScript to avoid detection. CPR's View8 tool helps analyze hidden malicious code, highlighting the challenge for cybersecurity.

Jurigged: Hot Reloading for Python

Jurigged: Hot Reloading for Python

The GitHub repository hosts "jurigged," a tool for updating code during runtime. It allows live code modifications, integrating new behavior seamlessly. Users can also use the "develoop" feature for interactive development.

JSTinker: An open source clone of JSFiddle

JSTinker: An open source clone of JSFiddle

JSTinker is an open-source project on GitHub, providing an offline version of JSFiddle with HTML/CSS/JS editors, preview, syntax checks, and script wrapping in an iFrame sandbox. Contributors can engage through forking, branching, committing, and submitting pull requests. Operating under the MIT License, allowing free utilization, modification, and distribution. Explore the project on GitHub for more details.

A List of companies that use Array Languages (J, K, APL, q)

A List of companies that use Array Languages (J, K, APL, q)

A GitHub repository has been created to list companies using array languages like J, K, APL, and q, detailing their sectors, locations, and remote work policies, encouraging user contributions.

AI: What people are saying
The comments on JPlag reveal various perspectives on plagiarism detection tools and their effectiveness.
  • Several users discuss the vulnerabilities of JPlag and similar tools, referencing research that demonstrates how they can be evaded.
  • Users express interest in developing or improving plagiarism detection tools, with some considering creating proprietary solutions.
  • There are inquiries about JPlag's capabilities, including its effectiveness in detecting code duplication and its requirements for a comparison corpus.
  • Some users share positive experiences with JPlag, noting its effectiveness in educational settings.
  • Concerns about the moral implications of plagiarism detection and the need for more robust solutions are also highlighted.
Link Icon 12 comments
By @emeryberger - 6 months
JPlag, like similar plagiarism detectors, is vulnerable to attack. We outline the attack in this paper and show its effectiveness against JPlag and another widely used plagiarism detector, Moss. Note that this was written in 2020, in the pre “CheatGPT” era!

https://arxiv.org/abs/2010.01700

Mossad: Defeating Software Plagiarism Detection

Breanna Devore-McDonald, Emery D. Berger

Automatic software plagiarism detection tools are widely used in educational settings to ensure that submitted work was not copied. These tools have grown in use together with the rise in enrollments in computer science programs and the widespread availability of code on-line. Educators rely on the robustness of plagiarism detection tools; the working assumption is that the effort required to evade detection is as high as that required to actually do the assigned work.

This paper shows this is not the case. It presents an entirely automatic program transformation approach, Mossad, that defeats popular software plagiarism detection tools. Mossad comprises a framework that couples techniques inspired by genetic programming with domain-specific knowledge to effectively undermine plagiarism detectors. Mossad is effective at defeating four plagiarism detectors, including Moss and JPlag. Mossad is both fast and effective: it can, in minutes, generate modified versions of programs that are likely to escape detection. More insidiously, because of its non-deterministic approach, Mossad can, from a single program, generate dozens of variants, which are classified as no more suspicious than legitimate assignments. A detailed study of Mossad across a corpus of real student assignments demonstrates its efficacy at evading detection. A user study shows that graduate student assistants consistently rate Mossad-generated code as just as readable as authentic student code. This work motivates the need for both research on more robust plagiarism detection tools and greater integration of naturally plagiarism-resistant methodologies like code review into computer science education.

By @drapado - 6 months
I recently had to check code from some of my students at the university as I suspected plagiarism. I discovered JPlag which works like a charm and generates nice reports
By @thiht - 6 months
I was actually looking for something like this a few days ago!

There’s an open source tool which I love the idea of (basically a tool for declarative integration tests), but I really don’t like it’s implementation. I tried to contribute to improve it, but it’s too much work and it will never fit my ideal.

So I basically decided to "redo it but better", and I’m also tempted to make it a paid, proprietary tool because my implementation diverges enough that I consider it a different codebase altogether (and it would bring legitimate value to companies). I wrote my code from scratch but still had some knowledge of the original code base so I’d be interested in running something like JPlag to make sure I didn’t accidentally plagiarize open source code.

I hope I find a way to make it compare 2 codebases :)

By @viralpraxis - 6 months
One of the key outcomes of my master's thesis was the development of an extendable solution for Code Clone Detection (CCD), primarily focused on code and tested with undergraduates at my university [1]. Although I didn't have time to complete the adapter for JPlag, I believe it would be highly beneficial.

Interestingly, whenever I discussed my thesis, the first reaction from others often revolved around moral concerns.

[1] https://github.com/studyfair/studyfair

By @Retr0id - 6 months
Presumably, this needs a corpus of software to check against. Does it include one, or do you have to bring your own?
By @westurner - 6 months
Should a plagiarism score be considered when generating code with an infinite monkeys algorithm with selection or better?

Would that result in inability to write code in a clean room, even; because eventually all possible code strings and mutations thereof would already be patented.

For example, are three notes or chords copyrightable?

By @ocean_moist - 6 months
pro tip: change variable/function names, switch from if/else to switch, invert if/else statements, switch for and while loops, group code differently, create helper functions or collapse helper functions, rewrite loops as streams/ranges/list comprehensions, etc. The ide can do most automatically.

It is pretty much impossible to detect software plagiarism, especially on leetcode style questions as only 1 style or pattern is the most efficient answer.

Though if a student changes it sufficiently enough, they might begin to actually see the invariants and ideas and actually learn the material.

By @hooverd - 6 months
It's funny how we drill the idea that everything must be reimplemented from first principles into students, only to flip that when they join the workforce.
By @playingalong - 6 months
Can I use it to detect Copy & Paste within my company's own codebase?
By @JosephRedfern - 6 months
Is this also effective at detecting code duplication within a codebase?