Il più popolare , pubblicato su StackOverflow, con un errore che porta a risultati errati sotto determinate condizioni. Il codice in questione è stato pubblicato nel 2010 e ha accumulato oltre mille raccomandazioni, ed è stato in molti progetti e appare in repository su GitHub circa 7.000 volte. È notevole che l'errore non sia stato trovato dagli utenti che copiano questo codice nei loro progetti, ma dall'autore originale del consiglio.
Il codice in questione effettuava la conversione della dimensione in byte in una forma leggibile, ad esempio 110592 veniva convertito in "110,6 kB" o "108,0 KiB". Il codice era stato proposto come una versione ottimizzata tramite logaritmi del consiglio precedentemente proposto, in cui il valore veniva determinato attraversodivisione sequenziale del valore originale in un ciclo per 10^18, 10^15, 10^12, 10^19,
10^6, 10^3 e 10^0, fino a quando il divisore è maggiore del valore originale in byte. A causa di calcoli imprecisi nella versione ottimizzata (overflow del valore long) il risultato elaborato per numeri molto grandi (exabyte) non era accurato.
L'autore del consiglio ha anche cercato di richiamare l'attenzione sul problema della copia degli esempi senza citare la fonte e senza specificare la licenza. Secondo una ricerca precedentemente il 46% degli sviluppatori ha copiato codice da StackOverflow senza citare l'autore, il 75% non sapeva che il codice fosse distribuito sotto la licenza CC BY-SA, e il 67% non sapeva che ciò comportasse la necessità di attribuire il credito.
Secondo Un'altra ricerca ha rivelato che copiare esempi di codice comporta non solo il rischio di errori nel codice, ma anche vulnerabilità. Ad esempio, analizzando 72.483 esempi di codice su StackOverflow in C++, i ricercatori hanno identificato serie vulnerabilità in 69 esempi (pari allo 0,09%), inclusi nella lista delle raccomandazioni più popolari. Analizzando poi la presenza di questo codice su GitHub, è emerso che il codice vulnerabile copiato da StackOverflow è presente in 2.859 progetti.
Fonte: opennet.ru
