Populairste , gepost op StackOverflow, met een fout die onder bepaalde voorwaarden onjuiste resultaten oplevert. De besproken code werd in 2010 geplaatst en heeft meer dan duizend aanbevelingen verzameld, en was in veel projecten en komt ongeveer 7.000 keer voor in repositories op GitHub. Opmerkelijk is dat de fout niet is gevonden door gebruikers die deze code in hun projecten kopieerden, maar door de oorspronkelijke auteur van het advies.
De besproken code voerde een conversie uit van bytegrootte naar een leesbare vorm, bijvoorbeeld, 110592 werd omgevormd naar '110.6 kB' of '108.0 KiB'. De code werd voorgesteld als geoptimaliseerd met behulp van logaritmen, een variant van het eerder voorgestelde advies waarin de waarde werd bepaald door de oorspronkelijke waarde in een lus te delen door 1018, 1015, 1012, 1019,
106, 103 en 100, totdat de deler groter was dan de oorspronkelijke waarde in bytes. Vanwege onnauwkeurige berekeningen in de geoptimaliseerde variant (overloop van de waarde long) kwam het resultaat bij de verwerking van zeer grote getallen (exabite) niet overeen met de werkelijkheid.
De auteur van het advies probeerde ook aandacht te vestigen op het probleem van het kopiƫren van voorbeelden zonder verwijzing naar de bron en zonder een licentie te vermelden. Volgens eerder heeft 46% van de ontwikkelaars code van StackOverflow gekopieerd zonder de auteur te vermelden, 75% was niet op de hoogte dat de code onder de CC BY-SA-licentie valt, en 67% wist niet dat dit betekent dat de auteursrechten moeten worden vermeld.
Volgens In een ander onderzoek ging het kopiƫren van codevoorbeelden niet alleen gepaard met het risico van fouten in de code, maar ook met kwetsbaarheden. Bijvoorbeeld, na het analyseren van 72.483 codevoorbeelden in C++ op StackOverflow, ontdekten onderzoekers ernstige kwetsbaarheden in 69 voorbeelden (wat 0,09% van het totaal uitmaakt), die allemaal tot de meest populaire aanbevelingen behoorden. Na het analyseren van de aanwezigheid van deze code op GitHub, werd vastgesteld dat kwetsbare code die van StackOverflow was gekopieerd, aanwezig was in 2.859 projecten.
Bron: opennet.ru
