StackOverflow kõige populaarsemas Java-koodi näites on viga

Kõige populaarsem Java koodi näide, avaldatud StackOverflow's, lõpetas veaga, mis põhjustab teatud tingimustel vale tulemuse. Kõnealune kood postitati 2010. aastal ja sellele on kogunenud üle tuhande soovituse ja seda on ka olnud kopeeritud paljudes projektides ja ilmub GitHubi hoidlates umbes 7 tuhat korda. Tähelepanuväärne on see, et vea ei leidnud kasutajad, kes kopeerisid selle koodi oma projektidesse, vaid nõuande algne autor.

Kõnealune kood teisendas baidi suuruse loetavasse vormi, teisendades näiteks 110592 väärtuseks "110.6 kB" või "108.0 KiB". Kood pakuti välja varem pakutud nõuande logaritmiga optimeeritud versioonina, milles väärtus määrati algse väärtuse järjestikuse jagamise põhjal tsüklis 1018, 1015, 1012, 1019-ga.
106, 103 ja 100, kui jagaja on suurem kui algne baidi väärtus. Optimeeritud versiooni lohakate arvutuste tõttu (pika väärtuse ületäitumine) ei vastanud tulemus väga suurte arvude (eksabaitide) töötlemisel tegelikkusele.

Nõuannete autor püüdis juhtida tähelepanu ka näidete kopeerimise probleemile ilma allikale viitamata ja litsentsi märkimata. Varasematel andmetel uuringuid läbi viinud 46% arendajatest kopeeris koodi StackOverflow'st ilma omistamiseta, 75% ei teadnud, et kood on litsentsitud CC BY-SA alusel, ja 67% ei teadnud, et see nõuab omistamist.

Edasi Vastavalt Teise uuringu kohaselt hõlmab koodinäidete kopeerimine mitte ainult koodi vigade ohtu, vaid ka turvaauke. Näiteks pärast StackOverflow 72483 69 C++ koodinäidete analüüsimist tuvastasid teadlased tõsiseid haavatavusi 0.09 näites (mis on 2859%), mis olid kõige populaarsemate soovituste loendis. Olles seejärel analüüsinud selle koodi olemasolu GitHubis, selgus, et StackOverflow'st kopeeritud haavatav kood oli olemas XNUMX projektis.

Allikas: opennet.ru

Lisa kommentaar