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

添加评论