| | |
Summary: Flow-Insensitive Type Qualifiers
JEFFREY S. FOSTER
University of Maryland, College Park
and
ROBERT JOHNSON and JOHN KODUMAL
University of California, Berkeley
and
ALEX AIKEN
Stanford University
We describe flow-insensitive type qualifiers, a lightweight, practical mechanism for specifying
and checking properties not captured by traditional type systems. We present a framework for
adding new, user-specified type qualifiers to programming languages with static type systems,
such as C and Java. In our system, programmers add a few type qualifier annotations to their
program, and automatic type qualifier inference determines the remaining qualifiers and checks
the annotations for consistency. We describe a tool CQual for adding type qualifiers to the
C programming language. Our tool CQual includes a visualization component for displaying
browsable inference results to the programmer. Finally, we present several experiments using
our tool, including inferring const qualifiers, finding security vulnerabilities in several popular C
programs, and checking initialization data usage in the Linux kernel. Our results suggest that
inference and visualization make type qualifiers lightweight, that type qualifier inference scales to
|