Самы папулярны прыклад Java-кода на StackOverflow аказаўся з памылкай.

самы папулярны прыклад Java-кода, апублікаванага на StackOverflow, апынуўся з памылкай, якая прыводзіць да высновы пры вызначаных умовах няправільнага выніку. Разгляданы код быў размешчаны ў 2010 годзе і назапасіў больш за тысячу рэкамендацый, а таксама быў скапіяваны у многія праекты і сустракаецца ў рэпазітарах на GitHub каля 7 тысяч разоў. Характэрна, што памылку знайшлі не карыстачы, якія капіююць дадзены код у свае праекты, а першапачатковы аўтар рады.

Разгляданы код ажыццяўляў пераўтварэнне байтавага памеру ў чытэльную форму, напрыклад 110592 пераўтвараў у «110.6 kB» або «108.0 KiB». Код быў прапанаваны як аптымізаваны пры дапамозе лагарыфмаў варыянт раней прапанаванай рады, у якім велічыня вызначалася на аснове паслядоўнага дзялення зыходнага значэння ў цыкле на 1018, 1015, 1012, 1019,
106, 103 і 100, датуль, пакуль дзельнік больш зыходнага значэння ў байтах. З-за неакуратных вылічэнняў у аптымізаваным варыянце (перапаўненне значэння long) вынік працы пры апрацоўцы вельмі вялікіх лікаў (эксабайт) не адпавядаў рэчаіснасці.

Аўтар рады таксама паспрабаваў звярнуць увагу на праблему капіявання прыкладаў без спасылкі на крыніцу і без указання ліцэнзіі. Па дадзеных раней праведзенага даследавання 46% распрацоўнікаў скапіявалі код са StackOverflow без указання аўтара, 75% не ведалі, што код распаўсюджваецца пад ліцэнзіяй CC BY-SA, а 67% не ведалі, што гэта мае на ўвазе неабходнасць указання аўтарства.

Па дадзеных іншага даследавання, капіраванне прыкладаў кода спалучана не толькі з рызыкай наяўнасці ў кодзе памылак, але і ўразлівасцяў. Напрыклад, прааналізаваўшы на StackOverflow 72483 прыкладаў кода на C++, даследнікі выявілі сур'ёзныя ўразлівасці ў 69 прыкладах (што складае 0.09%), якія ўваходзяць у спіс найболей папулярных рэкамендацый. Прааналізаваўшы затым наяўнасць гэтага кода на GitHub, было выяўлена, што скапіяваны са StackOverflow уразлівы код прысутнічае ў 2859 праектах.

Крыніца: opennet.ru

Дадаць каментар