Самый популярный пример Java-кода на StackOverflow оказался с ошибкой

5 декабря 2019 года

Самый популярный пример Java-кода, опубликованного на StackOverflow, содержал ошибку, приводящую к выводу при определённых условиях неверного результата. Рассматриваемый код был размещён в 2010 году и накопил более тысячи рекомендаций, а также был скопирован во многие проекты и встречается в репозиториях на GitHub около 7 тысяч раз. Примечательно, что ошибку нашли не пользователи, копирующие данный код в свои проекты, а изначальный автор совета.

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

Автор совета также попытался обратить внимание на проблему копирования примеров без ссылки на источник и без указания лицензии. По данным ранее проведённого исследования (Архивная копия от 2 июля 2021 на Wayback Machine) 46% разработчиков скопировали код со StackOverflow без указания автора, 75% не знали, что код распространяется под лицензией CC BY-SA, а 67% не знали, что это подразумевает необходимость указания авторства.

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

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Самый популярный пример Java-кода на StackOverflow оказался с ошибкой», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.