J'écris un algorithme qui détecte les clones dans le code source. Par exemple. s'il y a un bloc comme:Algorithme de détection de clones
for(int i = o; i <5; i++){
doSomething(abc);
}
... et si ce bloc est répété ailleurs dans le code source, il sera détecté comme un clone. La méthode que j'utilise actuellement consiste à créer des hachages pour les lignes/blocs et à les comparer avec des hachages d'autres lignes/blocs dans la même source pour voir s'il y a des correspondances. Maintenant, si le même bloc que ci-dessus devait être répété quelque part avec seulement l'argument de quelque chose de différent, il ne serait pas détecté comme un clone même si cela ressemblerait beaucoup à un clone pour vous et moi. Mon algorithme détecte les correspondances exactes mais ne détecte pas les blocs correspondants où seul l'argument est différent.
Quelqu'un pourrait-il suggérer des moyens de contourner ce problème? Merci!
... euhh, juste curieux mais ... pourquoi voulez-vous faire ça? – quasiverse
Ce lien vous aidera probablement: http://stackoverflow.com/questions/5294447/how-can-i-find-source-code-copying Bien que ce soit C++, un logiciel qui peut être utilisé dans différentes langues a été fourni. –
@quasiverse: J'imagine pour le refactoring? –