Det mest populære eksempel på Java-kode på StackOverflow har en fejl

Самый популярный Java-kode eksempel, udgivet på StackOverflow, endte med en fejl, der under visse betingelser fører til output af et forkert resultat. Den pågældende kode blev udgivet i 2010 og har samlet mere end tusinde anbefalinger, og er også blevet kopieret i mange projekter og vises i repositories på GitHub omkring 7 tusinde gange. Det er bemærkelsesværdigt, at fejlen ikke blev fundet af brugere, der kopierede denne kode til deres projekter, men af ​​den oprindelige forfatter til rådgivningen.

Den pågældende kode konverterede bytestørrelsen til en læsbar form, for eksempel ved at konvertere 110592 til "110.6 kB" eller "108.0 KiB". Koden blev foreslået som en logaritmeoptimeret version af den tidligere foreslåede rådgivning, hvor værdien blev bestemt ud fra den sekventielle division af den oprindelige værdi i en sløjfe med 1018, 1015, 1012, 1019.
106, 103 og 100, så længe divisoren er større end den oprindelige byteværdi. På grund af sjuskede beregninger i den optimerede version (langt værdioverløb) svarede resultatet ved behandling af meget store tal (exabytes) ikke til virkeligheden.

Forfatteren af ​​rådet forsøgte også at henlede opmærksomheden på problemet med at kopiere eksempler uden at citere kilden og uden at angive licensen. Ifølge tidligere data udført forskning 46 % af udviklerne kopierede kode fra StackOverflow uden tilskrivning, 75 % var ikke klar over, at koden var licenseret under CC BY-SA, og 67 % var ikke klar over, at dette krævede tilskrivning.

On Ifølge Ifølge en anden undersøgelse involverer kopiering af kodeeksempler ikke kun risikoen for fejl i koden, men også sårbarheder. For eksempel, efter at have analyseret 72483 C++ kodeeksempler på StackOverflow, identificerede forskere alvorlige sårbarheder i 69 eksempler (hvilket er 0.09%) inkluderet på listen over de mest populære anbefalinger. Efter at have analyseret tilstedeværelsen af ​​denne kode på GitHub, blev det afsløret, at den sårbare kode kopieret fra StackOverflow var til stede i 2859 projekter.

Kilde: opennet.ru

Tilføj en kommentar