Des chercheurs américains ont analysé 428 millions de fichiers Java, Python, C/C++ et JavaScript déposés
sur la plateforme Github. Résultat, 70% du code sur GitHub serait constitué de
fichiers clonés. Java serait l’environnement le moins copié, et JavaScript le
plus cloné.
L’originalité sur GitHub
se fait rare. Selon une étude de l’université de
Californie à Irvin (Etats-Unis), la plateforme ne compterait que 85 millions de
fichiers uniques sur un échantillon de 428 millions. « Cela signifie qu’il y a 82% de chances que
le fichier que vous regardez ait un doublon ailleurs dans GitHub » explique sur son blog Adrain Colyer, qui a
participé au projet.
70% du code provient de fichiers clonés
Les 8 chercheurs ont présenté
leurs travaux à la conférence « Object-Oriented Programming, Systems,
Languages & Applications » (OOPSLA) en octobre dernier à
Vancouver (Canada). Leur objectif initial était d’essayer de définir la « granularité » de la copie.
C’est-à-dire la quantité de fichiers échangés entre différents clones, rapporte le site Developpez.
Les auteurs de l’étude
ont passé en revue « un corpus de
4,5 millions de projets non forkés hébergés sur GitHub ». Tous
ces fichiers étaient écrits en langage Java, C ++, Python et JavaScript. Le
résultat est sans appel. « 70 %
du code sur GitHub est constitué de clones de fichiers créés précédemment »
concluent les auteurs de l’étude.
94% of JavaScript files in GitHub are file-hash clones of the other 6%. There are high dup. rates in other languages too. Why so much duplication??? (This excludes forks) https://t.co/0WlgFp398g pic.twitter.com/bRHIL4LNsp
— Adrian Colyer (@adriancolyer) 20 novembre 2017
https://platform.twitter.com/widgets.js
JavaScript, langage le plus copié
Dans la catégorie
fichiers les plus dupliqués, JavaScript tient le haut du pavé. Ce langage
informatique détient « le plus haut taux
de duplication de fichiers, seulement 6 % des fichiers sont distincts ».
A l’opposé, le langage Java présente « le
moins de duplications, 60 % des fichiers sont distincts » indique
l’étude.
Les chercheurs n’ont pas
seulement traqué les clones parfaits. Ils ont élargi leur périmètre aux projets
qui présentaient des variations mineures : espaces, tabulations,
commentaires, etc. les chercheurs ont utilisé le « token hash » SourcererCC pour détecter des fichiers « similaires ». Comprenez avec des
modifications plus importantes, mais pas significatives du code.
“DejaVu: a map of code duplicates on GitHub” Lopes et al., OOPSLA’17 https://t.co/0WlgFp398g #themorningpaper
Turns out there’s an amazing amount of file duplication in GitHub repos, even when *excluding forks*. What’s going on? Lopes et al. investigate… pic.twitter.com/M69FyAEHrH
— Adrian Colyer (@adriancolyer) 20 novembre 2017
https://platform.twitter.com/widgets.js
Une infographie du taux d’originalité
Résultat, 30% des
fichiers Java ne sont pas des copies. Cette proportion tombe à 19% pour les
fichiers Python, 13 % pour C/C++ et seulement 3% pour JavaScript. Pour aider
les développeurs, les chercheurs ont créé une web app baptisée « Déjà
Vu ».
Elle répertorie tous les fichiers examinés dans l’étude, avec leur nombre de
clones et leur degré d’originalité.
Ajouter un commentaire