StackOverflow 上最受歡迎的 Java 程式碼範例有一個錯誤

最受歡迎 Java程式碼範例,發佈在 StackOverflow 上, 原來是 在某些條件下會導致輸出錯誤結果的錯誤。 該程式碼於 2010 年發布,目前已經累積了一千多個建議,並且還被 複製的 在許多專案中,並在 GitHub 上的儲存庫中出現約 7 次。 值得注意的是,該錯誤不是由用戶將此程式碼複製到他們的專案中發現的,而是由該建議的原始作者發現的。

相關程式碼將位元組大小轉換為可讀形式,例如將 110592 轉換為“110.6 kB”或“108.0 KiB”。 該程式碼被提議為先前提出的建議的對數最佳化版本,其中該值是根據循環中原始值按順序除以 1018、1015、1012、1019 確定的。
106、103和100,只要除數大於原始位元組值即可。 由於最佳化版本中的計算不嚴謹(長值溢位),處理非常大的數字(艾位元組)時的結果與實際情況不符。

該建議的作者還試圖提請人們注意複製範例而不引用來源和未註明許可證的問題。 根據先前的數據 進行了研究 46% 的開發人員在沒有歸屬的情況下從 StackOverflow 複製程式碼,75% 的開發人員不知道程式碼已獲得 CC BY-SA 許可,67% 的開發人員不知道這需要歸屬。

根據 另一項研究表明,複製程式碼範例不僅涉及程式碼錯誤的風險,還涉及漏洞的風險。 例如,在分析了 StackOverflow 上的 72483 個 C++ 程式碼範例後,研究人員發現了最受歡迎建議清單中的 69 個範例(佔 0.09%)存在嚴重漏洞。 隨後分析了 GitHub 上此程式碼的存在情況,發現從 StackOverflow 複製的易受攻擊的程式碼存在於 2859 個專案中。

來源: opennet.ru

添加評論