L'exemple més popular de codi Java a StackOverflow té un error

El més popular Exemple de codi Java, publicat a StackOverflow, va resultar ser amb un error que condueix a la sortida d'un resultat incorrecte en determinades condicions. El codi en qüestió es va publicar l'any 2010 i ha acumulat més d'un miler de recomanacions, i també s'ha copiat en molts projectes i apareix als repositoris de GitHub unes 7 mil vegades. Cal destacar que l'error no el van trobar els usuaris que copiaven aquest codi als seus projectes, sinó l'autor original del consell.

El codi en qüestió va convertir la mida del byte en una forma llegible, per exemple, convertint 110592 a "110.6 kB" o "108.0 KiB". El codi es va proposar com una versió optimitzada per al logaritme del consell proposat anteriorment, en què el valor es va determinar en funció de la divisió seqüencial del valor original en un bucle per 1018, 1015, 1012, 1019.
106, 103 i 100, sempre que el divisor sigui més gran que el valor de byte original. A causa dels càlculs descuidados en la versió optimitzada (desbordament de valor llarg), el resultat en processar nombres molt grans (exabytes) no es corresponia amb la realitat.

L'autor del consell també va intentar cridar l'atenció sobre el problema de copiar exemples sense citar la font i sense indicar la llicència. Segons dades anteriors investigació realitzada El 46% dels desenvolupadors va copiar codi de StackOverflow sense atribució, el 75% no sabia que el codi tenia llicència CC BY-SA i el 67% no sabia que això requeria una atribució.

En donat Segons un altre estudi, copiar exemples de codi implica no només el risc d'errors en el codi, sinó també vulnerabilitats. Per exemple, després d'analitzar 72483 exemples de codi C++ a StackOverflow, els investigadors van identificar vulnerabilitats greus en 69 exemples (el 0.09%) inclosos a la llista de recomanacions més populars. Després d'haver analitzat la presència d'aquest codi a GitHub, es va revelar que el codi vulnerable copiat de StackOverflow estava present en 2859 projectes.

Font: opennet.ru

Afegeix comentari