El ejemplo más popular de código Java en StackOverflow tiene un error

El más popular Ejemplo de código Java, publicado en StackOverflow, convertido con un error que conduce a la salida de un resultado incorrecto bajo ciertas condiciones. El código en cuestión fue publicado en 2010 y ha acumulado más de mil recomendaciones, y también ha sido copiado en muchos proyectos y aparece en repositorios de GitHub unas 7 mil veces. Cabe destacar que el error no lo encontraron los usuarios que copiaron este código en sus proyectos, sino el autor original del consejo.

El código en cuestión convirtió el tamaño de bytes a un formato legible, por ejemplo, convirtiendo 110592 a "110.6 kB" o "108.0 KiB". El código se propuso como una versión optimizada en logaritmos del consejo propuesto anteriormente, en el que el valor se determinaba basándose en la división secuencial del valor original en un bucle por 1018, 1015, 1012, 1019.
106, 103 y 100, siempre que el divisor sea mayor que el valor del byte original. Debido a cálculos descuidados en la versión optimizada (desbordamiento de valores largos), el resultado al procesar números muy grandes (exabytes) no se correspondía con la realidad.

El autor del consejo también intentó llamar la atención sobre el problema de copiar ejemplos sin citar la fuente y sin indicar la licencia. Según datos anteriores investigación llevada a cabo El 46% de los desarrolladores copiaron código de StackOverflow sin atribución, el 75% no sabía que el código tenía licencia CC BY-SA y el 67% no sabía que esto requería atribución.

En Según Según otro estudio, copiar ejemplos de código implica no sólo el riesgo de errores en el código, sino también vulnerabilidades. Por ejemplo, después de analizar 72483 ejemplos de código C++ en StackOverflow, los investigadores identificaron vulnerabilidades graves en 69 ejemplos (que es el 0.09%) incluidos en la lista de las recomendaciones más populares. Luego de analizar la presencia de este código en GitHub, se reveló que el código vulnerable copiado de StackOverflow estaba presente en 2859 proyectos.

Fuente: opennet.ru

Añadir un comentario