Cel mai popular exemplu de cod Java de pe StackOverflow are o eroare

Cele mai populare Exemplu de cod Java, publicat pe StackOverflow, s-a dovedit a fi cu o eroare care duce la ieșirea unui rezultat incorect în anumite condiții. Codul în cauză a fost postat în 2010 și a acumulat peste o mie de recomandări și a fost de asemenea copiat în multe proiecte și apare în depozitele de pe GitHub de aproximativ 7 mii de ori. Este de remarcat faptul că eroarea a fost găsită nu de utilizatorii care copiau acest cod în proiectele lor, ci de autorul original al sfatului.

Codul în cauză a convertit dimensiunea octetului într-o formă care poate fi citită, de exemplu, conversia 110592 în „110.6 kB” sau „108.0 KiB”. Codul a fost propus ca o versiune optimizată în logaritm a sfatului propus anterior, în care valoarea a fost determinată pe baza împărțirii secvențiale a valorii originale într-o buclă cu 1018, 1015, 1012, 1019.
106, 103 și 100, atâta timp cât divizorul este mai mare decât valoarea inițială a octetului. Din cauza calculelor neglijente în versiunea optimizată (depășirea valorii lungi), rezultatul la procesarea unor numere foarte mari (exaocteți) nu corespundea realității.

Autorul sfatului a încercat să atragă atenția și asupra problemei copierii exemplelor fără a cita sursa și fără a indica licența. Conform datelor anterioare a efectuat cercetări 46% dintre dezvoltatori au copiat codul din StackOverflow fără atribuire, 75% nu au știut că codul este licențiat sub CC BY-SA și 67% nu au știut că acest lucru necesită atribuire.

Pe În conformitate cu Potrivit unui alt studiu, copierea exemplelor de cod implică nu numai riscul de erori în cod, ci și vulnerabilități. De exemplu, după ce au analizat 72483 de exemple de cod C++ pe StackOverflow, cercetătorii au identificat vulnerabilități grave în 69 de exemple (care este 0.09%) incluse în lista celor mai populare recomandări. După ce am analizat apoi prezența acestui cod pe GitHub, a fost dezvăluit că codul vulnerabil copiat din StackOverflow a fost prezent în 2859 de proiecte.

Sursa: opennet.ru

Adauga un comentariu