Existe-t-il un moyen de trouver des fichiers similaires (pas des doublons)?

12

Mon objectif final est de refactoriser le code écrit par mes collègues. Alors, existe-t-il un outil qui peut trouver des fichiers différant en quelques mots seulement?

(Modifier: c'est pour un Mac, mais d'autres pourraient aussi aimer les réponses non-Mac.)

tig
la source
@harry, compte tenu de l'historique des révisions , je suppose que vous avez publié une réponse Windows, qui a été rétrogradée car c'est à ce moment-là que l'exigence Mac est apparue? Je préférerais que l'exigence Mac soit supprimée et voir votre réponse (si c'était une bonne réponse non-Mac) également!
Arjan du
@Arjan: Terminé.
harrymc
Pour un Mac, je me demandais si Spotlight pouvait être utilisé. J'en doute, mais si vous connaissez un moyen de faire les choses dans Spotlight, alors la mdfindcommande pourrait aider à écrire un script pour automatiser les choses. Cependant, je pense qu'il n'utilisera toujours que des métadonnées. Par conséquent, la recherche de fichiers similaires peut limiter le type de fichier, mais pas le contenu du fichier. Pas de cigare.
Arjan

Réponses:

5

Simian le fait pour le code source de certaines langues. Il est préférable de trouver un codage copié-collé flagrant. Ses développements semblent au point mort, mais cela fonctionne assez bien.

Benjamin Bannier
la source
N'a pas beaucoup aidé - dans l'application rails avec beaucoup de partiels très similaires, il a seulement dit que j'avais des lignes similaires dans development.log
tig
Lui avez-vous donné les bons fichiers à analyser? Vous vous souciez probablement de vos sources, non development.log. Pour les rails, jetez un œil à flay rubyforge.org/frs/…
Benjamin Bannier
Oui, je lui ai donné tous les fichiers dans l'application dir rails
tig
2

(Pour les fenêtres)

Le produit Anti-Twin (gratuit pour un usage privé) prétend pouvoir le faire:

Si vous souhaitez qu'Anti-Twin recherche non seulement des doublons complets mais également des fichiers similaires, vous pouvez réduire la correspondance minimale souhaitée de la valeur par défaut de 100% à jusqu'à 60%. Cette fonction a été particulièrement conçue pour la recherche de fichiers presque identiques où seul un petit détail a été modifié. Anti-Twin utilise la recherche de similitude dès que vous entrez une valeur inférieure à 100%. La comparaison de similitude prend beaucoup plus de temps que la recherche en double à 100%!

Malheureusement, la recherche de similitude dans le cadre de la comparaison octet par octet n'a de sens que pour quelques types de fichiers, car une similitude ne peut être détectée que si les fichiers sont non compressés et non chiffrés. Les fichiers non compressés sont par exemple des textes non formatés (.TXT) et HTML.

harrymc
la source
Je suis sur mac et je passe quelque chose à travers wine, des parallèles ou quelque chose comme ça ne rendra pas le refactoring plus facile, mais plus difficile :)
tig
@tig: Vous auriez dû le spécifier dans votre message. J'ai ajouté la balise mac.
harrymc
@Arjan: J'ai annulé cette réponse, comme vous l'avez demandé.
harrymc
à juste titre! Supprimé à [mac]nouveau la balise. Cela aurait dû être de [osx]toute façon ;-)
Arjan