Software-Steckbrief
Nummer | S07-24 |
Produkt | JPlag |
Hersteller | Universität Karlsruhe |
Web-Site | https://www.ipd.uni-karlsruhe.de/jplag/ |
Software-Typ | Online Code-Vergleichssystem |
Kosteninfo | kostenlos, mit Registrierung |
Testdatum |
Testüberblick
Testablauf/Kommentare
- JPlag wird als Java WebStart aufgerufen. Es gibt an, Code in C#, C, C++, Java 1.2, Java 1.5, text und char vergleichen zu können. Wir haben nur C# getestet.
- Man gibt nur ein Verzeichnis an, JPlag liest dann alle Dateien in diesem Verzeichnis ein und vergleicht jede Datei mit jeder. Es ist relativ schnell, und wenn es schon erkennt, dass eine Datei dieselbe ist wie eine andere, wird nur eine der beiden weiter mit der anderen getestet.
- Als Stresstest haben wir ein Verzeichnis mit 53 Dateien in Java angeboten, sowie den Quellcode einer FlickR API Library. Hier ist das Einlesemodul ausgestiegen mit einem Fehler „Out of Memory“ nach ca. 4 Minuten. Der Flickr API-Source Code (36 Dateien) war jedoch sehr schnell eingelesen.
- Es wird ein Kachel-Überblick gegeben, sortiert nach Ähnlichkeitsgrad, und wenn man darauf klickt werden sie nebeneinander vergleichend dargestellt.
- Es gibt kleine Pfeile, die die Gleichheiten anzeigen, wenn man draufklickt werden die beiden Dateien so positioniert, dass man selber vergleichen kann.
Einzeltests
- 1-4: werden erkannt
- 5: Wir haben eine Variable verschoben, die nächste war aber typgleich, daher wurde die Übereinstimmung erst später abgebrochen.
- 6: erkannt
- 7: nichts gefunden
- 8: erkannt
- 9: es scheint, die Baumstruktur wird verglichen, dieser wird erkannt
- 10: wird erkannt, der Rumpf der for-Schleife ist identisch
- 11: erkannt
- 12: Es gab zwei Stück zu finden, nur teilweise erkannt
- 13: Beim Vertauschen von Zeilen bricht die Ähnlichkeitserkennung ob, obwohl die Baumstruktur eigentlich identisch sein muss
- 14: teilweise erkannt
- 15: nicht erkannt, die Markierung bricht ab obwohl es gleich danach identisch weiter geht.
Bewertung
Sehr anspruchsvolles System, findet sehr viele (aber nicht alle) Änderungen, die am Code vorgenommen wurde. Es scheint nur ein Problem zu geben wenn sehr viele Programme miteinander verglichen werden müssen. Wir vergeben 3 Punkte für „ja“, 1 für „teilweise“ und keine für „nein“, damit erreicht JPlag 30 von 45 Punkten, oder ein Prädikat „gut„.
Änderung | Beschreibung | Erkannt? |
---|---|---|
1 | Kommentare gelöscht | ja |
2 | Klasse umbenannt | ja |
3 | Variable umbenannt | ja |
4 | Form der Kommentare geändert | ja |
5 | Klassenvariablen verschoben | teilweise |
6 | Kommentare ergänzt | ja |
7 | Geschweifte Klammern um Anweisung ergänzt | nein |
8 | Kommentare verschoben | ja |
9 | Ausdruck in einen äquivalenten Ausdruck umformuliert | ja |
10 | NOOP eingefügt: for (int i=0; i<1;i++){} | ja |
11 | Methode umbenannt | ja |
12 | Methode verschoben | teilweise |
13 | Zwei Codezeilen vertauscht | nein |
14 | Zwei Case-Zweige vertauscht | teilweise |
15 | Ungenutzte Definition eingefügt | nein |
Screenshots
Firmenwerbung
„JPlag is a system that finds similarities among multiple sets of source code files. This way it can detect software plagiarism. JPlag does not merely compare bytes of text, but is aware of programming language syntax and program structure and hence is robust against many kinds of attempts to disguise similarities between plagiarized files. JPlag currently supports Java, C#, C, C++, Scheme and natural language text. „