Der beliebteste , veröffentlicht auf StackOverflow, enthielt einen Fehler, der unter bestimmten Bedingungen zu einem falschen Ergebnis führte. Der betreffende Code wurde im Jahr 2010 veröffentlicht, erhielt über eintausend Empfehlungen und wurde und kommt in etwa 7.000 Repositories auf GitHub vor. Bemerkenswert ist, dass der Fehler nicht von Nutzern gefunden wurde, die diesen Code in ihren Projekten kopierten, sondern vom ursprünglichen Autor des Vorschlags.
Der betreffende Code führte eine Umwandlung der Byte-Größe in eine lesbare Form durch, z.B. wandelte er 110592 in "110,6 kB" oder "108,0 KiB" um. Der Code wurde als optimierte Variante des zuvor vorgeschlagenen Rats mit Logarithmen angeboten, bei dem der Wert durch aufeinanderfolgendes Teilen des ursprünglichen Wertes in einer Schleife durch 1018, 1015, 1012, 1019 bestimmt wurde.
106, 103 und 100, solange der Teiler größer als der Ausgangswert in Byte ist. Aufgrund ungenauer Berechnungen in der optimierten Version (Überlauf des long-Wertes) entsprach das Ergebnis bei der Verarbeitung sehr großer Zahlen (Exabyte) nicht der Realität.
Der Autor des Ratschlags wies auch auf das Problem hin, dass Beispiele ohne Quellenangabe oder Lizenzinformationen kopiert werden. Laut einer zuvor haben 46 % der Entwickler Code von StackOverflow kopiert, ohne den Autor anzugeben, 75 % wussten nicht, dass der Code unter der Lizenz CC BY-SA verfügbar ist, und 67 % erkannten nicht, dass dies die Angabe des Urhebers erfordert.
Nach In einer anderen Studie wurde festgestellt, dass das Kopieren von Codebeispielen nicht nur mit dem Risiko von Fehlern im Code, sondern auch mit Sicherheitsanfälligkeiten verbunden ist. Beispielsweise identifizierten Forscher bei der Analyse von 72.483 C++-Codebeispielen auf StackOverflow erhebliche Sicherheitsanfälligkeiten in 69 Beispielen (was 0,09 % ausmacht), die zu den beliebtesten Empfehlungen gehören. Bei einer anschließenden Analyse dieses Codes auf GitHub stellte sich heraus, dass der von StackOverflow kopierte anfällige Code in 2.859 Projekten vorhanden ist.
Quelle: opennet.ru
