跳到主要内容
10.1145/2970276.2970341acm会议文章/章节视图摘要出版物页面ase公司会议记录会议集合
研究文章

错误:使用n-gram语言模型进行错误检测

发布时间:2016年8月25日出版历史

摘要

为了提高软件的可靠性,人们提出了许多基于规则的技术来推断编程规则并将违反这些规则的行为检测为错误。这些基于规则的方法通常依赖于项目中某些模式的高度频繁出现来推断规则。众所周知,如果一个模式出现的频率不够高,则无法学习规则,从而遗漏了许多错误。

在本文中,我们提出了一种新的方法——Bugram,它利用n元语言模型而不是规则来检测bug。Bugram使用n-gram语言模型对程序令牌进行顺序建模。然后根据学习模型中的概率评估程序中的令牌序列,并将低概率序列标记为潜在错误。假设程序中的低概率标记序列是不寻常的,这可能表明程序中存在错误、不良实践或开发人员可能希望了解的代码的不寻常/特殊用法。

我们用两种方法评估Bugram。首先,我们将Bugram应用于16个开源Java项目的最新版本。结果表明,Bugram检测到59个错误,其中42个被手动验证为正确,其中25个是真正的错误,17个是应该重构的代码片段。在25个真正的bug中,有23个是PR Miner无法检测到的。我们已经向开发人员报告了这些错误,其中7个已经被开发人员确认(其中4个已经修复),其余的等待确认。其次,我们进一步将Bugram与另外三种基于图形和规则的错误检测工具进行了比较,即JADET、Tikanga和GrouMiner。我们将Bugram应用于这三项研究中评估的14个Java项目。Bugram检测到21个真正的错误,其中至少有10个是这三种工具无法检测到的。我们的结果表明,Bugram是对现有基于规则的bug检测方法的补充。

