Populārākajā Java koda piemērā vietnē StackOverflow ir kļūda

Vispopulārākais Java koda piemērs, publicēts vietnē StackOverflow, izrādījās ar kļūdu, kas noteiktos apstākļos rada nepareizu rezultātu. Attiecīgais kods tika ievietots 2010. gadā, un tajā ir uzkrāts vairāk nekā tūkstotis ieteikumu, un tas arī ir bijis nokopēts daudzos projektos un parādās GitHub krātuvēs apmēram 7 tūkstošus reižu. Zīmīgi, ka kļūdu atklāja nevis lietotāji, kopējot šo kodu savos projektos, bet gan sākotnējais padoma autors.

Attiecīgais kods konvertēja baita lielumu lasāmā formā, piemēram, konvertējot 110592 uz "110.6 kB" vai "108.0 KiB". Kods tika piedāvāts kā iepriekš piedāvātā ieteikuma logaritma optimizēta versija, kurā vērtība tika noteikta, pamatojoties uz sākotnējās vērtības secīgu dalīšanu cilpā ar 1018, 1015, 1012, 1019.
106, 103 un 100, ja vien dalītājs ir lielāks par sākotnējo baita vērtību. Sakarā ar aplietiem aprēķiniem optimizētajā versijā (ilgas vērtības pārplūde), rezultāts, apstrādājot ļoti lielus skaitļus (eksabaitus), neatbilda realitātei.

Padoma autore arī centās pievērst uzmanību problēmai, kas saistīta ar piemēru kopēšanu, nenorādot avotu un nenorādot licenci. Saskaņā ar iepriekšējiem datiem veica pētījumus 46% izstrādātāju kopēja kodu no StackOverflow bez attiecinājuma, 75% nezināja, ka kods ir licencēts saskaņā ar CC BY-SA, un 67% nezināja, ka šim nolūkam ir nepieciešams attiecinājums.

Par Saskaņā ar Saskaņā ar citu pētījumu, koda piemēru kopēšana ietver ne tikai kļūdu risku kodā, bet arī ievainojamības. Piemēram, pēc 72483 69 C++ koda piemēru analīzes pakalpojumā StackOverflow pētnieki atklāja nopietnas ievainojamības 0.09 piemēros (kas ir 2859%), kas iekļauti populārāko ieteikumu sarakstā. Pēc tam analizējot šī koda klātbūtni vietnē GitHub, atklājās, ka ievainojamais kods, kas kopēts no StackOverflow, bija XNUMX projektos.

Avots: opennet.ru

Pievieno komentāru