1 note

Trouver du code dupliqué entre deux dossiers dans un projet1 nov. 2022
  • refactor
  • cli

1 nov. 2022

Trouver du code dupliqué entre deux dossiers dans un projet

Un outil CLI pour rapidement identifier du code dupliqué.

  • refactor
  • cli

J'ai eu besoin d'identifier le code en commun dans 2 dossiers d'un même projet.

Plutôt que de vérifier tous les fichiers manuellement un à un, j'ai utilisé un outil qui m'a facilité la tâche : jscpd.

C'est un package NPM qu'on peut installer dans son projet, mais dans mon cas j'ai utilisé la version CLI.

Si je veux trouver le code en commun entre les dossiers ./folder1 et ./folder2 dans mon projet next.js, que je veux ignorer le code compilé dans ./.next et les ./node_modules, et que je veux un rapport en html je me positionne à la racine de mon projet, et j'exécute la commande suivante :

Terminal
npx jscpd --skipLocal ./folder1 ./folder2 --reporters html --ignore "**/node_modules,**/.next"

Ensuite il suffit d'ouvrir le fichier ./report/html/index.html dans un navigateur pour consulter le rapport.

jscpd report screenshot

Paramètres#

On peut aussi changer les paramètres de base en fonction de nos besoins. La documentation liste toutes les options.

Par exemple, si on prend la ligne de commande suivante :

Terminal
npx jscpd --pattern "src/**/*.js" --min-tokens 15 --min-lines 5
  • --pattern ou -p permet de ne cibler que les fichiers correspondants à un pattern donné. Ici on ciblera tous les fichiers javascript dans le dossier src.
  • --min-tokens ou -k correspond au nombre minimum de répétitions de tokens. Un token est l'équivalent d'un mot. Ici, un morceau de code ne sera détecté comme dupliqué qu'à partir de 15 tokens identiques.
  • --min-lines ou -l correspond au nombre minimum de lignes de code à détecter. Ici, un morceau de code ne sera détecté comme dupliqué qu'à partir de 15 lignes identiques.

Source