Poszukuję narzędzia, które może porównywać kody źródłowe podobieństwa.Podobny wykrywacz kodu
Mamy teraz bardzo trywialny system, który ma ogromną liczbę fałszywych alarmów, a prawdziwe pozytywy mogą z łatwością zostać w nich pochowane.
Moje wymagania to:
- rozsądnie mała ilość fałszywych alarmów
- dobry wskaźnik wykrywalności (yeah te idą przed siebie)
- idealnie z bardziej złożonego wyjścia niż tylko jednej wartości
- nadające się do C (C99) i C++ (C++ 03 ++ C, a optymalnie 11)
- nadal utrzymywany
- nadające się do współpracy mparing dwa pliki źródłowe z siebie
- użytkowej w trybie non-interactive
EDIT:
Aby uniknąć nieporozumień, dwa następujące fragmenty kodu są identyczne i powinny być wykrywane jako takie:
for (int i = 0; i < 10; i++) { bla; }
int i; while (i < 10) { bla; i++; }
To samo tutaj:
int x = 10; y = x + 5;
int a = 10; y = a + 5;
Czy dyferencjał spełnia niektóre z Twoich potrzeb? –
@HighPerformanceMark LOL, nie, nie. –
Wygląda na to, że potrzebujesz narzędzia, które porównuje semantyczne podobieństwo dwóch kodów, a nie syntaktycznego. Podejrzewam, że jest to nierozwiązany problem i że SO będzie walczyć o znalezienie satysfakcjonującego rozwiązania dla ciebie. Myślę, że tak jak napisano, twoje pierwotne pytanie wprowadzi w błąd wielu czytelników, tak jak mnie wprowadziło w błąd. Sądzę, że powinieneś przepisać to całkowicie, aby jasno określić, jakiego rodzaju porównanie cię interesuje. –