工具书类

  1. M.Acharya、T.Xie、J.Pei和J.Xu。从源代码中挖掘API模式作为部分顺序:从使用场景到规范。2007年FSE,第25-34页。谷歌学者谷歌学者数字图书馆数字图书馆
  2. M.Allamanis、E.T.Barr和C.Sutton。学习自然编码惯例。2014年FSE,第281-293页。谷歌学者谷歌学者数字图书馆数字图书馆
  3. L.R.Bahl、P.Brown、P.V.de Souza和R.Mercer。一种基于树的自然语言语音识别统计语言模型。声学、语音和信号处理,IEEE汇刊,37(7):1001–10081989。谷歌学者谷歌学者交叉引用交叉引用
  4. L.Benjamin和T.Zimmermann。DynaMine:通过挖掘软件修订历史发现常见错误模式。在FSE’05,第296–305页,2005年。谷歌学者谷歌学者
  5. J.C.Campbell、A.Hindle和J.N.Amaral。语法错误并不自然:使用语言模型改进错误报告。2014年MSR第252-261页。谷歌学者谷歌学者数字图书馆数字图书馆
  6. R.-Y.Chang、A.Podgurski和J.Yang。发现不存在的东西:揭示软件中被忽视的条件的新方法。2007年ISSTA第163-173页。谷歌学者谷歌学者数字图书馆数字图书馆
  7. E.查尼亚克。统计语言学习。麻省理工学院出版社第一期平装版。麻省理工学院出版社,1996年。谷歌学者谷歌学者数字图书馆数字图书馆
  8. D.Engler、D.Y.Chen、S.Hallem、A.Chou和B.Chelf。作为偏差行为的错误:推断系统代码中错误的一般方法,第35卷。2001谷歌学者谷歌学者数字图书馆数字图书馆
  9. M.D.Ernst、J.H.Perkins、P.J.Guo、S.McCamant、C.Pacheco、M.S.Tschantz和C.Xiao。动态检测可能不变量的Daikon系统。《科学》。计算。程序。,第69卷,第35-45页,2007年。谷歌学者谷歌学者数字图书馆数字图书馆
  10. N.Gruska、A.Wasylkowski和A.Zeller。从6000个项目中学习:轻量级跨项目异常检测。ISSTA’10,第119-130页,2010年。谷歌学者谷歌学者数字图书馆数字图书馆
  11. M.Hall、E.Frank、G.Holmes、B.Pfahringer、P.Reutemann和I.H.Witten。WEKA数据挖掘软件:更新。SIGKDD探索。新闻。,11(1):2009年11月10日至18日。谷歌学者谷歌学者数字图书馆数字图书馆
  12. S.Han、D.R.Wallace和R.C.Miller。通过缩写输入完成代码。在ASE’09中,第332–343页,2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  13. S.Hangal和M.S.Lam。使用自动异常检测跟踪软件错误。2002年ICSE’02,第291-301页。谷歌学者谷歌学者数字图书馆数字图书馆
  14. V.J.Hellendorn、P.T.Devanbu和A.Bacchelli。他们会喜欢吗使用语言模型评估代码贡献。2015年MSR第157-167页。谷歌学者谷歌学者数字图书馆数字图书馆
  15. A.Hindle、E.T.Barr、Z.Su、M.Gabel和P.Devanbu。论软件的自然性。2012年ICSE’12,第837–847页。谷歌学者谷歌学者数字图书馆数字图书馆
  16. D.Hovemeyer和W.Pugh。找到虫子很容易。ACM Sigplan通告,39(12):92-1062004。谷歌学者谷歌学者数字图书馆数字图书馆
  17. C.-H.Xiao、M.Cafarela和S.Narayanasamy。使用Web语料库统计进行程序分析。在OOPSLA’14,第49-65页,2014年。谷歌学者谷歌学者数字图书馆数字图书馆
  18. J.Huang、P.O.Meredith和G.Rosu。基于控制流抽象的最大声音预测竞赛检测。2014年PLDI第337-348页。谷歌学者谷歌学者数字图书馆数字图书馆
  19. H.Kagdi、M.L.Collard和J.I.Malectic。一种利用句法上下文挖掘呼叫使用模式的方法。2007年ASE’07,第457–460页。谷歌学者谷歌学者数字图书馆数字图书馆
  20. W.M.Khoo、A.Mycroft和R.Anderson。Rendezvous:二进制代码的搜索引擎。2013年《MSR’13》第329–338页。谷歌学者谷歌学者数字图书馆数字图书馆
  21. J.Lawall和D.Lo。一种自动查找变量-常量配对错误的方法。在ASE’10,第103–112页,2010年。谷歌学者谷歌学者数字图书馆数字图书馆
  22. Z.Li、S.Lu、S.Myagmar和Y.Zhou。CP-Miner:用于查找操作系统代码中的复制页和相关错误的工具。2004年OSDI第20–20页。谷歌学者谷歌学者数字图书馆数字图书馆
  23. Z.Li和Y.Zhou。PR Miner:自动提取隐式编程规则并检测大型软件代码中的违规行为。2005年FSE第306–315页。谷歌学者谷歌学者数字图书馆数字图书馆
  24. B.Liang、P.Bian、Y.Zhang、W.Shi、W.You和Y.Cai。AntMiner:通过减少噪音干扰来挖掘更多错误。2016年ICSE第333–344页。谷歌学者谷歌学者数字图书馆数字图书馆
  25. H.Liu、Y.Wang、L.Jiang和S.Hu。PF-Miner:错误路径中Android内核的一种新的成对函数挖掘方法。2014年COMPSAC第33–42页。谷歌学者谷歌学者数字图书馆数字图书馆
  26. C.D.Manning和H.Schütze。统计自然语言处理基础。麻省理工学院出版社,1999年。谷歌学者谷歌学者数字图书馆数字图书馆
  27. F.Martin等人,《重构:改进现有代码的设计》。1999谷歌学者谷歌学者数字图书馆数字图书馆
  28. M.Monperrus和M.Mezini。将缺少的方法调用检测为违反多数规则。ACM事务处理。柔和。工程方法。,22(1):7:1–7:25, 2013.谷歌学者谷歌学者数字图书馆数字图书馆
  29. D.Movshovitz-Attias和W.W.Cohen。预测编程注释的自然语言模型。2013年ACL’13,第35-40页。谷歌学者谷歌学者
  30. S.Nessa、M.Abedin、E.Wong、L.Khan和Y.Qi。基于N-gram分析的软件故障定位。2008年WASA,第548–559页。谷歌学者谷歌学者数字图书馆数字图书馆
  31. T.T.Nguyen、A.T.Nugyen、H.A.Nguyeen和T.N.Ngueen。源代码的统计语义语言模型。2013年FSE第532-542页。谷歌学者谷歌学者数字图书馆数字图书馆
  32. T.T.Nguyen、H.A.Nguyen、N.H.Pham、J.M.Al-Kofahi和T.N.Nguien。基于图的多对象使用模式挖掘。在FSE'09,第383–392页,2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  33. Y.Oda、H.Fudaba、G.Neubig、H.Hata、S.Sakti、T.Toda和S.Nakamura。学习使用统计机器翻译从源代码生成伪代码。在ASE’15中,第824-8292015页。谷歌学者谷歌学者数字图书馆数字图书馆
  34. M.Pradel和T.R.Gross。从大型方法痕迹中自动生成对象使用规范。在ASE’09中,第371–382页,2009年。谷歌学者谷歌学者数字图书馆数字图书馆
  35. M.K.Ramanathan、A.Grama和S.Jagannathan。函数优先协议的路径敏感推断。2007年ICSE第240–250页。谷歌学者谷歌学者数字图书馆数字图书馆
  36. B.Ray、V.Hellendorn、Z.Tu、C.Nguyen、S.Godhane、A.Bacchelli和P.Devanbu。论布吉密码的“自然性”。2016年ICSE’16。谷歌学者谷歌学者数字图书馆数字图书馆
  37. V.Raychev、M.Vechev和E.Yahav。使用统计语言模型完成代码。2014年PLDI第419-428页。谷歌学者谷歌学者数字图书馆数字图书馆
  38. 罗森菲尔德。二十年的统计语言建模:我们将何去何从?2000谷歌学者谷歌学者
  39. S.Saha、J.-P.Lozi、G.Thomas、J.L.Lawall和G.Muller。赫克托:检测系统软件错误处理代码中的资源释放遗漏错误。在DSN'13中,第1-12页,2013年。谷歌学者谷歌学者数字图书馆数字图书馆
  40. M.Sampson、L.Zhang、A.Morrison、N.J.Barrowman、T.J.Clifford、R.W.Platt、T.P.Klassen和D.Moher。手动搜索黄金标准的替代方案:使用相对回忆验证方法搜索过滤器。BMC医学研究方法,6(1),2006年。谷歌学者谷歌学者
  41. S.Shoham、E.Yahav、S.Fink和M.Pistoia。使用基于自动文摘的静态规范挖掘。2007年ISSTA第174-184页。谷歌学者谷歌学者数字图书馆数字图书馆
  42. B.Sun、G.Shu、A.Podgurski和B.Robinson。通过挖掘项目特定规则扩展静态分析。2012年ICSE’12,第1054–1063页。谷歌学者谷歌学者数字图书馆数字图书馆
  43. L.Tan、D.Yuan、G.Krishna和Y.Zhou。/*iComment:错误还是错误评论?*/。2007年SOSP第145-158页。谷歌学者谷歌学者数字图书馆数字图书馆
  44. S.H.Tan、D.Marinov、L.Tan和G.T.Leavens@t注释:测试Javadoc注释以检测注释-代码不一致。2012年ICST’12,第260-269页。谷歌学者谷歌学者数字图书馆数字图书馆
  45. S.Thummalapenta和T.Xie。将异常处理规则挖掘为序列关联规则。2009年ICSE第496–506页。谷歌学者谷歌学者数字图书馆数字图书馆
  46. S.Thummalapenta和T.Xie。Alattin:缺陷检测的替代模式挖掘。自动化软件工程,18(3-4):292–3232011。谷歌学者谷歌学者数字图书馆数字图书馆
  47. Z.Tu、Z.Su和P.Devanbu。关于软件的局部性。2014年FSE第269-280页。谷歌学者谷歌学者数字图书馆数字图书馆
  48. J.Wang、Y.Dang、H.Zhang、K.Chen、T.Xie和D.Zhang。从源代码中挖掘简洁和高平均API使用模式。2013年《MSR’13》第319–328页。谷歌学者谷歌学者数字图书馆数字图书馆
  49. A.Wasylkowski和A.Zeller。从对象使用中挖掘时间规范。自动化软件工程,18(3-4):263–2922011。谷歌学者谷歌学者数字图书馆数字图书馆
  50. A.Wasylkowski、A.Zeller和C.Lindig。检测对象使用异常。2007年FSE,第35-44页。谷歌学者谷歌学者数字图书馆数字图书馆
  51. M.White、C.Vendome、M.Linares-Vásquez和D.Poshyvanyk。走向深度学习软件存储库。2015年,MSR’15,第334–345页。谷歌学者谷歌学者数字图书馆数字图书馆
  52. C.Williams和J.Hollingsworth。自动挖掘源代码存储库以改进错误查找技术。2005年TSE’05第31卷第466–480页。谷歌学者谷歌学者数字图书馆数字图书馆
  53. C.C.Williams和J.K.Hollingsworth。从软件存储库恢复系统特定规则。2005年MSR第1-5页。谷歌学者谷歌学者数字图书馆数字图书馆
  54. 谢霆锋和裴勇军。MAPO:从开放源代码存储库挖掘API用法。2006年MSR第54–57页。谷歌学者谷歌学者数字图书馆数字图书馆
  55. Y.Xue、J.Wang、Y.Liu、H.Xiao、J.Sun和M.Chandramohan。通过攻击行为建模检测和分类恶意Javascript。ISSTA’15,第48-59页,2015年。谷歌学者谷歌学者数字图书馆数字图书馆
  56. J.Yang、D.Evans、D.Bhardwaj、T.Bhat和M.Das。Perracotta:从不完善的跟踪中挖掘临时API规则。2006年ICSE第282–291页。谷歌学者谷歌学者数字图书馆数字图书馆
  57. 余振中、胡鸿章、白崇禧、蔡国勇和王伟。使用N-gram分析的GUI软件故障定位。2011年HASE'11,第325–332页。谷歌学者谷歌学者数字图书馆数字图书馆

