Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

GitHub : des chercheurs estiment que plus de la moitié des codes écrits en Java, Python, C/C++ et JavaScript
Sont dupliqués

Le , par Stéphane le calme

462PARTAGES

15  0 
Une équipe internationale de huit chercheurs n'a pas cherché à mesurer la duplication de GitHub. 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. Mais en chemin, ils ont atteint un « taux impressionnant de duplication de fichiers. »

Présentée lors de la conférence OOPSLA de cette année à Vancouver, l'université de Californie à Irvine a découvert que sur 428 millions de fichiers sur GitHub, seuls 85 millions sont uniques.

« Des études antérieures ont montré qu'il y a une quantité non triviale de duplication dans le code source. Cet article analyse un corpus de 4,5 millions de projets non forkés hébergés sur GitHub représentant plus de 428 millions de fichiers écrits en Java, C ++, Python et JavaScript. Nous avons découvert que ce corpus ne contient que 85 millions de fichiers uniques. En d'autres termes, 70 % du code sur GitHub est constitué de clones de fichiers créés précédemment. Il existe une variation considérable entre les écosystèmes de langage. JavaScript a le plus haut taux de duplication de fichiers, seulement 6 % des fichiers sont distincts. Java, d'autre part, a le moins de duplication, 60 % des fichiers sont distincts. Enfin, une analyse au niveau du projet montre qu'entre 9 % et 31 % des projets contiennent au moins 80 % de fichiers qui peuvent être trouvés ailleurs. Ces taux de duplication ont des implications pour les systèmes basés sur des logiciels open source ainsi que pour les chercheurs intéressés par l'analyse de bases de code importantes », ont résumé les chercheurs.

Comme l’explique Adrian Colyer, qui a participé au projet, la raison d’être de l'étude est d'aider les chercheurs à sélectionner des échantillons aléatoires de bases de code dont ils pourraient se servir comme base pour d'autres études (il est courant dans la recherche en génie logiciel d'analyser des projets sur GitHub). En effet, la « sélection aléatoire simple pourrait conduire à des échantillons incluant une duplication élevée, ce qui pourrait fausser les résultats de la recherche », de sorte que l'indice public de duplication de code aide à « comprendre les relations de similarité dans des échantillons de projets, ou à organiser un échantillon pour réduire les doublons. »

Par exemple, selon l'étude, si un chercheur étudie combien de programmes en C et en C ++ utilisent des assertions, la duplication fausse clairement leur résultat. De même, une étude de qualité du logiciel doit prendre en compte la duplication.

Les chercheurs en ont profité pour faire une cartographie des codes dupliqués sur GitHub qu’ils ont baptisée DéjaVu.

Les chercheurs ont évalué la duplication de code en utilisant une variété de techniques de hachage. Identifier le code identique était facile, car ils produisaient des hachages identiques, mais il fallait aussi prendre en compte les logiciels avec de petits changements (espaces ou tabulations), ou même des changements plus importants.

Pour incorporer ces autres doublons dans leur échantillon, les chercheurs ont appliqué un « token hash » appelé SourcererCC qui a capturé des changements mineurs dans les espaces, les commentaires et les commandes pour identifier des clones avec des modifications trop importantes.


D’après les résultats de leur étude, en termes de pourcentage, c’est Java qui s’en sort le mieux avec 30 % de ses fichiers qui sont des originaux contre 3 % chez JavaScript.

Dans les détails, ils ont analysé 1,8 million de projets non forkés JavaScript, 1,5 million en Java, 893 000 en Python et 363 000 en C++.


Pourquoi une étude portée sur GitHub ?

Les chercheurs ont fait valoir que Github a été l'une des destinations les plus populaires pour les projets de partage, et elle a également gagné en popularité dans la recherche en tant que source d'ensembles de données à extraire pour trouver des modèles d'intérêt. « Lorsque nous expérimentons un logiciel et faisons des déclarations, statistiquement, on pourrait s'attendre à ce que la conclusion soit tirée d'un corpus de logiciels constitué de projets sélectionnés au hasard et indépendants », ont-ils fait valoir.

