Det mest populære eksemplet på Java-kode på StackOverflow har en feil

Den mest populære Java-kode eksempel, publisert på StackOverflow, endte opp med en feil som fører til utdata av et feil resultat under visse forhold. Den aktuelle koden ble lagt ut i 2010 og har samlet mer enn tusen anbefalinger, og har også blitt kopiert i mange prosjekter og vises i repositories på GitHub omtrent 7 tusen ganger. Det er bemerkelsesverdig at feilen ikke ble funnet av brukere som kopierte denne koden inn i prosjektene sine, men av den opprinnelige forfatteren av rådet.

Den aktuelle koden konverterte bytestørrelsen til en lesbar form, for eksempel konverterte 110592 til "110.6 kB" eller "108.0 KiB". Koden ble foreslått som en logaritmeoptimalisert versjon av det tidligere foreslåtte rådet, der verdien ble bestemt basert på sekvensiell deling av den opprinnelige verdien i en sløyfe med 1018, 1015, 1012, 1019.
106, 103 og 100, så lenge divisoren er større enn den opprinnelige byteverdien. På grunn av slurvete beregninger i den optimaliserte versjonen (lang verdioverløp) stemte ikke resultatet ved behandling av svært store tall (eksabyte) med virkeligheten.

Forfatteren av rådet prøvde også å trekke oppmerksomhet til problemet med å kopiere eksempler uten å oppgi kilden og uten å angi lisensen. I følge tidligere data utført forskning 46 % av utviklerne kopierte kode fra StackOverflow uten attribusjon, 75 % var ikke klar over at koden var lisensiert under CC BY-SA, og 67 % var ikke klar over at dette krevde attribusjon.

Ifølge Ifølge en annen studie innebærer kopiering av kodeeksempler ikke bare risikoen for feil i koden, men også sårbarheter. For eksempel, etter å ha analysert 72483 69 C++-kodeeksempler på StackOverflow, identifiserte forskere alvorlige sårbarheter i 0.09 eksempler (som er 2859%) inkludert i listen over de mest populære anbefalingene. Etter å ha analysert tilstedeværelsen av denne koden på GitHub, ble det avslørt at den sårbare koden kopiert fra StackOverflow var til stede i XNUMX prosjekter.

Kilde: opennet.ru

Legg til en kommentar