Evidence-based Token Abstraction for Software Plagiarism Detection

Aus SDQ-Wiki
Zur Navigation springen Zur Suche springen
Ausschreibung (Liste aller Ausschreibungen)
Jplag-logo.png Typ Bachelorarbeit oder Masterarbeit
Aushang JPlag BA-MA Topic 07-2022.pdf
Betreuer Wenden Sie sich bei Interesse oder Fragen bitte an:

Timur Sağlam (E-Mail: saglam@kit.edu, Telefon: +49-721/608-47380)

Thema

Motivation

JPlag ist ein Werkzeug, welches Ähnlichkeiten zwischen Quelltextdateien findet, um Plagiate in einer Menge von Software-Programmen zu finden. JPlag vergleicht dabei nicht nur den Quelltext an sich, sondern ist sich der Syntax der Programmiersprache und damit der Programmstruktur bewusst. Daher ist JPlag robust gegen viele Plagiatsarten und deren Verschleierung. Unterstützt werden derzeit die Programmiersprachen Java, C\#, C, C++, Python und Scheme. JPlag wird international in Universitäten und Schulen eingesetzt. Darüber hinaus kann JPlag verwendet werden, um gestohlenen Quelltexte zu erkennen. Mehr Informationen zu JPlag finden sich im Wiki, welches Teil des Open-Source-Repositorys ist.

Aufgabenstellung

JPlag analysiert den Quelltext auf der Ebene des abstrakten Syntaxbaums (AST). Dabei werden syntaktische und semantische Elemente des Quellcodes in AST-Tokens umgewandelt. Ein essenzieller Schritt ist hierbei der Schritt der Token-Abstraktion. Nur eine Untermenge der AST-Token werden in JPlag verarbeitet. Alle anderen Token werden ignoriert. In der Regel sollte hierbei der Abstraktionsgrad so gewählt werden, dass die Token die zentralen Aspekte der Programmstruktur charakterisieren. Dabei repräsentieren Token teilweise auch semantische Informationen. Die Token-Abstraktion muss für jede unterstützte Programmiersprache erneut entworfen werden. Dafür gab es bisher aber keine evidenzbasierte Methodik. Meist wurde hierbei nach Gefühl und Erfahrung vorgegangen. Ihre Aufgabe ist es, systematisch zu untersuchen, welche Sprachelemente von objektorientierten Sprachen extrahiert werden müssen, um die Qualität der Plagiatserkennung zu maximieren. Dabei soll eine Methodik für die Token-Abstraktion von zusätzliches Programmiersprachen entstehen.

Kenntnisse

  • Benötigte Kenntnisse: Java, Git.
  • Hilfreiche Kenntnisse: C/C++, Compilerbau-Grundlagen.

Wir bieten

  • Beitrag zu einem etablierten Open-Source-Projekt
  • Enger Bezug zum Entwicklungsprozess von JPlag
  • Intensive Betreuung durch das Entwicklerteam
  • Freiraum für individuelle Lösungsansätze
  • Möglichkeit zur Publikation der Ergebnisse

English Translation

Motivation

JPlag is a tool that finds similarities between source code files to find plagiarism in a set of software programs. JPlag not only compares the source code itself but is also aware of the syntax of the programming language and thus the program structure. Therefore, JPlag is robust against many types of plagiarism and their obfuscation. The programming languages Java, C\#, C, C++, Python, and Scheme are currently supported. JPlag is used internationally in universities and schools. However, it can also be used to detect stolen source code. More information on JPlag can be found in the wiki, which is part of the open-source repository.

Task

JPlag analyzes the source code at the abstract syntax tree (AST) level. In the process, syntactic and semantic elements of the source code are converted into AST tokens. An essential step here is the token abstraction. Only a subset of the AST tokens is processed in JPlag. All other tokens are ignored. As a rule, the degree of abstraction should be chosen so that the tokens characterize the central aspects of the program structure. Thereby some tokens also represent semantic information. The token abstraction must be individually designed for each supported programming language. So far, there was no evidence-based methodology for that. Mostly, this has been done by intuition and experience. Your task is to systematically investigate which language elements of object-oriented languages have to be extracted in order to maximize the quality of plagiarism detection. Thereby, a methodology for the token abstraction of additional programming languages is to be developed.

Skills

  • Required skills: Java, Git.
  • Helpful skills: C/C++, compiler building basics.

We offer

  • Contribution to an established open source project.
  • Close relation to the JPlag development process
  • Intensive supervision from the development team
  • Freedom for individual approaches to solutions
  • Possibility to publish the results