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