Най-популярният пример за Java код в StackOverflow се е оказал с грешка

Най-популярен пример за Java код, публикуван в StackOverflow, се оказа с грешка, водеща до неправилен резултат при определени условия. Разглежданият код е публикуван през 2010 година и е натрупал над хиляда препоръки, а също така е бил копиран в много проекти и се среща в хранилища в GitHub около 7 хиляди пъти. Забележително е, че грешката е открита не от потребители, копиращи този код в своите проекти, а от оригиналния автор на съвета.

Разглежданият код преобразува байтовия размер в четима форма, например 110592 преобразува в "110.6 kB" или "108.0 KiB". Кодът е предложен като оптимизиран с помощта на логаритми вариант на по-рано предложен съвет, при който стойността се определя на базата на последователното деление на входната стойност в цикъл на 1018, 1015, 1012, 1019,
106, 103 и 100, докато делителят е по-голям от входната стойност в байтове. Поради небрежни изчисления в оптимизирания вариант (препълване на дългото число) резултатът от обработката на много големи числа (ексабайти) не съответства на действителността.

Авторът на съвета също се опита да привлече внимание към проблема с копирането на примери без указание на източника и без посочване на лиценз. Според данни от предишно проведено проучване 46% от разработчиците са копирали код от StackOverflow без да посочват автора, 75% не са знаели, че кодът се разпространява под лиценз CC BY-SA, а 67% не са знаели какво означава това.

По данни Според друго проучване, копирането на примери за код крие риск не само от наличие на грешки в кода, но и от уязвимости. Например, анализирайки 72483 примера за код на C++ в StackOverflow, изследователите открили сериозни уязвимости в 69 примера (което представлява 0.09%), включващи се в списъка на най-популярните препоръки. След това, анализирайки наличието на този код в GitHub, било установено, че копираният от StackOverflow уязвим код е наличен в 2859 проекта.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster