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

https://doi.org/10.1016/j.entcs.2012.11.011Get rights and content
Under a Creative Commons license
open access

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.

Keywords

Unit safety
rewriting logic
abstract semantics
static analysis

Cited by (0)

Supported by NSF CCF-0448501 and NSF CNS-0509321.