StackOverflow'taki en popüler Java kodu örneğinde bir hata var

En popüler Java kodu örneğiStackOverflow'da yayınlandı, döndü belirli koşullar altında yanlış bir sonuç verilmesine yol açan bir hatayla. Söz konusu kod 2010 yılında yayınlandı ve binden fazla öneri topladı ve aynı zamanda kopyalandı birçok projede ve GitHub'daki depolarda yaklaşık 7 bin kez yer alıyor. Hatanın, bu kodu projelerine kopyalayan kullanıcılar tarafından değil, tavsiyenin orijinal yazarı tarafından bulunması dikkat çekiyor.

Söz konusu kod, bayt boyutunu okunabilir bir forma dönüştürdü; örneğin 110592'yi "110.6 kB" veya "108.0 KiB"ye dönüştürdü. Kod, daha önce önerilen tavsiyenin logaritmik olarak optimize edilmiş bir versiyonu olarak önerildi; burada değer, bir döngüdeki orijinal değerin 1018, 1015, 1012, 1019'a sıralı bölünmesine göre belirlendi.
Bölen orijinal bayt değerinden büyük olduğu sürece 106, 103 ve 100. Optimize edilmiş sürümdeki özensiz hesaplamalar nedeniyle (uzun değer taşması), çok büyük sayıların (eksabaytlar) işlenmesi sırasında elde edilen sonuç gerçeğe uygun değildi.

Tavsiyenin yazarı ayrıca örneklerin kaynak belirtilmeden ve lisans belirtilmeden kopyalanması sorununa da dikkat çekmeye çalıştı. Daha önceki verilere göre Araştırma yürüttü Geliştiricilerin %46'sı StackOverflow'tan kaynak göstermeden kod kopyaladı, %75'i kodun CC BY-SA kapsamında lisanslandığının farkında değildi ve %67'si bunun atıf gerektirdiğinin farkında değildi.

Üzerinde Göre Başka bir araştırmaya göre kod örneklerinin kopyalanması yalnızca koddaki hata riskini değil aynı zamanda güvenlik açıklarını da içeriyor. Örneğin, StackOverflow'ta 72483 C++ kod örneğini analiz eden araştırmacılar, en popüler öneriler listesinde yer alan 69 örnekte (%0.09) ciddi güvenlik açıkları tespit etti. Daha sonra bu kodun GitHub'daki varlığı analiz edildiğinde, StackOverflow'tan kopyalanan güvenlik açığı bulunan kodun 2859 projede mevcut olduğu ortaya çıktı.

Kaynak: opennet.ru

Yorum ekle