clang-format
clang-format documentation
- Version in MegaLinter: 17.0.5
- Visit Official Web Site
- See How to disable clang-format rules in files
- See Index of problems detected by clang-format
Configuration in MegaLinter
- Enable clang-format by adding
CPP_CLANG_FORMAT
in ENABLE_LINTERS variable - Disable clang-format by adding
CPP_CLANG_FORMAT
in DISABLE_LINTERS variable
- Enable autofixes by adding
CPP_CLANG_FORMAT
in APPLY_FIXES variable
Variable | Description | Default value |
---|---|---|
CPP_CLANG_FORMAT_ARGUMENTS | User custom arguments to add in linter CLI call Ex: -s --foo "bar" |
|
CPP_CLANG_FORMAT_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter Ex: -s --foo "bar" |
|
CPP_CLANG_FORMAT_FILTER_REGEX_INCLUDE | Custom regex including filter Ex: (src\|lib) |
Include every file |
CPP_CLANG_FORMAT_FILTER_REGEX_EXCLUDE | Custom regex excluding filter Ex: (test\|examples) |
Exclude no file |
CPP_CLANG_FORMAT_CLI_LINT_MODE | Override default CLI lint mode - file : Calls the linter for each file- list_of_files : Call the linter with the list of files as argument- project : Call the linter from the root of the project |
list_of_files |
CPP_CLANG_FORMAT_FILE_EXTENSIONS | Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all filesEx: [".py", ""] |
[".cpp", ".h", ".cc", ".hpp", ".cxx", ".cu", ".hxx", ".c++", ".hh", ".h++", ".cuh"] |
CPP_CLANG_FORMAT_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files Ex: ["Dockerfile(-.+)?", "Jenkinsfile"] |
Include every file |
CPP_CLANG_FORMAT_PRE_COMMANDS | List of bash commands to run before the linter | None |
CPP_CLANG_FORMAT_POST_COMMANDS | List of bash commands to run after the linter | None |
CPP_CLANG_FORMAT_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling CPP_CLANG_FORMAT and its pre/post commands | None |
CPP_CLANG_FORMAT_CONFIG_FILE | clang-format configuration file nameUse LINTER_DEFAULT to let the linter find it |
.clang-format |
CPP_CLANG_FORMAT_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules |
CPP_CLANG_FORMAT_DISABLE_ERRORS | Run linter but consider errors as warnings | false |
CPP_CLANG_FORMAT_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | 0 |
CPP_CLANG_FORMAT_CLI_EXECUTABLE | Override CLI executable | ['clang-format'] |
IDE Integration
Use clang-format in your favorite IDE to catch errors before MegaLinter !
IDE | Extension Name | Install | |
---|---|---|---|
Visual Studio Code | Clang-Format | ||
Emacs | clang-format | Visit Web Site |
MegaLinter Flavours
This linter is available in the following flavours
Flavor | Description | Embedded linters | Info | |
---|---|---|---|---|
all | Default MegaLinter Flavor | 121 | ||
c_cpp | Optimized for pure C/C++ projects | 54 |
Behind the scenes
How are identified applicable files
- File extensions:
.cpp
,.h
,.cc
,.hpp
,.cxx
,.cu
,.hxx
,.c++
,.hh
,.h++
,.cuh
How the linting is performed
- clang-format is called once with the list of files as arguments (
list_of_files
CLI lint mode)
Example calls
clang-format --Werror --dry-run myfile.cpp
Help content
OVERVIEW: A tool to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code.
If no arguments are specified, it formats the code from standard input
and writes the result to the standard output.
If <file>s are given, it reformats the files. If -i is specified
together with <file>s, the files are edited in-place. Otherwise, the
result is written to the standard output.
USAGE: clang-format [options] [<file> ...]
OPTIONS:
Clang-format options:
--Werror - If set, changes formatting warnings to errors
--Wno-error=<value> - If set don't error out on the specified warning type.
=unknown - If set, unknown format options are only warned about.
This can be used to enable formatting, even if the
configuration contains unknown (newer) options.
Use with caution, as this might lead to dramatically
differing format depending on an option being
supported or not.
--assume-filename=<string> - Set filename used to determine the language and to find
.clang-format file.
Only used when reading from stdin.
If this is not passed, the .clang-format file is searched
relative to the current working directory when reading stdin.
Unrecognized filenames are treated as C++.
supported:
CSharp: .cs
Java: .java
JavaScript: .mjs .js .ts
Json: .json
Objective-C: .m .mm
Proto: .proto .protodevel
TableGen: .td
TextProto: .textpb .pb.txt .textproto .asciipb
Verilog: .sv .svh .v .vh
--cursor=<uint> - The position of the cursor when invoking
clang-format from an editor integration
--dry-run - If set, do not actually make the formatting changes
--dump-config - Dump configuration options to stdout and exit.
Can be used with -style option.
--fallback-style=<string> - The name of the predefined style used as a
fallback in case clang-format is invoked with
-style=file, but can not find the .clang-format
file to use. Defaults to 'LLVM'.
Use -fallback-style=none to skip formatting.
--ferror-limit=<uint> - Set the maximum number of clang-format errors to emit
before stopping (0 = no limit).
Used only with --dry-run or -n
--files=<filename> - A file containing a list of files to process, one per line.
-i - Inplace edit <file>s, if specified.
--length=<uint> - Format a range of this length (in bytes).
Multiple ranges can be formatted by specifying
several -offset and -length pairs.
When only a single -offset is specified without
-length, clang-format will format up to the end
of the file.
Can only be used with one input file.
--lines=<string> - <start line>:<end line> - format a range of
lines (both 1-based).
Multiple ranges can be formatted by specifying
several -lines arguments.
Can't be used with -offset and -length.
Can only be used with one input file.
-n - Alias for --dry-run
--offset=<uint> - Format a range starting at this byte offset.
Multiple ranges can be formatted by specifying
several -offset and -length pairs.
Can only be used with one input file.
--output-replacements-xml - Output replacements as XML.
--qualifier-alignment=<string> - If set, overrides the qualifier alignment style
determined by the QualifierAlignment style flag
--sort-includes - If set, overrides the include sorting behavior
determined by the SortIncludes style flag
--style=<string> - Set coding style. <string> can be:
1. A preset: LLVM, GNU, Google, Chromium, Microsoft,
Mozilla, WebKit.
2. 'file' to load style configuration from a
.clang-format file in one of the parent directories
of the source file (for stdin, see --assume-filename).
If no .clang-format file is found, falls back to
--fallback-style.
--style=file is the default.
3. 'file:<format_file_path>' to explicitly specify
the configuration file.
4. "{key: value, ...}" to set specific parameters, e.g.:
--style="{BasedOnStyle: llvm, IndentWidth: 8}"
--verbose - If set, shows the list of processed files
Generic Options:
--help - Display available options (--help-hidden for more)
--help-list - Display list of available options (--help-list-hidden for more)
--version - Display the version of this program
Installation on mega-linter Docker image
- APK packages (Linux):