StackOverflow मा Java कोडको सबैभन्दा लोकप्रिय उदाहरणमा त्रुटि छ

सबैभन्दा लोकप्रिय пример 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

एक टिप्पणी थप्न