Die gewildste Java-kodevoorbeeld op StackOverflow het met 'n fout geëindig

Die gewildste Java-kode voorbeeldgeplaas op StackOverflow, opgeëindig met 'n fout wat lei tot die gevolgtrekking onder sekere voorwaardes van 'n verkeerde resultaat. Die betrokke kode is in 2010 geplaas en het meer as duisend aanbevelings opgehoop, en is ook gekopieer in baie projekte en word ongeveer 7 duisend keer in die bewaarplekke op GitHub gevind. Dit is opmerklik dat die fout nie gevind is deur gebruikers wat hierdie kode in hul projekte kopieer nie, maar deur die oorspronklike outeur van die advies.

Die betrokke kode het die omskakeling van die greepgrootte in 'n leesbare vorm uitgevoer, byvoorbeeld 110592 omgeskakel na "110.6 kB" of "108.0 KiB". Die kode is voorgestel as 'n logaritme-geoptimaliseerde weergawe van die vroeëre advies, waarin die waarde bepaal is op grond van die opeenvolgende verdeling van die oorspronklike waarde in 'n lus deur 1018, 1015, 1012, 1019,
106, 103 en 100, solank die deler groter is as die oorspronklike waarde in grepe. As gevolg van slordige berekeninge in die geoptimaliseerde weergawe (lang waarde-oorloop), het die resultaat van die verwerking van baie groot getalle (eksagrepe) nie met die werklikheid ooreengestem nie.

Die skrywer van die advies het ook probeer om die aandag te vestig op die probleem om voorbeelde te kopieer sonder om aan die bron toe te skryf en sonder om die lisensie te spesifiseer. Volgens vroeër navorsing 46% van ontwikkelaars het kode van StackOverflow gekopieer sonder toeskrywing, 75% het nie geweet dat die kode onder 'n CC BY-SA-lisensie versprei word nie, en 67% het nie geweet dat dit die behoefte aan toeskrywing impliseer nie.

Op data In 'n ander studie loop die kopiëring van kodevoorbeelde nie net die risiko van foute in die kode in nie, maar ook kwesbaarhede. Byvoorbeeld, na die ontleding van 72483 C++-kodevoorbeelde op StackOverflow, het die navorsers ernstige kwesbaarhede geïdentifiseer in 69 voorbeelde (wat 0.09% is) wat in die lys van die gewildste aanbevelings ingesluit is. Nadat die teenwoordigheid van hierdie kode op GitHub ontleed is, is dit aan die lig gebring dat die kwesbare kode wat vanaf StackOverflow gekopieer is, teenwoordig is in 2859 projekte.

Bron: opennet.ru

Voeg 'n opmerking