[논문 리뷰] A Quantitative and Qualitative Evaluation of LLM-Based Explainable Fault Localization
AutoFL은 OpenAI 기능 호출을 이용해 LLM이 코드 저장소를 탐색하고 단일 실패 테스트로부터 근본 원인 설명과 결함 위치 예측을 생성하여 Defects4J에서 독립 기법과 비교해 acc@1에서 최첨단 성능을 달성합니다.
Fault Localization (FL), in which a developer seeks to identify which part of the code is malfunctioning and needs to be fixed, is a recurring challenge in debugging. To reduce developer burden, many automated FL techniques have been proposed. However, prior work has noted that existing techniques fail to provide rationales for the suggested locations, hindering developer adoption of these techniques. With this in mind, we propose AutoFL, a Large Language Model (LLM)-based FL technique that generates an explanation of the bug along with a suggested fault location. AutoFL prompts an LLM to use function calls to navigate a repository, so that it can effectively localize faults over a large software repository and overcome the limit of the LLM context length. Extensive experiments on 798 real-world bugs in Java and Python reveal AutoFL improves method-level acc@1 by up to 233.3% over baselines. Furthermore, developers were interviewed on their impression of AutoFL-generated explanations, showing that developers generally liked the natural language explanations of AutoFL, and that they preferred reading a few, high-quality explanations instead of many.
연구 동기 및 목표
- 고성능을 향상시키고 인간이 이해할 수 있는 설명을 제공하기 위해 결함 위치 추적에 대형 언어 모델의 사용을 촉진한다.
- 단일 실패 테스트에서 큰 코드베이스를 탐색하기 위해 함수 호출 기능을 갖춘 LLM을 사용하는 자동화된 결함 위치 파이프라인 AutoFL를 개발한다.
- 원인 설명과 정밀한 결함 위치 출력을 생성하기 위한 단계적 LLM 상호 작용을 가능하게 한다.
- LLM 출력물을 실제 코드 요소에 매핑하고 결함 후보를 순위화하는 후처리 파이프라인을 제안한다.
제안 방법
- 포함된 클래스와 메소드를 검사하고 코드 조각 및 Javadoc를 검색하기 위해 함수 호출을 사용하는 LLM 주도 결함 위치 파이프라인 AutoFL를 제공한다.
- 두 단계 프롬프트 프로세스를 사용한다: 1단계에서 원인 설명을 생성하고; 2단계에서 가장 가능성이 높은 결함 메서드 시그니처를 출력한다.
- 다중 AutoFL 실행을 집계하고 가중 점수로 의심 메서드를 순위화하는 후처리 단계를 구현한다.
- gpt-3.5-turbo-0613으로 Defects4J에서 AutoFL를 평가하고 SBFL, MBFL, IRFL, 및 LLM 기반 베이스라인과 비교한다.
- 강건성과 순위 정확도 향상을 위해 반복 및 집계 전략(R=5)을 도입한다.
실험 결과
연구 질문
- RQ1도구 사용이 제어된 LLM이 실패 테스트로부터 버그의 근본 원인을 식별할 수 있는가?
- RQ2실패 테스트만 조건에서 AutoFL가 전통적인 결함 위치 기술과 비교하여 실제 버그 메서드를 얼마나 잘 찾아내는가?
- RQ3후처리 및 실행 집계가 결함 위치 정확도와 순위 안정성을 향상시키는가?
- RQ4성공적 대 실패적 결함 위치 지정으로 이어지는 일반적인 LLM 함수 호출 패턴은 무엇인가?
- RQ5현실 세계의 버그에서 AutoFL의 한계와 실패 모드는 무엇인가?
주요 결과
- AutoFL는 Defects4J의 353건 중 149건에서 첫 추측(acc@1)으로 실제 버그 메서드를 찾아내어 평가된 모든 독립 기법보다 우수했다.
- AutoFL는 실패한 테스트로 제한했을 때 SBFL 베이스라인를 능가하며 acc@1에서 상당한 향상을 보인다(일부 비교에서 최대 338%까지).
- 후처리 및 실행 집계가 성능을 크게 향상시키며, 실행 간 결과를 병합하면 전체적으로 acc@k가 향상되고 합의가 강할 때 거짓 양성이 감소한다.
- 자동FL가 첫 순위에서 위치시키는 버그 중 40% 이상은 최고의 SBFL 베이스라인으로도 정확히 위치되지 않아 AutoFL가 기존 FL 방법들과 직교된다는 것을 시사한다.
- 실패 사례가 존재하며(Time-25 예시), AutoFL가 피상적 분석을 제공합니다 더 깊은 버그 원인을 놓치는 경우가 있어 향후 개선 필요를 강조한다.
- 런 간 평균 함수 호출 수는 약 5.36으로 변동이 있으며, 성공 패턴은 보통 코드를 검사하기 전에 커버된 클래스와 메서드를 차례로 검토하는 경우가 많다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.