Selon eux, l’indépendance est tenue pour acquise dans plusieurs études, « cependant, il existe plusieurs façons dont un projet peut en influencer un autre, et la réutilisation d’un programme en est une façon importante et commune. Un ensemble de données est biaisé s'il y a trop de duplication entre les projets. »

Ils ont mis à la disposition des développeurs une Web App de DéjaVu. Il vous est également possible de télécharger pour chaque langage individuellement les Dumps MySQL.

Web App DéjàVu

Source : résultats de l'étude, billet Colyer

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de BugFactory
Membre expérimenté https://www.developpez.com
Le 24/11/2017 à 11:37
L'article mentionne explicitement que les chercheurs ont analysé du code non forké.

Ensuite, l'étude ne compare pas des lignes de code uniques comme int i = 0 mais des fichiers entiers.

Pour en revenir à l'article lui-même, je me demande si les taux de duplication très différents de Java et Javascript viennent de leurs outils de build. C'est très facile de trouver toutes les dépendances Java sur un dépôt, alors que j'ai eu occasionnellement à copier une librairie Javascript dans un dossier lib. Moins souvent ces derniers temps il est vrai.
7  0 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 24/11/2017 à 11:57
Et quid des frameworks intégrés à un projet ou bien les librairies ?
En général sur les dépôts on retrouve une version d'un framework et les librairies associées.
Donc il y a bien copie, mais je vois mal voir un readme avec la liste des librairies à aller chercher ailleurs, surtout pour les incompatibilités de version...

Du coup je trouve le résultat de l'étude tout à fait normal...
4  0 
Avatar de Aurelien Plazzotta
Membre extrêmement actif https://www.developpez.com
Le 24/11/2017 à 22:56
Cette étude révèle une absence grandissante de créateurs de progrès.

Les questions de sécurité ou de partage sont selon moi, secondaires.
Le site web github.com est devenu un gigantesque bourbier numérique où l'écrasante majorité des utilisateurs essaie de se faire passer pour ce qu'il n'est pas en revendiquant la paternité d'un code qui n'est pas le sien afin d'ajouter très fièrement une ligne Github sur son curriculum vitae pour essayer de faire croire aux recruteurs que le candidat est programmeur et en qu'en plus il est tellement généreux qu'il partage son code gratuitement!

En pondérant le caractère unique des projets avec la part relative des langages cités dans l'étude, seuls 16% des publications de code sont originales, soit plus de 8 personnes sur 10 qui n'ont rien créé mais tentent de faire illusion avec un dépôt publié à leur nom après l'avoir dupliqué.

Je remarque amèrement qu'avec tous les utilisateurs de cadriciels et gestionnaires de gestion de contenus, il y a de plus en plus de salariés dans l'informatique mais qu'il y a de moins en moins de programmeurs.
4  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 24/11/2017 à 15:21
Citation Envoyé par kilroyFR Voir le message
La morale de tous ces chiffres c'est que plus le degré de copie est important plus ca signifie que le langage est indigeste ? (javascript je ne suis pas surpris comme beaucoup je pense)
C'est surtout qu'aujourd'hui personne (ou presque) ne fait de JS sans une tripotée de librairie annexe, c'est pas rare de voir des projets qui on plus de code dans les dépendance que dans la partie métier ...
D'où le très fort taux de duplication.

