Najpopulárnejší príklad kódu Java na StackOverflow má chybu

Najobľúbenejšie Príklad kódu Java, publikované na StackOverflow, Ukázalo sa, že je s chybou vedúcou k výstupu nesprávneho výsledku za určitých podmienok. Príslušný kód bol uverejnený v roku 2010 a nazhromaždil viac ako tisíc odporúčaní a tiež bol skopírované v mnohých projektoch a objavuje sa v úložiskách na GitHub asi 7 tisíc krát. Je pozoruhodné, že chybu nenašli používatelia, ktorí skopírovali tento kód do svojich projektov, ale pôvodný autor rady.

Príslušný kód previedol veľkosť bajtu do čitateľnej podoby, napríklad previedol 110592 na "110.6 kB" alebo "108.0 KiB". Kód bol navrhnutý ako logaritmicky optimalizovaná verzia predtým navrhovanej rady, v ktorej bola hodnota určená na základe postupného delenia pôvodnej hodnoty v slučke číslom 1018, 1015, 1012, 1019.
106, 103 a 100, pokiaľ je deliteľ väčší ako pôvodná hodnota bajtu. Kvôli lajdáckym výpočtom v optimalizovanej verzii (long value overflow) výsledok pri spracovaní veľmi veľkých čísel (exabajtov) nezodpovedal realite.

Autor rady sa snažil upozorniť aj na problém kopírovania príkladov bez uvedenia zdroja a bez uvedenia licencie. Podľa skorších údajov uskutočnil výskum 46 % vývojárov skopírovalo kód zo StackOverflow bez uvedenia zdroja, 75 % nevedelo, že kód bol licencovaný pod CC BY-SA, a 67 % nevedelo, že to vyžaduje uvedenie zdroja.

Na Podľa Podľa inej štúdie kopírovanie príkladov kódu zahŕňa nielen riziko chýb v kóde, ale aj zraniteľnosti. Napríklad po analýze 72483 69 príkladov kódu C++ na StackOverflow výskumníci identifikovali vážne zraniteľnosti v 0.09 príkladoch (čo je 2859 %) zahrnutých v zozname najpopulárnejších odporúčaní. Po analýze prítomnosti tohto kódu na GitHub sa zistilo, že zraniteľný kód skopírovaný zo StackOverflow bol prítomný v XNUMX projektoch.

Zdroj: opennet.ru

Pridať komentár