StackOverflow-da Java kodunun ən məşhur nümunəsində xəta var

Ən populyar Java kodu nümunəsi, StackOverflow-da dərc edilmiş, açıldı müəyyən şərtlərdə yanlış nəticənin çıxmasına səbəb olan bir səhv ilə. Sözügedən kod 2010-cu ildə yerləşdirilib və mindən çox tövsiyə toplayıb və həmçinin köçürdü bir çox layihədə və GitHub-da depolarda təxminən 7 min dəfə görünür. Maraqlıdır ki, səhv bu kodu öz layihələrinə köçürən istifadəçilər tərəfindən deyil, məsləhətin orijinal müəllifi tərəfindən tapılıb.

Sözügedən kod bayt ölçüsünü oxunaqlı formaya çevirdi, məsələn, 110592-ni "110.6 kB" və ya "108.0 KiB"-ə çevirdi. Kod əvvəllər təklif olunan məsləhətin loqarifm üçün optimallaşdırılmış versiyası kimi təklif edildi, burada dəyər bir döngədə orijinal dəyərin 1018, 1015, 1012, 1019-a ardıcıl bölünməsi əsasında müəyyən edildi.
106, 103 və 100, bu şərtlə ki, bölən orijinal bayt dəyərindən böyükdür. Optimallaşdırılmış versiyada səliqəsiz hesablamalar (uzun dəyər daşması) səbəbindən çox böyük rəqəmləri (ekzabayt) emal edərkən nəticə reallığa uyğun gəlmədi.

Məsləhət müəllifi həm də mənbə göstərmədən və lisenziyanı göstərmədən nümunələrin köçürülməsi probleminə diqqət çəkməyə çalışıb. Əvvəlki məlumatlara görə tədqiqat aparmışdır Tərtibatçıların 46%-i kodu atributsuz StackOverflow-dan köçürüb, 75%-i kodun CC BY-SA altında lisenziyalı olduğunu və 67%-i bunun atribusiya tələb olunduğunu bilmirdi.

Haqqında Uyğun olaraq Başqa bir araşdırmaya görə, kod nümunələrinin surətinin çıxarılması yalnız kodda səhv riskini deyil, həm də zəiflikləri ehtiva edir. Məsələn, StackOverflow-da 72483 69 C++ kod nümunəsini təhlil etdikdən sonra tədqiqatçılar ən populyar tövsiyələr siyahısına daxil edilmiş 0.09 nümunədə (2859%) ciddi boşluqlar müəyyən ediblər. Daha sonra bu kodun GitHub-da mövcudluğunu təhlil etdikdən sonra StackOverflow-dan kopyalanan həssas kodun XNUMX layihədə mövcud olduğu məlum oldu.

Mənbə: opennet.ru

Добавить комментарий