Similarity Texter

DIE HOCHMÜTIGE DOHLE UND DER PFAU

Einst lebte eine Dohle, voll von eitlem Stolz, die stahl sich Federn, die dem Pfau entfallen warn und putzte sich damit. Das eigne Dohlenvolk ver- achtend trat sie in der schönen Pfauen Reihn. Der Unver- schämten reißt man hier die Federn aus, jagt sie mit Schnäbeln. Und die Dohle, bös verbleit will wieder nun betrübt zu ihrem Volk zurück. Die aber stoßen sie von sich, mit herbem Schimpf. Und eine derer, die zuvor verachtet, sprach zu ihr “Hätt’ unsre Lebensart dir vormals conveniert, hätt’st du, was die Natur dir schenkte, akzeptiert, dann wär dir weder jene Schande widerfahrn noch müsstest du zum Unglück jetzt verstoßen sein.”

Diese Version von Aesops Fabel ist aus Wilfried Strohs Sammlung von Übersetzungen von Jan Novák: “Aesopia”, die auf Geschichten von Phaedrus basieren.

Test 2007 – S24 JPlag

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

Vergleich
Screenshot 1: Bericht

Term neu umschrieben
Screenshot 2: Term rewritten

Out of Memory
Screenshot 3: Out of memory….

Method mismatch
Screenshot 4: Method mismatch


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. „