在应用程序分析实验室,我们试图为开发这在日常活动中遇到的问题寻找新的和调整现有的程序分析技术。
我们的一些研究专注于 JetBrains 的内部需求,而其他项目则针对更普遍的情况。 我们也喜欢做其他事情,比如为 Kotlin 编程语言设计和实现新的功能。
在这个项目中,我们正在探索对 Kotlin 编译器进行模糊测试的应用。 在我们之前的研究中,我们发现编译器中存在相当多的错误。 我们目前正在努力将模糊测试过程扩展到更多的编译器组件,并将其纳入编译器质量保证管道。
Kex 是我们的 Java 字节码分析平台,它支持加载 Java 字节码,建立中间模型,并通过 SMT 求解器进行分析。 目前,Kex 专注于测试生成,但我们也在考虑将其用于其他方面,如崩溃重现、程序分析和修复。
在这个项目中,我们试图了解自洽性是否可以很好地衡量 LLM 生成的代码的质量。如果在相同的提示下,LLM 能够生成满足给定一致性定义的解决方案,那么它就会产生自洽的结果。在这个项目中,我们使用差异测试来衡量一致性:所有生成的解决方案在给定或生成的测试套件上的行为方式应相同。为了生成测试,我们在测试生成模式下应用 Kex。
LLM 被认为擅长在不同语言之间进行转换。我们想了解将 Gradle 构建配置从 .gradle
转换为 .gradle.kts
时这是否属实。从较旧的 Groovy API 转换为使用较新的 Kotlin API 时,这一点最为适用。我们通过比较借助 IntelliJ 平台工具从 Gradle 中提取的构建配置之前和之后的抽象来进行衡量。