Det mest populära exemplet på Java-kod på StackOverflow har ett fel

Самый популярный Exempel på Java-kod, publicerad på StackOverflow, visade sig vara med ett fel som leder till utmatning av ett felaktigt resultat under vissa förhållanden. Koden i fråga postades 2010 och har samlat på sig mer än tusen rekommendationer, och har också blivit kopieras i många projekt och visas i repositories på GitHub cirka 7 tusen gånger. Det är anmärkningsvärt att felet inte hittades av användare som kopierade denna kod till sina projekt, utan av den ursprungliga författaren av rådet.

Koden i fråga konverterade bytestorleken till en läsbar form, till exempel konverterade 110592 till "110.6 kB" eller "108.0 KiB". Koden föreslogs som en logaritmoptimerad version av det tidigare föreslagna rådet, där värdet bestämdes baserat på den sekventiella divisionen av det ursprungliga värdet i en loop med 1018, 1015, 1012, 1019.
106, 103 och 100, så länge som divisorn är större än det ursprungliga bytevärdet. På grund av slarviga beräkningar i den optimerade versionen (långt värdespill) motsvarade inte resultatet vid bearbetning av mycket stora tal (exabyte) verkligheten.

Författaren till råden försökte också uppmärksamma problemet med att kopiera exempel utan att ange källan och utan att ange licensen. Enligt tidigare uppgifter bedrivit forskning 46 % av utvecklarna kopierade kod från StackOverflow utan tillskrivning, 75 % var inte medvetna om att koden var licensierad under CC BY-SA och 67 % var inte medvetna om att detta krävde tillskrivning.

Enligt Enligt en annan studie innebär kopiering av kodexempel inte bara risken för fel i koden, utan även sårbarheter. Till exempel, efter att ha analyserat 72483 69 C++-kodexempel på StackOverflow, identifierade forskare allvarliga sårbarheter i 0.09 exempel (vilket är 2859 %) inkluderade i listan över de mest populära rekommendationerna. Efter att ha analyserat närvaron av denna kod på GitHub, avslöjades det att den sårbara koden som kopierades från StackOverflow fanns i XNUMX projekt.

Källa: opennet.ru

Lägg en kommentar