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. © 2012 Elsevier B.V.
Hills, M., Chen, F., & Roşu, G. (2012). A rewriting logic approach to static checking of units of measurement in C. In Electronic Notes in Theoretical Computer Science (Vol. 290, pp. 51–67). https://doi.org/10.1016/j.entcs.2012.11.011