Détecteur de code similaire
Je suis à la recherche d'un outil pour comparer les codes source pour la ressemblance.
Nous avons une très trivial système qui a une énorme quantité de faux positifs et réels positifs peuvent facilement obtenir enfouie en eux.
Mes besoins sont:
- raisonnablement petite quantité de faux positifs
- bon taux de détection (ouais ils vont les uns contre les autres)
- idéalement avec une sortie plus complexe que juste une seule valeur
- utilisable pour C (C99) et C++ (C++03 et optimale de C++11)
- toujours maintenu
- utilisable pour comparer deux fichiers source les uns contre les autres
- utilisable en mode non-interactif
EDIT:
Pour éviter toute confusion, les deux extraits de code sont identiques et doit être détecté en tant que tel:
for (int i = 0; i < 10; i++) { bla; }
int i; while (i < 10) { bla; i++; }
La même chose ici:
int x = 10; y = x + 5;
int a = 10; y = a + 5;
source d'informationauteur Let_Me_Be
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé de la MOUSSE dans le passé: http://theory.stanford.edu/~aiken/moss/ pour détecter un plagiat de code. Depuis, il travaille sur un plan sémantique, il permet de détecter les situations présentées ci-dessus. L'outil est dépendant de la langue, donc les commentaires ne sont pas considérées dans l'analyse, et il va un long chemin dans la détection de code qui a été modifiée par la simple recherche et remplacement de variables et/ou les noms de fonction.
Remarque: j'ai utilisé l'outil il y a quelques années lorsque j'ai enseigné l'informatique à l'école grad, et il a fonctionné à merveille dans la détection de code qui ont été arrachés de l'internet. Voici une bien documenté compte de l'application similaire: http://fie2012.org/sites/fie2012.org/history/fie99/papers/1110.pdf
Si vous google "logiciel de mesure de similarité", vous devriez trouver un peu plus utile hits:
http://www.ics.heacademy.ac.uk/resources/assessment/plagiarism/detectiontools_sourcecode.html
Votre problème en Informatique Terminologie peut-être indiqué que le Code Source de la Détection de Plagiat. Un bon début serait de lire cet article sur le Dr Dobbs: La Détection De Code Source Du Plagiat. Il répertorie les Algorithmes de détection de Plagiat dans le code source.
Remarque: tout Ce que vous avez demandé est en effet difficile le calcul de problème 🙂
Peut être Copier-coller-détecteur de PMD?
Vous pouvez essayer de duplo. Elle permet de trouver des lignes communes. Il a une capacité à ignorer les changements d'espaces, mais ne détecte pas le code avec le renommé les variables, de sorte qu'il est plus un nettoyage de l'aide qu'une aide lors de la détection de plagiat.
- Je commencer à utiliser JPLAG (https://github.com/jplag/jplag) de code de vérification de la similitude et de comparer les élèves travaille en Java et les fichiers de texte.
Il fonctionne bien pour vérifier la même structure du code et de la Substitution de variable.