A Rewriting Logic Approach to Static Checking of Units of Measurement in C

Abstract

Many C programs assume the use of implicit domain-specific information. A common example is units of measurement, where values can have both a standard C type and an associated unit. However, since there is no way in the C language to represent this additional information, violations of domain-specific policies, such as unit safety violations, can be difficult to detect. In this paper we present a static analysis, based on the use of an abstract C semantics defined using rewriting logic, for the detection of unit violations in C programs. In contrast to typed approaches, the analysis makes use of annotations present in C comments on function headers and in function bodies, leaving the C language unchanged. Initial evaluation results show that performance scales well, and that errors can be detected without imposing a heavy annotation burden.

Publication
Proceedings of the Ninth International Workshop on Rule-Based Programming (RULE 2008)
Mark Hills
Mark Hills
Associate Professor

My research interests include programming languages, program analysis, and software engineering.