Stack Overflow上的有毒代码片段
软件工程
2019-04-03 v2
摘要
在线代码克隆是指作为示例从软件项目或在线来源复制到Stack Overflow的代码片段。由于在代码被复制到Stack Overflow后缺乏检查机制,它们可能变成有毒代码片段,例如存在过时或违反原始软件许可证的问题。我们结合两项开发者调查与大规模代码克隆检测,对Stack Overflow上的在线代码克隆及其毒性进行了研究。一项针对201名高声望Stack Overflow回答者(回复率33%)的调查显示,131名参与者(65%)曾被告知代码过时,其中26人(20%)很少或从不修复代码。138名回答者(69%)从不检查其复制的代码片段与Stack Overflow的CC BY-SA 3.0之间的许可冲突。一项针对87名Stack Overflow访客的调查表明,他们经历过来自Stack Overflow答案的若干问题:不匹配的解决方案、过时的解决方案、不正确的解决方案以及有bug的代码。其中85%未意识到Stack Overflow强制执行的CC BY-SA 3.0许可,66%在复用代码片段时从不检查许可冲突。我们的克隆检测发现了Stack Overflow上72,365个Java代码片段与精选Qualitas语料库中111个开源项目之间的在线克隆对。我们分析了2,289个非平凡在线克隆候选。调查揭示了153个克隆被从Qualitas项目复制到Stack Overflow的强证据。我们发现其中100个(66%)已过时,其中10个有bug且对复用有害。此外,我们发现214个代码片段可能违反其原始软件许可,并在2,427个GitHub项目中出现了7,112次。
引用
@article{arxiv.1806.07659,
title = {Toxic Code Snippets on Stack Overflow},
author = {Chaiyong Ragkhitwetsagul and Jens Krinke and Matheus Paixao and Giuseppe Bianco and Rocco Oliveto},
journal= {arXiv preprint arXiv:1806.07659},
year = {2019}
}
备注
IEEE Transactions on Software Engineering (Early Access)