Ähnliche code-Detektor
Ich bin auf der Suche für ein tool, das vergleichen konnte-source-codes für die ähnlichkeit.
Wir haben eine sehr triviale system jetzt, hat riesige Menge von falschen positiven und die real-positiven kann einfach vergraben in.
Meine Anforderungen sind:
- relativ kleine Menge von false positives
- gute Erkennungsrate (ja diese sind gegen einander)
- idealerweise mit komplexer Ausgabe als nur einen einzelnen Wert
- verwendbar für C (C99) und C++ (C++03 und optimal C++11)
- noch gepflegt
- verwendbar für den Vergleich der zwei Quell-Dateien gegen einander
- verwendbar im nicht-interaktiven Modus
EDIT:
Um Verwirrung zu vermeiden, werden die folgenden zwei code-snippets sind identisch und sollten als solche erkannt:
for (int i = 0; i < 10; i++) { bla; }
int i; while (i < 10) { bla; i++; }
Gilt auch hier:
int x = 10; y = x + 5;
int a = 10; y = a + 5;
InformationsquelleAutor der Frage Let_Me_Be | 2012-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verwendet habe, MOOS in die Vergangenheit: http://theory.stanford.edu/~aiken/Moos/ zur Erkennung von Plagiaten code. Da es funktioniert auf einer semantischen Ebene, Sie erkennen die Situationen, die du oben vorgestellt. Das Werkzeug ist die Sprache-bewusst, so Kommentare sind nicht Gegenstand der Analyse, und es geht einen langen Weg bei der Aufdeckung von code, der modifiziert wurde, durch einfaches suchen-und-ersetzen von Variablen und/oder Funktionsnamen.
Hinweis: ich habe das tool vor ein paar Jahren, als ich lehrte informatik in der Schule grad, und es hat wunderbar funktioniert bei der Erkennung von code, der hatte gewesen zog aus dem internet. Hier ist ein gut dokumentiertes Konto ähnlicher Anwendung: http://fie2012.org/sites/fie2012.org/history/fie99/papers/1110.pdf
Wenn Sie google "Messen software ähnlichkeit", sollten Sie ein paar weitere nützliche erwischt:
http://www.ics.heacademy.ac.uk/resources/assessment/plagiarism/detectiontools_sourcecode.html
InformationsquelleAutor der Antwort Throwback1986
Dein problem in der informatik-Terminologie vielleicht erklärt, wie Source-Code-Plagiat-Erkennung. Ein guter Anfang wäre, diesen Artikel zu Lesen auf Dr. Dobbs: Die Erkennung Von Source-Code Plagiat. Es listet die Algorithmen für die Erkennung von Plagiaten in den source-code.
Beachten Sie: Was Sie gefragt haben, ist in der Tat eine harte computing problem 🙂
InformationsquelleAutor der Antwort Yavar
Kann die Copy-paste-detector aus PMD?
InformationsquelleAutor der Antwort Kirill
Könnten Sie versuchen,duplo. Es finden gemeinsame Linien. Es hat die Fähigkeit, Sie zu ignorieren whitespace-änderungen, aber nicht erkennt-code mit umbenannten Variablen, so ist es mehr ein cleanup-Hilfe als Hilfe bei der Erkennung von Plagiaten.
InformationsquelleAutor der Antwort Benjamin Bannier
Ich die Anwendung starten JPLAG (https://github.com/jplag/jplag) zu prüfen code ähnlichkeit und vergleichen die Schüler arbeiten in Java und text-Dateien.
Es funktioniert gut, um zu überprüfen, gleichen code-Struktur-und Variablen-Ersetzung.
InformationsquelleAutor der Antwort Pierre Jean