Najbardziej popularny , opublikowanego na StackOverflow, z błędem, prowadzącym do wyświetlenia w określonych warunkach nieprawidłowego wyniku. Rozważany kod został umieszczony w 2010 roku i zyskał ponad tysiąc rekomendacji, a także został do wielu projektów i spotyka się w repozytoriach na GitHubie około 7 tysięcy razy. Co ciekawe, błąd odkrył nie użytkownik kopiujący ten kod do swoich projektów, lecz pierwotny autor rady.
Rozważany kod przekształcał rozmiar bajtów na formę czytelną, na przykład 110592 przekształcał w „110,6 kB” lub „108,0 KiB”. Kod został zaproponowany jako zoptymalizowany przy użyciu logarytmów, wariant wcześniej sugerowanej rady, w której wartość była określana na podstawie iteracyjnego dzielenia wartości początkowej w pętli przez 1018, 1015, 1012, 1019.
106, 103 i 100, aż dzielnik był większy od początkowej wartości w bajtach. Z powodu niedokładnych obliczeń w wersji optymalizowanej (przepełnienie wartości long) wynik działania przy przetwarzaniu bardzo dużych liczb (eksabajtów) nie odpowiadał rzeczywistości.
Autor rady również starał się zwrócić uwagę na problem kopiowania przykładów bez odniesienia do źródła i bez wskazania licencji. Z danych wcześniej 46% programistów skopiowało kod ze StackOverflow bez podawania autora, 75% nie wiedziało, że kod jest objęty licencją CC BY-SA, a 67% nie zdawało sobie sprawy, co to oznacza w kontekście obowiązku wskazywania autorstwa.
Według innego badania, kopiowanie przykładów kodu wiąże się nie tylko z ryzykiem wystąpienia błędów w kodzie, ale i luk bezpieczeństwa. Na przykład, analizując 72483 przykładów kodu na C++ na StackOverflow, badacze zidentyfikowali poważne luki w 69 przykładach (co stanowi 0,09%), które znajdują się na liście najbardziej popularnych rekomendacji. Następnie, analizując obecność tego kodu na GitHubie, stwierdzono, że skopiowany z StackOverflow podatny kod występuje w 2859 projektach.
Źródło: opennet.ru
