Het populairste voorbeeld van Java-code op StackOverflow bevat een fout

De meest populaire Voorbeeld van Java-code, gepubliceerd op StackOverflow, bleek te zijn met een fout die onder bepaalde omstandigheden tot een onjuist resultaat leidt. De code in kwestie is in 2010 gepost en heeft meer dan duizend aanbevelingen verzameld, en dat is ook zo geweest gekopieerd in veel projecten en verschijnt ongeveer 7 keer in repositories op GitHub. Het is opmerkelijk dat de fout niet werd gevonden doordat gebruikers deze code naar hun projecten kopieerden, maar door de oorspronkelijke auteur van het advies.

De betreffende code heeft de bytegrootte omgezet in een leesbare vorm, bijvoorbeeld door 110592 om te zetten in "110.6 kB" of "108.0 KiB". De code werd voorgesteld als een logaritme-geoptimaliseerde versie van het eerder voorgestelde advies, waarbij de waarde werd bepaald op basis van de sequentiële deling van de oorspronkelijke waarde in een lus door 1018, 1015, 1012, 1019.
106, 103 en 100, zolang de deler groter is dan de oorspronkelijke bytewaarde. Door slordige berekeningen in de geoptimaliseerde versie (lange waarde-overflow) kwam het resultaat bij het verwerken van zeer grote aantallen (exabytes) niet overeen met de werkelijkheid.

De auteur van het advies probeerde ook de aandacht te vestigen op het probleem van het kopiëren van voorbeelden zonder de bron te vermelden en zonder de licentie te vermelden. Volgens eerdere gegevens onderzoek gedaan 46% van de ontwikkelaars kopieerde code van StackOverflow zonder bronvermelding, 75% wist niet dat de code onder CC BY-SA was gelicentieerd en 67% wist niet dat hiervoor bronvermelding vereist was.

Op Volgens Volgens een ander onderzoek brengt het kopiëren van codevoorbeelden niet alleen het risico op fouten in de code met zich mee, maar ook kwetsbaarheden. Na analyse van 72483 C++-codevoorbeelden op StackOverflow hebben onderzoekers bijvoorbeeld ernstige kwetsbaarheden geïdentificeerd in 69 voorbeelden (dat is 0.09%) die zijn opgenomen in de lijst met de meest populaire aanbevelingen. Na vervolgens de aanwezigheid van deze code op GitHub te hebben geanalyseerd, werd onthuld dat de kwetsbare code gekopieerd van StackOverflow aanwezig was in 2859 projecten.

Bron: opennet.ru

Voeg een reactie