Cel mai popular exemplu de cod Java de pe StackOverflow s-a dovedit a avea o eroare

Cel mai popular exemplu de cod Java, publicat pe StackOverflow, s-a dovedit cu o eroare care duce la generarea unui rezultat incorect în anumite condiții. Codul discutat a fost postat în 2010 și a acumulat peste o mie de recomandări, fiind de asemenea copiat în multe proiecte și întâlnit în repository-uri pe GitHub de aproximativ 7.000 de ori. Remarcabil este că eroarea nu a fost descoperită de utilizatorii care au copiat acest cod în proiectele lor, ci de autorul original al recomandării.

Codul discutat efectua conversia dimensiunii în byte într-o formă ușor de citit, de exemplu 110592 era convertit în „110.6 kB” sau „108.0 KiB”. Codul a fost propus ca o variantă optimizată folosind logaritmi, față de varianta anterioară a recomandării, în care valoarea era determinată prin împărțirea secvențială a valorii originale într-un ciclu la 1018, 1015, 1012, 1019,
106, 103 și 100, până când divizorul devine mai mic decât valoarea originală în byte. Datorită calculelor neprecise din varianta optimizată (debitul poate depăși valoarea long), rezultatul obținut în timpul procesării unor numere foarte mari (exabyte) nu corespundea realității.

Autorul acestei recomandări a încercat, de asemenea, să atragă atenția asupra problemei copiatului exemplelor fără a menționa sursa și fără a specifica licența. Conform unor cercetări anterioare 46% dintre dezvoltatori au copiat cod de pe StackOverflow fără a menționa autorul, 75% nu știau că codul este distribuit sub licența CC BY-SA, iar 67% nu știau că aceasta impune menționarea autorului. într-o altă cercetare, copierea exemplelor de cod prezintă nu doar riscuri legate de erori în cod, ci și de vulnerabilități. De exemplu, analizând pe StackOverflow 72.483 de exemple de cod în C++, cercetătorii au descoperit vulnerabilități grave în 69 de exemple (ceea ce reprezintă 0.09%), care fac parte din lista celor mai populare recomandări. Ulterior, analizând prezența acestui cod pe GitHub, s-a constatat că codul vulnerabil copiat de pe StackOverflow este prezent în 2.859 de proiecte.

După informațiile Cel mai popular exemplu de cod Java.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster