Detector de código similar

Estoy buscando una herramienta que pueda comparar los códigos fuente para la similitud.

En este momento tenemos un sistema muy trivial que tiene una gran cantidad de falsos positivos y los verdaderos positivos pueden ser fácilmente enterrados en ellos.

Mis requerimientos son:

cantidad razonablemente pequeña de falsos positivosbuena tasa de detección (sí, estos van uno contra el otro)idealmente con una salida más compleja que un solo valorutilizable para C (C99) y C ++ (C ++ 03 y óptimamente C ++ 11)todavía mantenidoUtilizable para comparar dos archivos de origen entre síutilizable en modo no interactivo

EDITAR:

Para evitar confusiones, los siguientes dos fragmentos de código son idénticos y deben detectarse como tales:

for (int i = 0; i < 10; i++) { bla; }

int i; while (i < 10) { bla; i++; }

Lo mismo aquí:

int x = 10; y = x + 5;

int a = 10; y = a + 5;