응용 프로그램 분석 연구실에서는 개발자들이 일상적 활동에서 직면하는 문제를 해결할 새로운 프로그램 분석 기술을 찾고 기존 프로그램 분석 기술을 적용하려고 합니다.
수행하는 연구 중 일부는 JetBrains의 내부 요구 사항에 초점을 맞추는 반면, 다른 프로젝트는 보다 일반적인 사례를 대상으로 합니다. 또한 Kotlin 프로그래밍 언어의 새로운 기능을 설계하고 구현하는 것과 같은 다른 작업도 수행하고자 합니다.
이 프로젝트에서는 Kotlin 컴파일러를 테스트하기 위한 퍼징 애플리케이션을 탐구합니다. 이전 연구에서는 컴파일러에서 꽤 많은 버그< /a>를 발견했습니다. 현재 퍼징 프로세스를 훨씬 더 많은 컴파일러 구성 요소로 확장하고 이를 컴파일러 품질 보증 파이프라인에 포함하기 위해 노력하고 있습니다.
Kex는 Java 바이트코드를 로드하고 중간 모델을 만들며 SMT 솔버를 통해 이를 분석하는 과정을 지원하는 Java 바이트코드 분석 플랫폼입니다. 현재 Kex는 테스트 생성에 중점을 두고 있지만 충돌 재현, 프로그램 분석 및 복구와 같은 다른 용도로도 사용을 고려하고 있습니다.
이 프로젝트에서는 자체 일관성이 LLM 생성 코드의 품질을 측정하는 좋은 척도인지 알아보려고 합니다. 동일한 프롬프트가 주어졌을 때 LLM이 주어진 일관성 정의를 충족하는 솔루션을 생성하면 그 결과에 자체 일관성이 있습니다. 이 프로젝트에서는 차등 테스트를 사용하여 일관성을 측정합니다. 즉, 생성된 모든 솔루션은 주어진 또는 생성된 테스트 모음에서 동일한 방식으로 작동해야 합니다. 테스트를 생성하기 위해 테스트 생성 모드에서 Kex를 적용합니다.
LLM은 서로 다른 언어 간 변환에 탁월하다고 여겨집니다. 그래서 Gradle 빌드 구성을 .gradle
에서 .gradle.kts
로 변환하는 문제에서 이 말이 사실인지 알아보려고 합니다. 이전 Groovy API에서 최신 Kotlin API를 사용하도록 변환하는 경우가 가장 좋은 예시입니다. 이 테스트는 IntelliJ 플랫폼 도구를 통해 Gradle에서 추출한 빌드 구성 전후의 추상을 비교하여 수행됩니다.