Scalable static analyzers are popular tools for finding incorrect, inefficient, insecure, and hard-to-maintain code early during the development process. Because not all warnings reported by a static analyzer are immediately useful to developers, many static analyzers provide a way to suppress warnings, e.g., in the form of special comments added into the code. Such \emph{suppressions} are an important mechanism at the interface between static analyzers and software developers, but little is currently known about them. This paper presents the first in-depth empirical study of suppressions of static analysis warnings, addressing questions about the prevalence of suppressions, their evolution over time, the relationship between suppressions and warnings, and the reasons for using suppressions. We answer these questions by studying projects written in three popular languages and suppressions for warnings by four popular static analyzers. Our findings show that (i) suppressions are relatively common, e.g., with a total of 7,357 suppressions in 46 Python projects, (ii) the number of suppressions in a project tends to continuously increase over time, (iii) surprisingly, 50.8% of all suppressions do not affect any warning and hence are practically useless, (iv) some suppressions, including useless ones, may unintentionally hide future warnings, and (v) common reasons for introducing suppressions include false positives, suboptimal configurations of the static analyzer, and misleading warning messages. These results have actionable implications, e.g., that developers should be made aware of useless suppressions and the potential risk of unintentional suppressing, that static analyzers should provide better warning messages, and that static analyzers should separately categorize warnings from third-party libraries.
Mon 23 JunDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
14:00 - 15:20 | Program Analysis 1Industry Papers / Research Papers at Cosmos 3A Chair(s): Shiyi Wei University of Texas at Dallas | ||
14:00 20mTalk | Dynamic Taint Tracking for Modern Java Virtual Machines Research Papers DOI | ||
14:20 20mTalk | HapTest: The Dynamic Analysis Framework for OpenHarmony Industry Papers Farong Liu Beihang University, Mingyi Zhou Beihang University, Yakun Zhang Peking University, Ting Su East China Normal University, Bo Sun Huawei, Jacques Klein University of Luxembourg, Xiang Gao Beihang University, Li Li Beihang University | ||
14:40 20mTalk | An Empirical Study of Suppressed Static Analysis Warnings Research Papers Huimin Hu University of Stuttgart, Yingying Wang University of British Columbia, Julia Rubin The University of British Columbia, Michael Pradel University of Stuttgart DOI | ||
15:00 20mTalk | A New Approach to Evaluating Nullability Inference Tools Research Papers Nima Karimipour University of California, Riverside, Erfan Arvan New Jersey Institute of Technology, Martin Kellogg New Jersey Institute of Technology, Manu Sridharan University of California at Riverside DOI |
Cosmos 3A is the first room in the Cosmos 3 wing.
When facing the main Cosmos Hall, access to the Cosmos 3 wing is on the left, close to the stairs. The area is accessed through a large door with the number “3”, which will stay open during the event.