Student or educator? Sign up with your school email and get 6 months of Pro free.
Cited by 342

The DOI matches its Crossref record; 3 of the 3 references it cites were found in a registry or an index.

DeepBugs: a learning approach to name-based bug detection

Open access
Pradel, Michael, Sen, Koushik·2018·Proceedings of the ACM on Programming Languages

Abstract

Natural language elements in source code, e.g., the names of variables and functions, convey useful information. However, most existing bug detection tools ignore this information and therefore miss some classes of bugs. The few existing name-based bug detection approaches reason about names on a syntactic level and rely on manually designed and tuned algorithms to detect bugs. This paper presents DeepBugs, a learning approach to name-based bug detection, which reasons about names based on a semantic representation and which automatically learns bug detectors instead of manually writing them. We formulate bug detection as a binary classification problem and train a classifier that distinguishes correct from incorrect code. To address the challenge that effectively learning a bug detector requires examples of both correct and incorrect code, we create likely incorrect code examples from an existing corpus of code through simple code transformations. A novel insight learned from our work is that learning from artificially seeded bugs yields bug detectors that are effective at finding bugs in real-world code. We implement our idea into a framework for learning-based and name-based bug detection. Three bug detectors built on top of the framework detect accidentally swapped function arguments, incorrect binary operators, and incorrect operands in binary operations. Applying the approach to a corpus of 150,000 JavaScript files yields bug detectors that have a high accuracy (between 89% and 95%), are very efficient (less than 20 milliseconds per analyzed file), and reveal 102 programming mistakes (with 68% true positive rate) in real-world code.

Overview

The claims and statistics of this paper haven’t been checked yet.

Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.

A few free checks a day · papers already verified open instantly · results are public

Integrity signals

Registry

Crossref · 10.1145/3276517

Cites

3 of 3 references verified0 citation errors · 0 not checkable

Statistics

Verification

Claims the paper makes

The claims and statistics of this paper haven’t been checked yet.

Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.

A few free checks a day · papers already verified open instantly · results are public

Self-check

Percentages, sums and reported differences re-computed from the paper’s own numbers.

The self-check needs the paper’s full text.

Citations

Cites

