Proceedings

Deep Learning Meets Software Engineering: A Survey on Pre-Trained Models of Source Code

Video #1 Video #2 Download BibTeX Cite

Proceedings of the Thirty-First International Joint Conference on Artificial Intelligence. Survey Track. Pages 5546-5555.

https://doi.org/10.24963/ijcai.2022/775

Abstract

Recent years have seen the successful application of deep learning to software engineering (SE). In particular, the development and use of pre-trained models of source code has enabled state-of-the-art results to be achieved on a wide variety of SE tasks. This paper provides an overview of this rapidly advancing field of research and reflects on future research directions.

  1. [Ahmad et al., 2021] Wasi Ahmad, Saikat Chakraborty, Baishakhi Ray, and Kai-Wei Chang. Unified pre-training for program understanding and generation. In NAACL- HLT, 2021.
  2. [Allamanis et al., 2016] Miltiadis Allamanis, Hao Peng, and Charles Sutton. A convolutional attention network for ex- treme summarization of source code. In ICML, 2016.
  3. [Alon et al., 2020] Uri Alon, Roy Sadaka, Omer Levy, and Eran Yahav. Structural language models of code. In ICML, 2020.
  4. [Brown et al., 2020] Tom Brown, Benjamin Mann, Nick Ry- der, Melanie Subbiah, Jared D Kaplan, Prafulla Dhari- wal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel Herbert-Voss, Gretchen Krueger, Tom Henighan, Rewon Child, Aditya Ramesh, Daniel Ziegler, Jeffrey Wu, Clemens Winter, Chris Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, and Dario Amodei. Language models are few-shot learn- ers. In NeurIPS, 2020.
  5. [Buratti et al., 2020] Luca Buratti, Saurabh Pujar, Mi- haela Bornea, Scott McCarley, Yunhui Zheng, Gae- tano Rossiello, Alessandro Morari, Jim Laredo, Veronika Thost, Yufan Zhuang, et al. Exploring software natural- ness through neural language models. arXiv:2006.12641, 2020.
  6. [Chen et al., 2018] Xinyun Chen, Chang Liu, and Dawn Song. Tree-to-tree neural networks for program transla- tion. In NeurIPS, 2018.
  7. [Chen, 2022] Pin-Yu Chen. Model reprogramming: Resource-efficient cross-domain machine learning. arXiv preprint arXiv:2202.10629, 2022.
  8. [Clark et al., 2019] Kevin Clark, Minh-Thang Luong, Quoc V Le, and Christopher D Manning. Electra: Pre-training text encoders as discriminators rather than generators. In ICLR, 2019.
  9. [Coimbra et al., 2021] David Coimbra, Sofia Reis, Rui Abreu, Corina Pȃsȃreanu, and Hakan Erdogmus. On using distributed representations of source code for the detection of c security vulnerabilities. CoRR, 2021.
  10. [Dai and Le, 2015] Andrew M Dai and Quoc V Le. Semi- supervised sequence learning. Advances in neural infor- mation processing systems, 28, 2015.
  11. [Dai et al., 2019] Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V Le, and Ruslan Salakhutdi- nov. Transformer-xl: Attentive language models beyond a fixed-length context. In ACL, 2019.
  12. [de Sousa and Hasselbring, 2021] Nelson Tavares de Sousa and Wilhelm Hasselbring. Javabert: Training a transformer-based model for the java programming lan- guage. arXiv:2110.10404, 2021.
  13. [Devlin et al., 2018] Jacob Devlin, Ming-Wei Chang, Ken- ton Lee, and Kristina Toutanova. Bert: Pre-training of deep bidirectional transformers for language understand- ing. arXiv:1810.04805, 2018.
  14. [Drain et al., 2021] Dawn Drain, Chen Wu, Alexey Svy- atkovskiy, and Neel Sundaresan. Generating bug-fixes using pretrained transformers. In Proceedings of the 5th ACM SIGPLAN International Symposium on Machine Programming, 2021.
  15. [Ernst, 2017] Michael D. Ernst. Natural language is a pro- gramming language: Applying natural language process- ing to software development. In 2nd Summit on Advances in Programming Languages, 2017.
  16. [Feng et al., 2020] Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, et al. Codebert: A pre- trained model for programming and natural languages. In EMNLP: Findings, 2020.
  17. [Guo et al., 2021] Daya Guo, Shuo Ren, Shuai Lu, Zhangyin Feng, Duyu Tang, Shujie Liu, Long Zhou, Nan Duan, Alexey Svyatkovskiy, Shengyu Fu, Michele Tufano, Shao Kun Deng, Colin Clement, Dawn Drain, Neel Sun- daresan, Jian Yin, Daxin Jiang, and Ming Zhou. Graph- codebert: Pre-training code representations with data flow. In ICLR, 2021.
  18. [Haque et al., 2020] Sakib Haque, Alexander LeClair, Lingfei Wu, and Collin McMillan. Improved automatic summarization of subroutines via attention to file context. In MSR, 2020.
  19. [Hassan and Xie, 2010] Ahmed E Hassan and Tao Xie. Soft- ware intelligence: the future of mining software engineer- ing data. In FSE/SDP workshop, 2010.
  20. [Hellendoorn et al., 2020] Vincent J Hellendoorn, Charles Sutton, Rishabh Singh, Petros Maniatis, and David Bieber. Global relational models of source code. In ICLR, 2020.
  21. [Hochreiter and Schmidhuber, 1997] Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural Computation, 1997.
  22. [Howard and Ruder, 2018] Jeremy Howard and Sebastian Ruder. Universal language model fine-tuning for text clas- sification. In ACL, 2018.
  23. [Hu et al., 2018a] Xing Hu, Ge Li, Xin Xia, David Lo, and Zhi Jin. Deep code comment generation. In ICPC, 2018.
  24. [Hu et al., 2018b] Xing Hu, Ge Li, Xin Xia, David Lo, Shuai Lu, and Zhi Jin. Summarizing source code with transferred api knowledge. In IJCAI, 2018. IJCAI
  25. [Husain et al., 2019] Hamel Husain, Ho-Hsiang Wu, Tiferet Gazit, Miltiadis Allamanis, and Marc Brockschmidt. Codesearchnet challenge: Evaluating the state of seman- tic code search. arXiv:1909.09436, 2019.
  26. [Iyer et al., 2018] Srinivasan Iyer, Ioannis Konstas, Alvin Cheung, and Luke Zettlemoyer. Mapping language to code in programmatic context. In EMNLP, 2018.
  27. [Iyer et al., 2019] Srinivasan Iyer, Alvin Cheung, and Luke Zettlemoyer. Learning programmatic idioms for scalable semantic parsing. In EMNLP, 2019.
  28. [Jain et al., 2021] Paras Jain, Ajay Jain, Tianjun Zhang, Pieter Abbeel, Joseph Gonzalez, and Ion Stoica. Con- trastive code representation learning. In EMNLP, 2021.
  29. [Jiang et al., 2021] Xue Jiang, Zhuoran Zheng, Chen Lyu, Liang Li, and Lei Lyu. Treebert: A tree-based pre-trained model for programming language. In UAI, 2021.
  30. [Kanade et al., 2020] Aditya Kanade, Petros Maniatis, Gogul Balakrishnan, and Kensen Shi. Learning and evaluating contextual embedding of source code. In ICML, 2020.
  31. [Karampatsis and Sutton, 2020] Rafael-Michael Karampat- sis and Charles Sutton. Scelmo: Source code embeddings from language models. arXiv:2004.13214, 2020.
  32. [LeClair et al., 2019] Alexander LeClair, Siyuan Jiang, and Collin McMillan. A neural model for generating natu- ral language summaries of program subroutines. In ICSE, 2019.
  33. [LeClair et al., 2020] Alexander LeClair, Sakib Haque, Lingfei Wu, and Collin McMillan. Improved code sum- marization via a graph neural network. In ICPC, 2020.
  34. [Lewis et al., 2020] Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Veselin Stoyanov, and Luke Zettlemoyer. Bart: Denoising sequence-to-sequence pre-training for natural language generation, translation, and comprehension. In ACL, 2020.
  35. [Liu et al., 2019] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. Roberta: A robustly optimized bert pretraining approach. arXiv:1907.11692, 2019.
  36. [Liu et al., 2020] Fang Liu, Ge Li, Yunfei Zhao, and Zhi Jin. Multi-task learning based pre-trained language model for code completion. In ASE, 2020.
  37. [Lu et al., 2021] Shuai Lu, Daya Guo, Shuo Ren, Junjie Huang, Alexey Svyatkovskiy, Ambrosio Blanco, Colin Clement, Dawn Drain, Daxin Jiang, Duyu Tang, Ge Li, Lidong Zhou, Linjun Shou, Long Zhou, Michele Tu- fano, MING GONG, Ming Zhou, Nan Duan, Neel Sun- daresan, Shao Kun Deng, Shengyu Fu, and Shujie LIU. CodeXGLUE: A machine learning benchmark dataset for code understanding and generation. In NeurIPS Datasets and Benchmarks Track (Round 1), 2021.
  38. [Mastropaolo et al., 2021] Antonio Mastropaolo, Simone Scalabrino, Nathan Cooper, David Nader Palacio, Denys Poshyvanyk, Rocco Oliveto, and Gabriele Bavota. Study- ing the usage of text-to-text transfer transformer to support code-related tasks. In ICSE, 2021.
  39. [Miceli-Barone and Sennrich, 2017] Antonio Valerio Miceli-Barone and Rico Sennrich. A parallel corpus of python functions and documentation strings for automated code documentation and code generation. In IJCNLP, 2017.
  40. [Mou et al., 2016] Lili Mou, Ge Li, Lu Zhang, Tao Wang, and Zhi Jin. Convolutional neural networks over tree struc- tures for programming language processing. In AAAI, 2016.
  41. [Nafi et al., 2019] Kawser Wazed Nafi, Tonny Shekha Kar, Banani Roy, Chanchal K Roy, and Kevin A Schneider. Clcdsa: cross language code clone detection using syn- tactical features and api documentation. In ASE, 2019.
  42. [Niu et al., 2022] Changan Niu, Chuanyi Li, Vincent Ng, Ji- dong Ge, Liguo Huang, and Bin Luo. Spt-code: Sequence- to-sequence pre-training for learning source code repre- sentations. arXiv:2201.01549, 2022.
  43. [Panthaplackel et al., 2021] Sheena Panthaplackel, Miltiadis Allamanis, and Marc Brockschmidt. Copy that! editing sequences by copying spans. In AAAI, 2021.
  44. [Papineni et al., 2002] Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu. Bleu: a method for au- tomatic evaluation of machine translation. In ACL, 2002.
  45. [Peng et al., 2021] Dinglan Peng, Shuxin Zheng, Yatao Li, Guolin Ke, Di He, and Tie-Yan Liu. How could neural networks understand programs? In ICML, 2021.
  46. [Peters et al., 2018] Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, and Luke Zettlemoyer. Deep contextualized word representations. In NAACL-HLT, 2018.
  47. [Phan et al., 2021] Long Phan, Hieu Tran, Daniel Le, Hieu Nguyen, James Anibal, Alec Peltekian, and Yanfang Ye. Cotext: Multi-task learning with code-text transformer. arXiv:2105.08645, 2021.
  48. [Pontes et al., 2018] Elvys Linhares Pontes, Stéphane Huet, Andréa Carneiro Linhares, and Juan-Manuel Torres- Moreno. Predicting the semantic textual similarity with siamese cnn and lstm. In TALN, 2018.
  49. [Pradel and Sen, 2018] Michael Pradel and Koushik Sen. Deepbugs: A learning approach to name-based bug de- tection. Proceedings of the ACM on Programming Lan- guages, 2018.
  50. [Qi et al., 2021] Weizhen Qi, Yeyun Gong, Yu Yan, Can Xu, Bolun Yao, Bartuer Zhou, Biao Cheng, Daxin Jiang, Jiusheng Chen, Ruofei Zhang, et al. Prophetnet-x: Large- scale pre-training models for english, chinese, multi- lingual, dialog, and code generation. arXiv:2104.08006, 2021.
  51. [Qiu et al., 2020] Xipeng Qiu, Tianxiang Sun, Yige Xu, Yunfan Shao, Ning Dai, and Xuanjing Huang. Pre-trained models for natural language processing: A survey. Science China Technological Sciences, 2020.
  52. [Radford et al., 2019] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever, et al. Language models are unsupervised multitask learners. In OpenAI Blog, 2019.
  53. [Raffel et al., 2020] Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J Liu. Exploring the limits of transfer learning with a unified text-to-text transformer. JMLR, 2020.
  54. [Raychev et al., 2016] Veselin Raychev, Pavol Bielik, and Martin Vechev. Probabilistic model for code with decision trees. In OOPSLA, 2016.
  55. [Ren et al., 2020] Shuo Ren, Daya Guo, Shuai Lu, Long Zhou, Shujie Liu, Duyu Tang, Neel Sundaresan, Ming Zhou, Ambrosio Blanco, and Shuai Ma. Codebleu: a method for automatic evaluation of code synthesis. arXiv:2009.10297, 2020.
  56. [Roziere et al., 2020] Baptiste Roziere, Marie-Anne Lachaux, Lowik Chanussot, and Guillaume Lample. Unsupervised translation of programming languages. In NeurIPS, 2020.
  57. [Roziere et al., 2021] Baptiste Roziere, Marie-Anne Lachaux, Marc Szafraniec, and Guillaume Lample. Dobf: A deobfuscation pre-training objective for pro- gramming languages. arXiv:2102.07492, 2021.
  58. [Shido et al., 2019] Yusuke Shido, Yasuaki Kobayashi, Ak- ihiro Yamamoto, Atsushi Miyamoto, and Tadayuki Mat- sumura. Automatic source code summarization with ex- tended tree-lstm. In IJCNN, 2019.
  59. [Svajlenko et al., 2014] Jeffrey Svajlenko, Judith F Islam, Iman Keivanloo, Chanchal K Roy, and Mohammad Ma- mun Mia. Towards a big data curated benchmark of inter- project code clones. In ICSME, 2014.
  60. [Svyatkovskiy et al., 2020] Alexey Svyatkovskiy, Shao Kun Deng, Shengyu Fu, and Neel Sundaresan. Intellicode com- pose: Code generation using transformer. In ESEC/FSE, 2020.
  61. [Tang et al., 2022] Ze Tang, Xiaoyu Shen, Chuanyi Li, Ji- dong Ge, Liguo Huang, Zhelin Zhu, and Bin Luo. Ast- trans: Code summarization with efficient tree-structured attention. In ICSE, 2022.
  62. [Tufano et al., 2019a] Michele Tufano, Jevgenija Pan- tiuchina, Cody Watson, Gabriele Bavota, and Denys Poshyvanyk. On learning meaningful code changes via neural machine translation. In ICSE, 2019.
  63. [Tufano et al., 2019b] Michele Tufano, Cody Watson, Gabriele Bavota, Massimiliano Di Penta, Martin White, and Denys Poshyvanyk. An empirical study on learn- ing bug-fixing patches in the wild via neural machine translation. TOSEM, 2019.
  64. [Vasic et al., 2019] Marko Vasic, Aditya Kanade, Petros Ma- niatis, David Bieber, and Rishabh singh. Neural program repair by jointly learning to localize and repair. In ICLR, 2019.
  65. [Vaswani et al., 2017] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NeurIPS, 2017.
  66. [Wang et al., 2020] Wenhan Wang, Ge Li, Bo Ma, Xin Xia, and Zhi Jin. Detecting code clones with graph neural net- work and flow-augmented abstract syntax tree. In SANER, 2020.
  67. [Wang et al., 2021a] Xin Wang, Yasheng Wang, Fei Mi, Pingyi Zhou, Yao Wan, Xiao Liu, Li Li, Hao Wu, Jin Liu, and Xin Jiang. Syncobert: Syntax-guided multi- modal contrastive pre-training for code representation. arXiv:2108.04556, 2021.
  68. [Wang et al., 2021b] Yue Wang, Weishi Wang, Shafiq Joty, and Steven CH Hoi. Codet5: Identifier-aware unified pre- trained encoder-decoder models for code understanding and generation. In EMNLP, 2021.
  69. [Watson et al., 2020] Cody Watson, Michele Tufano, Kevin Moran, Gabriele Bavota, and Denys Poshyvanyk. On learning meaningful assert statements for unit test cases. In ICSE, 2020.
  70. [Xu et al., 2021] Zenan Xu, Daya Guo, Duyu Tang, Qinliang Su, Linjun Shou, Ming Gong, Wanjun Zhong, Xiaojun Quan, Daxin Jiang, and Nan Duan. Syntax-enhanced pre- trained model. In ACL/IJCNLP (1), 2021.
  71. [Yang et al., 2019] Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Russ R Salakhutdinov, and Quoc V Le. Xlnet: Generalized autoregressive pretraining for lan- guage understanding. NeurIPS, 32, 2019.
  72. [Ye et al., 2020] Fangke Ye, Shengtian Zhou, Anand Venkat, Ryan Marcus, Nesime Tatbul, Jesmin Jahan Tithi, Ni- ranjan Hasabnis, Paul Petersen, Timothy Mattson, Tim Kraska, et al. Misim: A neural code semantics similar- ity system using the context-aware semantics structure. CoRR, 2020.
  73. [Zhang et al., 2021] Jingfeng Zhang, Haiwen Hong, Yin Zhang, Yao Wan, Ye Liu, and Yulei Sui. Disentangled code representation learning for multiple programming languages. In ACL: Findings, 2021.
  74. [Zhou et al., 2019] Yaqin Zhou, Shangqing Liu, Jingkai Siow, Xiaoning Du, and Yang Liu. Devign: Effective vul- nerability identification by learning comprehensive pro- gram semantics via graph neural networks. In NeurIPS, 2019.
  75. [Zhou et al., 2021] Xin Zhou, DongGyun Han, and David Lo. Assessing generalizability of CodeBERT. In ICSME, 2021.
  76. [Zügner et al., 2021] Daniel Zügner, Tobias Kirschstein, Michele Catasta, Jure Leskovec, and Stephan Günnemann. Language-agnostic representation learning of source code from structure and context. In ICLR, 2021.

References were extracted automatically from the PDF and may contain errors.

Welcome Future Conferences AI Journal Division IJCAI Proceedings About IJCAI IJCAI Awards