Mining Alerts for Improving Bug Finders
결함검출기 개선을 위한 검출 결과 마이닝
- 발행기관 한동대학교 일반대학원
- 지도교수 남재창
- 발행년도 2023
- 학위수여년월 2023. 2
- 학위명 석사
- 학과 및 전공 일반대학원 전산전자공학과
- 세부분야 해당없음
- 원문페이지 viii, 55
- 실제URI http://www.dcollection.net/handler/handong/200000681999
- UCI I804:47030-200000681999
- 본문언어 영어
- 저작권 한동대학교 논문은 저작권에 의해 보호받습니다.
초록/요약
According to the increasing costs of software failure and maintenance, static analysis tools have been commonly used to support the increased demand for reliable software and efficiently manage the quality of software. A bug finder is a static analysis tool to automatically look for bugs in a target program based on rules and patterns. They help users find bugs quickly, but they are perceived to be underused because of its high false positive rates. The false positives can be caused by (1) users rejecting warnings and (2) false-positive inducing issues (FPI), that is, bugs in rule implementations. The objective of this study is to reduce warning validation costs for developers of bug finders when they validate the implementation of bug finders to reduce false positives caused by FPI. The objective of this study is to reduce warning validation costs for developers of bug finders when they validate the implementation of bug finders to reduce false positives caused by FPI. To achieve the objective, we propose a novel approach, WINE (Warning miner). The key idea of WINE is to extract representative warnings that are structurally equal to other warnings, or structurally contain other warnings from numerous warnings. The rationale behind the approach is that the warnings detected based on structural information and tokens might be equal to each other, or contain other warnings structurally. We evaluated our approach with PMD, an open source bug finder, and 1,008 Java open source projects maintained by Apache Software Foundation. As a result, WINE extracted just about 2% of all warnings. Among the 2% of warnings, we could find the 28 FPIs of PMD. Among them, ten FPIs were already fixed among them. In addition, we simulated our approach in regression testing of PMD with twelve versions changes of PMD (6.25.0 to 6.37.0). As a result, we observed that WINE can effectively reduce the inspection costs by removing about 95% changed warnings. Based on the results, we suggest that WINE could be adopted to improve the bug finders in terms of reducing false positives cause by FPI. In addition, WINE is helpful in the development processes of bug finders to identify false positives and false negatives, especially in regression testing of bug finders.
more초록/요약
소프트웨어 결함과 유지보수에 대한 비용이 증가함에 따라, 신뢰할만한 소프트웨어에 대한 수요를 충족시키고 소프트웨어 품질을 효율적으로 관리하기 위해 정적분석 도구가 사용된다. 결함검출기는 자동으로 검사하고자 하는 프로그램이 결함을 규칙과 패턴을 바탕으로 찾아내는 정적분석도구이다. 이러한 도구는 프로그램의 결함을 빠르게 찾지만, 높은 오검률을 이유로 활발히 사용되지 않는다. 오검출은 두 가지 근본적인 원인에 의해 발생하는데, (1) 사용자가 보고된 결함을 결함으로 인정하지 않는 경우, (2) 오검출을 유발하는 결함, 즉, 결함검출기의 결함 때문이다. 본 연구는 결함검출기의 개발자들이 결함검출기의 구현을 검증할 때, 검출 결과 확인 비용을 줄이는 것을 목표로 한다. 연구의 목적을 달성하기 위해, 본 연구에서는 새로운 방법론인 WINE (Warning miner)을 제시한다. WINE의 핵심적인 아이디어는 검출 결과 각각을 서로 비교해 구조적으로 다른 검출 결과를 포함하거나 동일한 대표적인 검출 결과를 추출하는 것이다. 이는 결함검출기의 검출 결과가 구조적 정보와 토큰 정보에 의해 검출되며, 각각의 검출 결과는 다른 검출 결과와 구조적으로 같거나 다른 검출 결과를 포함할 수 있다는 점에서 착안한다. 본 연구에서 제시하는 방법론을 평가하기 위해 오픈소스 결함검출기인 PMD를 Apache Software Foundation에서 관리하는 1,008개의 자바 오픈소스 프로젝트에 적용한 결과를 두고 평가했다. 결과적으로 WINE는 전체 결함 검출 결과 중 2\%의 검출 결과만 추출했으며, 이를 확인해 28개의 결함검출기의 서로 다른 결함을 발견할 수 있었고 그 중 10개의 결함은 수정되었다. 또한, 본 연구에서는 PMD의 열두개의 버전에 제안하는 방법론을 적용해 회귀 테스팅 모의 실험을 진행했다. 결과적으로 약 95\%의 추가되고 사라진 결함에 대한 확인 비용을 줄일 수 있었다. 결과를 바탕으로, WINE이 결함검출기의 결함으로 인해 발생하는 오검출 결과를 줄임으로써 결함검출기를 개선할 수 있음을 확인했다. 뿐만 안니라, 회귀 테스팅 환경에서 결함검출기의 구현을 확인할 때, WINE이 효과적으로 개발 과정에 적용될 수 있음을 확인했다.
more목차
I. Introduction 1
1.1. Static Analysis 1
1.2. Bug Finders 2
1.3. Problems in Bug Finders 3
1.4. Root Causes of False Positives 4
1.5. Approaches 5
1.6. Contributions 6
1.7. Organization of this Paper 6
II. Related Work 7
2.1. Validation of the Implementation 7
2.1.1 Validating Bug Finders 8
2.1.2 Test Program Construction for Validating Compilers 9
2.2. Postprocessing Alerts 13
2.2.1 Simplification of Manual Inspection 13
2.2.2 Clustering 16
2.2.3 Ranking 18
III. Warning Miner for Improving Bug Finders 20
3.1. Selecting Rules 21
3.2. Collecting Warnings 22
3.3. Extracting Representative Warnings 23
3.3.1 Generating Warning Patterns 23
3.3.2 Extracting Representative Warnings 25
3.4. Evaluation 27
3.4.1 Research Questions 27
3.4.2 Experimental Setup 28
3.4.3 RQ1: Effectiveness of WINE in Terms of Validation Cost 29
3.4.4 RQ2: Effectiveness of WINE in Terms of Identifying FPIs 31
3.4.5 RQ3: Generated Alerts after Fixing FPIs Found by WINE 34
3.5. Practical Guidelines for WINE 35
3.5.1 In Regression Testing 35
3.5.2 Extracting Representative Warnings 38
3.5.3 Rule Extension 38
3.5.4 Time Overhead 38
3.6. WINE and Equivalent Class Partitioning 39
3.7. Threats to Validity 40
3.7.1 Internal Validity 40
3.7.2 External Validity 40
3.8. Future work 41
IV. Conclusion 42
V. References 43
Acknowledgement 55

