Nejoblíbenější příklad kódu Java na StackOverflow skončil s chybou

Nejpopulárnější Příklad kódu Java, zveřejněné na StackOverflow, Ukázalo se, že je s chybou vedoucí za určitých podmínek k výstupu nesprávného výsledku. Dotyčný kód byl zveřejněn v roce 2010 a nashromáždil více než tisíc doporučení a také byl zkopírován v mnoha projektech a objevuje se v repozitářích na GitHubu asi 7 tisíckrát. Je pozoruhodné, že chybu nenašli uživatelé kopírující tento kód do svých projektů, ale původní autor rady.

Dotyčný kód převedl velikost bytu do čitelné podoby, například převedl 110592 na "110.6 kB" nebo "108.0 KiB". Kód byl navržen jako logaritmicky optimalizovaná verze dříve navržené rady, ve které byla hodnota určena na základě sekvenčního dělení původní hodnoty ve smyčce 1018, 1015, 1012, 1019.
106, 103 a 100, pokud je dělitel větší než původní hodnota bajtu. Kvůli nedbalým výpočtům v optimalizované verzi (long value overflow) neodpovídal výsledek při zpracování velmi velkých čísel (exabajtů) skutečnosti.

Autor rady se také snažil upozornit na problém kopírování příkladů bez uvedení zdroje a bez uvedení licence. Podle dřívějších údajů provedl výzkum 46 % vývojářů zkopírovalo kód ze StackOverflow bez uvedení zdroje, 75 % si neuvědomovalo, že kód byl licencován pod CC BY-SA, a 67 % si nebylo vědomo, že to vyžaduje uvedení zdroje.

Na Podle Podle jiné studie zahrnuje kopírování příkladů kódu nejen riziko chyb v kódu, ale také zranitelnosti. Například po analýze 72483 69 příkladů kódu C++ na StackOverflow výzkumníci identifikovali vážná zranitelnost v 0.09 příkladech (což je 2859 %) zahrnutých v seznamu nejoblíbenějších doporučení. Poté, co jsme analyzovali přítomnost tohoto kódu na GitHubu, vyšlo najevo, že zranitelný kód zkopírovaný ze StackOverflow byl přítomen ve XNUMX projektech.

Zdroj: opennet.ru

Přidat komentář