# Reformatting the text output If you want to reformat the output so it looks different you can use templates. ## Predefined output formats To get Visual Studio compatible output you can use --template=vs: cppcheck --template=vs samples/arrayIndexOutOfBounds/bad.c This output will look like this: Checking samples/arrayIndexOutOfBounds/bad.c ... samples/arrayIndexOutOfBounds/bad.c(6): error: Array 'a[2]' accessed at index 2, which is out of bounds. To get gcc compatible output you can use --template=gcc: cppcheck --template=gcc samples/arrayIndexOutOfBounds/bad.c The output will look like this: Checking samples/arrayIndexOutOfBounds/bad.c ... samples/arrayIndexOutOfBounds/bad.c:6:6: warning: Array 'a[2]' accessed at index 2, which is out of bounds. [arrayIndexOutOfBounds] a[2] = 0; ^ ## User defined output format (single line) You can write your own pattern. For instance, to get warning messages that are formatted like old gcc such format can be used: cppcheck --template="{file}:{line}: {severity}: {message}" samples/arrayIndexOutOfBounds/bad.c The output will look like this: Checking samples/arrayIndexOutOfBounds/bad.c ... samples/arrayIndexOutOfBounds/bad.c:6: error: Array 'a[2]' accessed at index 2, which is out of bounds. A comma separated format: cppcheck --template="{file},{line},{severity},{id},{message}" samples/arrayIndexOutOfBounds/bad.c The output will look like this: Checking samples/arrayIndexOutOfBounds/bad.c ... samples/arrayIndexOutOfBounds/bad.c,6,error,arrayIndexOutOfBounds,Array 'a[2]' accessed at index 2, which is out of bounds. ## User defined output format (multi line) Many warnings have multiple locations. Example code: void f(int *p) { *p = 3; // line 3 } int main() { int *p = 0; // line 8 f(p); // line 9 return 0; } There is a possible null pointer dereference at line 3. Cppcheck can show how it came to that conclusion by showing extra location information. You need to use both --template and --template-location at the command line. Example command: cppcheck --template="{file}:{line}: {severity}: {message}\n{code}" --template-location="{file}:{line}: note: {info}\n{code}" multiline.c The output from Cppcheck is: Checking multiline.c ... multiline.c:3: warning: Possible null pointer dereference: p *p = 3; ^ multiline.c:8: note: Assignment 'p=0', assigned value is 0 int *p = 0; ^ multiline.c:9: note: Calling function 'f', 1st argument 'p' value is 0 f(p); ^ multiline.c:3: note: Null pointer dereference *p = 3; ^ The first line in the warning is formatted by the --template format. The other lines in the warning are formatted by the --template-location format. ### Format specifiers for --template The available specifiers for --template are: **{file}** File name **{line}** Line number **{column}** Column number **{callstack}** Write all locations. Each location is written in [{file}:{line}] format and the locations are separated by ->. For instance it might look like: [multiline.c:8] -> [multiline.c:9] -> [multiline.c:3] **{inconclusive:text}** If warning is inconclusive then the given text is written. The given text can be any arbitrary text that does not contain }. Example: {inconclusive:inconclusive,} **{severity}** error/warning/style/performance/portability/information **{message}** The warning message **{id}** Warning id **{code}** The real code. **\t** Tab **\n** Newline **\r** Carriage return ### Format specifiers for --template-location The available specifiers for `--template-location` are: **{file}** File name **{line}** Line number **{column}** Column number **{info}** Information message about current location **{code}** The real code. **\t** Tab **\t** Newline **\r** Carriage return