Το πιο δημοφιλές παράδειγμα κώδικα Java στο StackOverflow έχει ένα σφάλμα

Ο πιο δημοφιλής Παράδειγμα κώδικα Java, που δημοσιεύτηκε στο StackOverflow, γύρισε με ένα σφάλμα που οδηγεί στην έξοδο ενός λανθασμένου αποτελέσματος υπό ορισμένες συνθήκες. Ο εν λόγω κώδικας δημοσιεύτηκε το 2010 και έχει συγκεντρώσει περισσότερες από χίλιες συστάσεις και έχει επίσης αντιγράφηκε σε πολλά έργα και εμφανίζεται στα αποθετήρια στο GitHub περίπου 7 χιλιάδες φορές. Αξίζει να σημειωθεί ότι το σφάλμα δεν εντοπίστηκε από τους χρήστες που αντιγράφουν αυτόν τον κώδικα στα έργα τους, αλλά από τον αρχικό συντάκτη της συμβουλής.

Ο εν λόγω κώδικας μετέτρεψε το μέγεθος byte σε μια αναγνώσιμη μορφή, για παράδειγμα μετατρέποντας το 110592 σε "110.6 kB" ή "108.0 KiB". Ο κώδικας προτάθηκε ως μια βελτιστοποιημένη για λογάριθμο έκδοση της συμβουλής που προτάθηκε προηγουμένως, στην οποία η τιμή προσδιορίστηκε με βάση τη διαδοχική διαίρεση της αρχικής τιμής σε βρόχο με 1018, 1015, 1012, 1019.
106, 103 και 100, εφόσον ο διαιρέτης είναι μεγαλύτερος από την αρχική τιμή byte. Λόγω ακατάλληλων υπολογισμών στη βελτιστοποιημένη έκδοση (υπερχείλιση μεγάλης τιμής), το αποτέλεσμα κατά την επεξεργασία πολύ μεγάλων αριθμών (exabytes) δεν αντιστοιχούσε στην πραγματικότητα.

Ο συγγραφέας της συμβουλής προσπάθησε επίσης να επιστήσει την προσοχή στο πρόβλημα της αντιγραφής παραδειγμάτων χωρίς να αναφέρει την πηγή και χωρίς να αναφέρει την άδεια. Σύμφωνα με παλαιότερα στοιχεία διενήργησε έρευνα Το 46% των προγραμματιστών αντέγραψαν κώδικα από το StackOverflow χωρίς απόδοση, το 75% δεν γνώριζε ότι ο κώδικας είχε άδεια χρήσης σύμφωνα με την CC BY-SA και το 67% δεν γνώριζε ότι αυτό απαιτούσε απόδοση.

Επί Σύμφωνα με Σύμφωνα με μια άλλη μελέτη, η αντιγραφή παραδειγμάτων κώδικα εμπεριέχει όχι μόνο τον κίνδυνο σφαλμάτων στον κώδικα, αλλά και ευπάθειες. Για παράδειγμα, μετά την ανάλυση 72483 παραδειγμάτων κώδικα C++ στο StackOverflow, οι ερευνητές εντόπισαν σοβαρές ευπάθειες σε 69 παραδείγματα (που είναι 0.09%) που περιλαμβάνονται στη λίστα με τις πιο δημοφιλείς συστάσεις. Έχοντας στη συνέχεια αναλύσει την παρουσία αυτού του κώδικα στο GitHub, αποκαλύφθηκε ότι ο ευάλωτος κώδικας που αντιγράφηκε από το StackOverflow υπήρχε σε 2859 έργα.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο