O exemplo máis popular de código Java en StackOverflow ten un erro

O máis popular Exemplo de código Java, publicado en StackOverflow, acabou cun erro que leva á saída dun resultado incorrecto en determinadas condicións. O código en cuestión foi publicado en 2010 e acumula máis de mil recomendacións, ademais de copiado en moitos proxectos e aparece nos repositorios de GitHub unhas 7 mil veces. Cabe destacar que o erro non foi atopado polos usuarios que copiaban este código nos seus proxectos, senón polo autor orixinal do consello.

O código en cuestión converteu o tamaño de byte nunha forma lexible, por exemplo convertendo 110592 en "110.6 kB" ou "108.0 KiB". O código propúxose como unha versión optimizada para o logaritmo do consello proposto anteriormente, no que o valor se determinou en función da división secuencial do valor orixinal nun bucle por 1018, 1015, 1012, 1019.
106, 103 e 100, sempre que o divisor sexa maior que o valor do byte orixinal. Debido aos cálculos descoidados na versión optimizada (desbordamento de valor longo), o resultado ao procesar números moi grandes (exabytes) non se correspondía coa realidade.

O autor do consello tamén tratou de chamar a atención sobre o problema da copia de exemplos sen citar a fonte e sen indicar a licenza. Segundo datos anteriores investigación realizada O 46 % dos desenvolvedores copiou código de StackOverflow sen atribución, o 75 % non sabía que o código estaba baixo licenza CC BY-SA e o 67 % descoñecía que iso requiría atribución.

En dado Segundo outro estudo, copiar exemplos de código implica non só o risco de erros no código, senón tamén vulnerabilidades. Por exemplo, tras analizar 72483 exemplos de código C++ en StackOverflow, os investigadores identificaron vulnerabilidades graves en 69 exemplos (o 0.09 %) incluídos na lista das recomendacións máis populares. Despois de analizar a presenza deste código en GitHub, revelouse que o código vulnerable copiado de StackOverflow estaba presente en 2859 proxectos.

Fonte: opennet.ru

Engadir un comentario