A StackOverflow legnépszerűbb Java kódpéldája hibával végződött

A legnépszerűbb Java kód példa, közzétéve a StackOverflow-n, végződött hibával, amely bizonyos feltételek mellett hibás eredményhez vezet. A szóban forgó kódot 2010-ben tették közzé, és több mint ezer ajánlást halmozott fel, és az is volt másolt sok projektben, és körülbelül 7 ezer alkalommal jelenik meg a GitHubon található tárolókban. Figyelemre méltó, hogy a hibát nem a felhasználók, akik bemásolták ezt a kódot projektjükbe, hanem a tanács eredeti szerzője találták meg.

A szóban forgó kód a bájtméretet olvashatóvá alakította át, például az 110592-t "110.6 kB" vagy "108.0 KiB"-re konvertálta. A kódot a korábban javasolt tanács logaritmusra optimalizált változataként javasoltuk, amelyben az értéket az eredeti érték ciklusban 1018, 1015, 1012, 1019-gyel való szekvenciális osztása alapján határozták meg.
106, 103 és 100, mindaddig, amíg az osztó nagyobb, mint az eredeti bájtérték. Az optimalizált verzió hanyag számításai miatt (hosszú érték túlcsordulás) nagyon nagy számok (exabájtok) feldolgozásánál az eredmény nem felelt meg a valóságnak.

A tanács írója arra is igyekezett felhívni a figyelmet, hogy a forrás megjelölése és az engedély megjelölése nélkül másolnak példákat. Korábbi adatok szerint kutatást végzett A fejlesztők 46%-a forrásmegjelölés nélkül másolta le a StackOverflow kódját, 75%-a nem volt tudatában annak, hogy a kódot a CC BY-SA szerint licencelték, és 67%-uk nem tudta, hogy ehhez forrásmegjelölés szükséges.

On Szerint Egy másik tanulmány szerint a kódpéldák másolása nem csak a kód hibáinak kockázatával, hanem sebezhetőségekkel is jár. Például a StackOverflow 72483 69 C++ kódpéldájának elemzése után a kutatók a legnépszerűbb ajánlások listáján szereplő 0.09 példában (ami 2859%) azonosítottak súlyos sebezhetőséget. A kód GitHubon való jelenlétének elemzése után kiderült, hogy a StackOverflow-ból másolt sebezhető kód XNUMX projektben volt jelen.

Forrás: opennet.ru

Hozzászólás