Contoh kode Java paling populer di StackOverflow mengalami kesalahan

Yang paling populer Contoh kode Java, diterbitkan di StackOverflow, berakhir dengan kesalahan yang menyebabkan keluaran hasil yang salah dalam kondisi tertentu. Kode yang dimaksud telah diposting pada tahun 2010 dan telah mengumpulkan lebih dari seribu rekomendasi, dan juga telah dipublikasikan disalin di banyak proyek dan muncul di repositori di GitHub sekitar 7 ribu kali. Patut dicatat bahwa kesalahan tersebut ditemukan bukan oleh pengguna yang menyalin kode ini ke dalam proyek mereka, tetapi oleh penulis asli dari saran tersebut.

Kode yang dimaksud mengubah ukuran byte menjadi bentuk yang dapat dibaca, misalnya mengubah 110592 menjadi "110.6 kB" atau "108.0 KiB". Kode ini diusulkan sebagai versi yang dioptimalkan logaritma dari saran yang diusulkan sebelumnya, di mana nilainya ditentukan berdasarkan pembagian berurutan dari nilai asli dalam satu lingkaran dengan 1018, 1015, 1012, 1019.
106, 103 dan 100, selama pembaginya lebih besar dari nilai byte aslinya. Karena perhitungan yang ceroboh dalam versi yang dioptimalkan (nilai overflow yang panjang), hasil saat memproses angka yang sangat besar (exabytes) tidak sesuai dengan kenyataan.

Penulis nasehat tersebut juga mencoba menarik perhatian pada masalah penyalinan contoh tanpa menyebutkan sumbernya dan tanpa menunjukkan lisensinya. Menurut data sebelumnya melakukan penelitian 46% pengembang menyalin kode dari StackOverflow tanpa atribusi, 75% tidak mengetahui bahwa kode tersebut dilisensikan di bawah CC BY-SA, dan 67% tidak menyadari bahwa hal ini memerlukan atribusi.

Pada Menurut Menurut penelitian lain, menyalin contoh kode tidak hanya melibatkan risiko kesalahan dalam kode, tetapi juga kerentanan. Misalnya, setelah menganalisis 72483 contoh kode C++ di StackOverflow, peneliti mengidentifikasi kerentanan serius di 69 contoh (yaitu 0.09%) yang termasuk dalam daftar rekomendasi paling populer. Setelah menganalisis keberadaan kode ini di GitHub, terungkap bahwa kode rentan yang disalin dari StackOverflow ada di 2859 proyek.

Sumber: opennet.ru

Tambah komentar