StackOverflow で最も人気のある Java コードの例にはエラーがあります

Самыйпопулярный Java コードの例、StackOverflow で公開、 オフ 特定の条件下で誤った結果が出力されるエラーを伴います。 問題のコードは 2010 年に投稿され、XNUMX を超える推奨事項が蓄積されており、 コピーされました 多くのプロジェクトで使用されており、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 プロジェクトに存在していたことが判明しました。

出所: オープンネット.ru

コメントを追加します