索引术语

  1. 错误:使用n-gram语言模型进行错误检测

      建议

      评论

      登录选项

      检查您是否可以通过登录凭据或您的机构访问本文。

      登录

      完全访问权限

      • 发布于

        封面图片ACM会议
        ASE’16:第31届IEEE/ACM自动化软件工程国际会议论文集
        2016年8月
        899页
        国际标准图书编号:9781450338455
        内政部:10.1145/2970276

        版权所有©2016 ACM

        如果复制品不是为了盈利或商业利益而制作或分发的,并且复制品的第一页载有本通知和完整引文,则允许免费制作本作品的全部或部分数字或硬拷贝以供个人或课堂使用。必须尊重ACM以外的其他人对本作品组成部分的版权。允许用信用证进行摘要。要以其他方式复制或重新发布,在服务器上发布或重新发布到列表,需要事先获得特定许可和/或付费。从请求权限[电子邮件保护]

        出版商

        计算机协会

        美国纽约州纽约市

        出版历史

        • 发布时间:2016年8月25日

        权限

        请求有关此文章的权限。

        请求权限

        检查更新

        限定符

        • 研究文章

        接受率

        总体验收率82属于337提交文件,24%

        即将召开的会议

        ASE’24
        ASE’24:第39届IEEE/ACM自动化软件工程国际会议
        2024年10月27日至11月1日
        萨克拉门托,加利福尼亚州,美国

      PDF格式

      以PDF文件查看或下载。

      PDF格式

      电子阅读器

      使用eReader联机查看。

      电子阅读器