Après ce qui m'étonne pour le C++ c'est que
1- Quand on ajoute une lib , on ne met généralement pas sont code source directement mais une lib dynamique/statique (quoi que les header de boost c'est déjà un paquet de code ^^ )
2- Le C++ est la communuauté qui à tendance à moins "partager" par rapport aux autres langage proposé.

Je l'aurais pensé avec beaucoup de code orignal

J'aurais bien voulu voir le top 5 des fichiers les plus dupliqué pour chaque langage
3  0 
Avatar de Aurelien Plazzotta
Membre extrêmement actif https://www.developpez.com
Le 25/11/2017 à 15:19
lulu7,

Vous ne recréez pas la roue à chaque fois parce que vous avez dabord su la créer une première fois.
Mais combien de salariés dans l'informatique ne savent pas la créer et vanteront les mérites des cadriciels ou des CMS à leur employeur? Ce type de nivellement par le bas contribue chaque jour un peu plus à convaincre les décideurs que le métier de programmeur est négigeable et que les dates d'échéances pour fournir un travail doivent toujours être de plus en plus courtes ?

Je m'éloigne du sujet, j'en conviens.
2  0 
Avatar de micka132
Expert confirmé https://www.developpez.com
Le 24/11/2017 à 11:39
Citation Envoyé par hotcryx Voir le message
"des chercheurs estiment que plus de la moitié des codes sont dupliqués"

forcement si ce sont des forks!

Cet article analyse un corpus de 4,5 millions de projets non-forké hébergé
Citation Envoyé par pokap Voir le message
Cette étude n'a aucun intérêt, je suis même surpris (voir triste) de voir que des "chercheurs" ont passé du temps à analyser des millions de ligne de code pour ça.
Les interets sont multiples. Rien qu'en terme de sécurité c'est dramatique.
Combien de projet n'auront jamais de correctif parcequ'une partie du code a été duppliqué, mais qui seront tres facilement trouvable pour le hackeur ?
2  1 
Avatar de lulu7
Inactif https://www.developpez.com
Le 24/11/2017 à 15:03
ce n'est pas justement le but de ces sites comme github justement de partager/copier/coller du code ?
Comme stackoverflow aussi... tous le monde copie-colle.
1  0 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 24/11/2017 à 16:08
Citation Envoyé par eclesia Voir le message
Ca c'est uniquement quand les languages n'ont pas de bon outils de gestion de dépendances.
Indépendemment du langage, en utilisant un SCM comme git celui-ci peut le gérer en ajoutant un external. Plus besoin de dupliquer les fichiers dans ton dépôt. Mais certains (la plupart ?) projets préfèrent embarquer une copie locale pour X ou Y raison.
1  0 
Avatar de kilroyFR
Membre éclairé https://www.developpez.com
Le 26/11/2017 à 0:35
Citation Envoyé par Aurelien Plazzotta Voir le message
lulu7,

Vous ne recréez pas la roue à chaque fois parce que vous avez dabord su la créer une première fois.
Mais combien de salariés dans l'informatique ne savent pas la créer et vanteront les mérites des cadriciels ou des CMS à leur employeur? Ce type de nivellement par le bas contribue chaque jour un peu plus à convaincre les décideurs que le métier de programmeur est négigeable et que les dates d'échéances pour fournir un travail doivent toujours être de plus en plus courtes ?

Je m'éloigne du sujet, j'en conviens.
Totalement d'accord avec ceci et c'est du vecu.
Depuis 2 ans ma boite sous traite a l'ile maurice (francophone et salaire / 4 minimum). Le constat de notre staff est simple, qu'un boulot de pisseur de code soit fait ici ou a 10 000 kms le resultat est le meme (et c'est effectivement le cas) sauf le cout.
Personnellement je trouve que c'est la faute aux devs dans ma boite; masser les chiffrages pour des choses pas compliquées; se generer du boulot non vendu etc. des projets qui explosent les budgets... bref on perd en credibilité et ca legitime d'autant plus leur envie de sous traiter ailleurs a des couts largement plus faibles.
1  0 
Avatar de Zefling
Membre expert https://www.developpez.com
Le 24/11/2017 à 13:45
Citation Envoyé par transgohan Voir le message
Et quid des frameworks intégrés à un projet ou bien les librairies ?
En général sur les dépôts on retrouve une version d'un framework et les librairies associées.
Donc il y a bien copie, mais je vois mal voir un readme avec la liste des librairies à aller chercher ailleurs, surtout pour les incompatibilités de version...

Du coup je trouve le résultat de l'étude tout à fait normal...
Quand on reprends des outils dans sont projets, forcement on se retrouve avec du code dupliqué. Combien de projets on Jquery ou 3Djs directement dans leur code.
0  0