L'esempio più popolare di codice Java su StackOverflow presenta un errore

Самый популярный Esempio di codice Java, pubblicato su StackOverflow, si voltò con un errore che porta all'emissione di un risultato errato in determinate condizioni. Il codice in questione è stato pubblicato nel 2010 e ha accumulato più di mille raccomandazioni, e lo è stato anche copiato in molti progetti e appare nei repository su GitHub circa 7mila volte. È interessante notare che l'errore non è stato riscontrato dagli utenti che copiavano questo codice nei loro progetti, ma dall'autore originale del consiglio.

Il codice in questione convertiva la dimensione in byte in una forma leggibile, convertendo ad esempio 110592 in "110.6 kB" o "108.0 KiB". Il codice è stato proposto come una versione ottimizzata per il logaritmo del consiglio proposto in precedenza, in cui il valore è stato determinato in base alla divisione sequenziale del valore originale in un ciclo per 1018, 1015, 1012, 1019.
106, 103 e 100, purché il divisore sia maggiore del valore del byte originale. A causa di calcoli approssimativi nella versione ottimizzata (overflow di valori lunghi), il risultato durante l'elaborazione di numeri molto grandi (exabyte) non corrispondeva alla realtà.

L'autore del consiglio ha cercato anche di richiamare l'attenzione sul problema della copiatura degli esempi senza citare la fonte e senza indicare la licenza. Secondo i dati precedenti ricerca condotta Il 46% degli sviluppatori ha copiato codice da StackOverflow senza attribuzione, il 75% non era a conoscenza del fatto che il codice fosse concesso in licenza con CC BY-SA e il 67% non era a conoscenza del fatto che ciò richiedesse l'attribuzione.

Su Secondo Secondo un altro studio, copiare esempi di codice comporta non solo il rischio di errori nel codice, ma anche di vulnerabilità. Ad esempio, dopo aver analizzato 72483 esempi di codice C++ su StackOverflow, i ricercatori hanno identificato gravi vulnerabilità in 69 esempi (pari allo 0.09%) inclusi nell'elenco dei consigli più popolari. Dopo aver analizzato la presenza di questo codice su GitHub, è emerso che il codice vulnerabile copiato da StackOverflow era presente in 2859 progetti.

Fonte: opennet.ru

Aggiungi un commento