Research works printed but not linked: 60

  1. 10.1109/SCAM.2012.28 · DOI
  2. 10.1145/2635868.2635883 · DOI · Paper page
  3. Allamanis Miltiadis, 2017, A Survey of Machine Learning for Big Code and Naturalness. arXiv:1709.06182 · arXiv
  4. Allamanis Miltiadis, 2017, Learning to Represent Programs with Graphs. CoRR abs/1711.00740 · arXiv
  5. Allamanis Miltiadis, 2016, Proceedings of the 33nd International Conference on Machine Learning, ICML 2016
  6. 10.1145/3192366.3192412 · DOI · Paper page
  7. 10.1145/503272.503275 · DOI · Paper page
  8. M. Amodio S. Chaudhuri and T. Reps. 2017. Neural Attribute Machines for Program Generation. ArXiv e-prints (May 2017). arXiv: cs.AI/1705.09231 M. Amodio S. Chaudhuri and T. Reps. 2017. Neural Attribute Machines for Program Generation. ArXiv e-prints (May 2017). arXiv: cs.AI/1705.09231
  9. 10.1145/3106739 · DOI
  10. Bhatia Sahil, 2016, Automated Correction for Syntax Errors in Programming Assignments using Recurrent Neural Networks. CoRR abs/1603.06129 · arXiv
  11. Bielik Pavol, 2016, Proceedings of the 33nd International Conference on Machine Learning, ICML 2016
  12. 10.1145/3106237.3106280 · DOI
  13. 10.1109/CSMR.2010.27 · DOI · Paper page
  14. 10.1007/978-3-319-17524-9_1 · DOI · Paper page
  15. DeFreez Daniel, 2018, Path-Based Function Embedding and its Application to Specification Mining. CoRR abs/1802.07779 · arXiv
  16. Dolan-Gavitt Brendan, 2016, LAVA: Large-Scale Automated Vulnerability Addition. In IEEE Symposium on Security and Privacy, SP 2016
  17. ECMA., 2011, ECMAScript Language Specification, 5.1 Edition. (June
  18. 10.1145/502034.502041 · DOI · Paper page
  19. Godefroid Patrice, 2017, Machine Learning for Input Fuzzing. CoRR abs/1701.07232 · arXiv
  20. 10.1145/2786805.2786831 · DOI
  21. 10.1145/2950290.2950334 · DOI · Paper page
  22. Rahul Gupta Soham Pal Aditya Kanade and Shirish Shevade. 2017. DeepFix: Fixing Common C Language Errors by Deep Learning. In AAAI. Rahul Gupta Soham Pal Aditya Kanade and Shirish Shevade. 2017. DeepFix: Fixing Common C Language Errors by Deep Learning. In AAAI. · DOI · Paper page
  23. Gutmann Michael, 2010, Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics. 297–304
  24. 10.1145/3238147.3238212 · DOI
  25. 10.1145/2950290.2950308 · DOI
  26. 10.1145/581339.581377 · doi:10.1145/581339.581377 · Paper page
  27. Hindle Abram, 2012, 34th International Conference on Software Engineering, ICSE 2012
  28. 10.1007/978-3-642-03013-0_14 · DOI
  29. 10.1145/1028664.1028717 · DOI · Paper page
  30. Choi Min, 2017, End-to-End Prediction of Buffer Overruns from Raw Source Code via Neural Memory Networks. CoRR abs/1703.02458 · arXiv
  31. 10.1007/978-3-642-03237-0_17 · doi:10.1007/978-3-642-03237-0_17
  32. 10.1109/TSE.2010.62 · DOI · Paper page
  33. 10.1109/ICPC.2006.51 · DOI
  34. Li Zhen, 2018, Xinyu Ou, Hai Jin, Sujuan Wang, Zhijun Deng, and Yuyi Zhong.
  35. 10.1145/2884781.2884870 · doi:10.1145/2884781.2884870
  36. 10.1145/2884781.2884841 · DOI
  37. 10.1109/ICSE.2017.65 · DOI
  38. Mikolov Tomas, 2013, Advances in Neural Information Processing Systems 26: 27th Annual Conference on Neural Information Processing Systems 2013. Proceedings of a meeting held
  39. Monperrus Martin, 2010, Detecting Missing Method Calls in Object-Oriented Software. In European Conference on Object-Oriented Programming (ECOOP) . Springer, 2–25
  40. 10.5555/3015812.3016002 · doi:10.5555/3015812.3016002
  41. Murali Vijayaraghavan, 2017, Finding Likely Errors with Bayesian Specifications. CoRR abs/1703.01370 · arXiv
  42. Nguyen Anh Tuan, 2015, Graph-Based Statistical Language Model for Code. In 37th IEEE/ACM International Conference on Software Engineering, ICSE 2015, 1
  43. 10.1109/ICSE.2017.47 · DOI
  44. 10.1145/2991079.2991103 · DOI
  45. 10.1145/2001420.2001448 · doi:10.1145/2001420.2001448
  46. Pradel Michael, Statically Checking API Protocol Conformance with Mined Multi-Object Specifications. In International Conference on Software Engineering (ICSE). 925–935
  47. Pradel Michael, 2015, TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript. In International Conference on Software Engineering (ICSE) .
  48. 10.1145/2884781.2884848 · DOI · Paper page
  49. 10.1145/2983990.2984041 · DOI
  50. 10.1145/2837614.2837671 · DOI
  51. 10.1145/2676726.2677009 · DOI · Paper page
  52. 10.1145/2594291.2594321 · DOI · Paper page
  53. 10.1145/3133928 · DOI
  54. 10.1007/978-3-540-31987-0_28 · doi:10.1007/978-3-540-31987-0_28
  55. 10.1145/3106237.3106289 · DOI
  56. 10.1145/2884781.2884804 · DOI · Paper page
  57. 10.1109/ASE.2009.30 · DOI
  58. Weston Jason, 2014, Memory Networks. CoRR abs/1410.3916 · arXiv
  59. 10.1145/2970276.2970326 · DOI · Paper page
  60. 10.1145/2884781.2884862 · DOI · Paper page

Cited by

See all 342

Metadata

Authors
Pradel, M., & Sen, K.
Venue
Proceedings of the ACM on Programming Languages
Published
2018-10-24
Volume
2
Issue
OOPSLA
Pages
1-25
ISSN
2475-1421 (ISSN-L)
OpenAlex
W2806718802
Cited by
342
References
3
FWCI
87.69
Type
journal article
Language
en
Open access
diamond

About these checks

Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.

Statistics and arithmetic are recomputed, not judged.

Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.

What counts as a claim ›How we measure confidence ›How we check this ›

Are you an author, or do you see a problem with this page? Request a review

Data sources

Bibliographic data: Semantic Scholar, OpenAlex, Crossref.

Contains information from the Semantic Scholar Academic Graph Datasets, made available under the ODC Attribution License (ODC-BY 1.0).

Semantic Scholar’s data is described in: Kinney, R., et al. (2023). The Semantic Scholar Open Data Platform. arXiv:2301.10140.