---
name: "crangler"
section: "1"
platform: "linux"
package: "cbmc"
version: "6.6.0-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/crangler"
---

# crangler(1)

C source transformation

## NAME

crangler - C source transformation

## SYNOPSIS

**crangler \[-?\] \[-h\] \[--help\]**

**crangler** *file.json*

## DESCRIPTION

**crangler** is a command-line utility that makes changes to a preprocessed C file that are prescribed in a JSON configuration file.

The supported transformations are:

-

  Add a contract (pre/post/assigns) to a named C function.

-

  Add a loop contract to a loop identified by the name of the function containing the loop and a loop number.

-

  Remove the **static** storage classifier from a function or a variable.

-

  Replace a function call by a call to a stub.

The resulting source file is written to standard output or to a file specified in the JSON configuration.

## EXAMPLE

The following JSON configuration file makes **crangler** preprocess *remove\_static1.c*. While processing this file to produce a preprocessed result, no non-standard include paths or defines reqired. Transformations configured here are removing the **static** storage classifier from all functions matching the regular expression **foobar\[12\]**, and replacing calls to *bar* by calls to a function called *bar\_stub*. No objects are listed that require transformation. The result is written to standard output.

```
{
  "sources": [
    "remove_static1.c"
  ],
  "includes": [],
  "defines": [],
  "functions": [
    {
      "foobar[12]": [
        "remove static"
      ],
      "bar": [
        "stub bar_stub"
      ]
    }
  ],
  "objects": [],
  "output": "stdout"
}
```

## ENVIRONMENT

All tools honor the TMPDIR environment variable when generating temporary files and directories.

## BUGS

If you encounter a problem please create an issue at **https://github.com/diffblue/cbmc/issues**

## COPYRIGHT

2021, Daniel Kroening
