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

  • Authors:
  • Mark Hills;Feng Chen;Grigore RoşU

  • Affiliations:
  • Department of Computer Science, University of Illinois at Urbana-Champaign, Urbana, IL, US;Department of Computer Science, University of Illinois at Urbana-Champaign, Urbana, IL, US;Department of Computer Science, University of Illinois at Urbana-Champaign, Urbana, IL, US

  • Venue:
  • Electronic Notes in Theoretical Computer Science (ENTCS)
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

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.