انتهى مثال كود Java الأكثر شيوعًا على StackOverflow بخطأ

الاكثر شعبية مثال على كود جافاتم النشر على StackOverflow ، تحول مع وجود خطأ يؤدي إلى استنتاج نتيجة غير صحيحة في ظل ظروف معينة. تم نشر الكود المعني في عام 2010 وتراكم أكثر من ألف توصية ، وقد تم أيضًا نسخ في العديد من المشاريع ويوجد في المستودعات على GitHub حوالي 7 آلاف مرة. من الجدير بالذكر أن الخطأ لم يتم العثور عليه من قبل المستخدمين الذين ينسخون هذا الرمز في مشاريعهم ، ولكن من قبل المؤلف الأصلي للنصيحة.

نفذت الشفرة المعنية تحويل حجم البايت إلى شكل قابل للقراءة ، على سبيل المثال ، 110592 تم تحويله إلى "110.6 كيلوبايت" أو "108.0 كيلوبايت". تم اقتراح الكود كنسخة لوغاريتمية محسّنة للنصيحة السابقة ، حيث تم تحديد القيمة بناءً على التقسيم المتتالي للقيمة الأصلية في حلقة بحلول 1018 ، 1015 ، 1012 ، 1019 ،
106 و 103 و 100 ، طالما أن المقسوم عليه أكبر من القيمة الأصلية بالبايت. نظرًا للحسابات غير الدقيقة في الإصدار المحسَّن (تجاوز القيمة الطويلة) ، فإن نتيجة معالجة أعداد كبيرة جدًا (إكسابايت) لا تتوافق مع الواقع.

كما حاول مؤلف النصيحة لفت الانتباه إلى مشكلة نسخ الأمثلة دون الإسناد إلى المصدر ودون تحديد الترخيص. بحسب في وقت سابق بحث قام 46٪ من المطورين بنسخ الكود من StackOverflow بدون إسناد ، و 75٪ لم يعرفوا أن الكود موزع بموجب ترخيص CC BY-SA ، و 67٪ لم يعرفوا أن هذا يعني الحاجة إلى الإسناد.

في وفق في دراسة أخرى ، لا يؤدي نسخ أمثلة التعليمات البرمجية إلى مخاطر حدوث أخطاء في التعليمات البرمجية فحسب ، بل يؤدي أيضًا إلى وجود نقاط ضعف. على سبيل المثال ، بعد تحليل أمثلة كود 72483 C ++ على StackOverflow ، حدد الباحثون نقاط ضعف خطيرة في 69 مثالًا (بنسبة 0.09٪) مدرجة في قائمة التوصيات الأكثر شيوعًا. بعد تحليل وجود هذا الرمز على GitHub ، تم الكشف عن أن الكود الضعيف المنسوخ من StackOverflow موجود في 2859 مشروعًا.

المصدر: opennet.ru

إضافة تعليق