L'exemple de code Java le plus populaire sur StackOverflow contient une erreur

Самый популярный Exemple de code Java, publié sur StackOverflow, tourné avec une erreur conduisant à l'obtention d'un résultat incorrect dans certaines conditions. Le code en question a été publié en 2010 et a accumulé plus d'un millier de recommandations, et a également été copié dans de nombreux projets et apparaît dans les référentiels sur GitHub environ 7 XNUMX fois. Il est à noter que l'erreur n'a pas été découverte par les utilisateurs copiant ce code dans leurs projets, mais par l'auteur original de l'avis.

Le code en question convertissait la taille des octets en une forme lisible, par exemple en convertissant 110592 en « 110.6 Ko » ou « 108.0 KiB ». Le code a été proposé comme une version logarithmiquement optimisée du conseil proposé précédemment, dans lequel la valeur était déterminée sur la base de la division séquentielle de la valeur originale dans une boucle par 1018, 1015, 1012, 1019.
106, 103 et 100, tant que le diviseur est supérieur à la valeur d'octet d'origine. En raison de calculs bâclés dans la version optimisée (débordement de valeur long), le résultat lors du traitement de très grands nombres (exaoctets) ne correspondait pas à la réalité.

L'auteur de l'avis a également tenté d'attirer l'attention sur le problème de la copie d'exemples sans citer la source et sans indiquer la licence. Selon des données antérieures mené des recherches 46 % des développeurs ont copié le code de StackOverflow sans attribution, 75 % ne savaient pas que le code était sous licence CC BY-SA et 67 % ne savaient pas que cela nécessitait une attribution.

Sur Selon Selon une autre étude, la copie d’exemples de code implique non seulement des risques d’erreurs dans le code, mais également des vulnérabilités. Par exemple, après avoir analysé 72483 69 exemples de code C++ sur StackOverflow, les chercheurs ont identifié de graves vulnérabilités dans 0.09 exemples (soit 2859 %) inclus dans la liste des recommandations les plus populaires. Après avoir ensuite analysé la présence de ce code sur GitHub, il a été révélé que le code vulnérable copié depuis StackOverflow était présent dans XNUMX projets.

Source: opennet.ru

Ajouter un commentaire