Page 31 - 《软件学报》2026年第7期
P. 31

2716                                                       软件学报  2026  年第  37  卷第  7  期


                 LumiX  利用大模型强大的代码生成能力, 通过结合历史揭错测试程序的上下文以及新特性的使用描述, 生成新的
                 针对新特性的代码片段. 新生成的代码片段将被插入至历史揭错测试程序中, 从而生成新的测试程序. 新生成的测
                 试程序采用两阶段的差分测试, 分别用            Java 编译器和   JVM  对其进行编译和执行, 从而全面地检测           Java 编译器和
                 JVM  中与新特性相关的缺陷. 本文在         4  个长期支持版本的      OpenJDK、两款主流的      Java 编译器以及两款主流的
                 JVM  上进行了广泛的实验. 实验结果表明, LumiX          在检测新特性缺陷方面优于现有工作, 且能够有效提升                  Java 编
                 译器和   Java 虚拟机的代码覆盖率. 此外, 在实验过程中, LumiX         累计检测出     16  个未知缺陷, 其中   12  个已经被开发
                 人员确认或修复.


                 References
                  [1]   OpenJDK. Java Release. 2025. https://openjdk.org/projects/jdk/24/
                  [2]   Darcy JD. JEP 126: Lambda expression & virtual extension methods. 2015. https://openjdk.org/jeps/126
                  [3]   Bateman A, Pressler R. JEP 437: Structured concurrency (second incubator). 2023. https://openjdk.org/jeps/437
                  [4]   Chen JJ, Patra J, Pradel M, Xiong YF, Zhang HY, Hao D, Zhang L. A survey of compiler testing. ACM Computing Surveys (CSUR),
                     2021, 53(1): 4. [doi: 10.1145/3363562]
                  [5]   Haghighat MR, Khukhro D, Yakovlev A. JavaFuzzer. 2018. https://github.com/AzulSystems/JavaFuzzer
                  [6]   Yang XJ, Chen Y, Eide E, Regehr J. Finding and understanding bugs in C compilers. In: Proc. of the 32nd ACM SIGPLAN Conf. on
                     Programming Language Design and Implementation. San Jose: ACM, 2011. 283–294. [doi: 10.1145/1993498.1993532]
                  [7]   Livinskii  V,  Babokin  D,  Regehr  J.  Random  testing  for  C  and  C++  compilers  with  YARPGen.  Proc.  of  the  ACM  on  Programming
                     Languages, 2020, 4(OOPSLA): 196. [doi: 10.1145/3428264]
                  [8]   Chen  JJ,  Wang  GC,  Hao  D,  Xiong  YF,  Zhang  HY,  Zhang  L.  History-guided  configuration  diversification  for  compiler  test-program
                     generation. In: Proc. of the 34th IEEE/ACM Int’l Conf. on Automated Software Engineering. San Diego: IEEE, 2019. 305–316. [doi: 10.
                     1109/ASE.2019.00037]
                  [9]   Le  V,  Afshari  M,  Su  ZD.  Compiler  validation  via  equivalence  modulo  inputs.  In:  Proc.  of  the  35th  ACM  SIGPLAN  Conf.  on
                     Programming Language Design and Implementation. Edinburgh: ACM, 2014. 216–226. [doi: 10.1145/2594291.2594334]
                 [10]   Le V, Sun CN, Su ZD. Finding deep compiler bugs via guided stochastic program mutation. In: Proc. of the 2015 ACM SIGPLAN Int’l
                     Conf. on Object-oriented Programming, Systems, Languages, and Applications. Pittsburgh: ACM, 2015. 386–399. [doi: 10.1145/2814270.
                     2814319]
                 [11]   Sun CN, Le V, Su ZD. Finding compiler bugs via live code mutation. In: Proc. of the 2016 ACM SIGPLAN Int’l Conf. on Object-
                     oriented Programming, Systems, Languages, and Applications. Amsterdam: ACM, 2016. 849–863. [doi: 10.1145/2983990.2984038]
                 [12]   Wu MY, Lu MH, Cui HM, Chen JJ, Zhang YQ, Zhang LM. JITfuzz: Coverage-guided fuzzing for JVM just-in-time compilers. In: Proc.
                     of the 45th IEEE/ACM Int’l Conf. on Software Engineering. Melbourne: IEEE, 2023. 56–68. [doi: 10.1109/ICSE48619.2023.00017]
                 [13]   Xie ZF, Wen M, Qiu SY, Jin H. Validating JVM compilers via maximizing optimization interactions. In: Proc. of the 29th ACM Int’l
                     Conf. on Architectural Support for Programming Languages and Operating Systems, Vol. 4. ACM, 2024. 345–360. [doi: 10.1145/3622781.
                     3674188]
                 [14]   Li C, Jiang YY, Xu C, Su ZD. Validating JIT compilers via compilation space exploration. In: Proc. of the 29th Symp. on Operating
                     Systems Principles. Koblenz: ACM, 2023. 66–79. [doi: 10.1145/3600006.3613140]
                 [15]   Chen YT, Su T, Sun CN, Su ZD, Zhao JJ. Coverage-directed differential testing of JVM implementations. In: Proc. of the 37th ACM
                     SIGPLAN Conf. on Programming Language Design and Implementation. Santa Barbara: ACM, 2016. 85–99. [doi: 10.1145/2908080.
                     2908095]
                 [16]   Vallée-Rai R, Co P, Gagnon E, Hendren L, Lam P, Sundaresan V. Soot—A Java bytecode optimization framework. In: Proc. of the 1999
                     Conf. of the Centre for Advanced Studies on Collaborative Research. Mississauga: IBM Press, 1999. 13. [doi: 10.5555/781995.782008]
                 [17]   Gu QH. LLM-based code generation method for golang compiler testing. In: Proc. of the 31st ACM Joint European Software Engineering
                     Conf. and Symp. on the Foundations of Software Engineering. San Francisco: ACM, 2023. 2201–2203. [doi: 10.1145/3611643.3617850]
                 [18]   Liu KB, Liu YY, Chen ZP, Zhang JM, Han YD, Ma Y, Li G, Huang G. LLM-powered test case generation for detecting tricky bugs.
                     arXiv:2404.10304v1, 2024.
                 [19]   Tu HX, Zhou ZD, Jiang H, Yusuf INB, Li YX, Jiang LX. LLM4CBI: Taming LLMs to generate effective test programs for compiler bug
                     isolation. arXiv:2307.00593v1, 2023.
                 [20]   Wang Y, Wang WS, Joty S, Hoi SCH. CodeT5: Identifier-aware unified pre-trained encoder-decoder models for code understanding and
   26   27   28   29   30   31   32   33   34   35   36