[clang-tidy] Update help messages and docs.

Fixed incorrect examples of configuration, clarified the usage of -dump-config.

llvm-svn: 223235
This commit is contained in:
Alexander Kornienko 2014-12-03 14:03:03 +00:00
parent c095663ec1
commit 5c423318c9
2 changed files with 108 additions and 63 deletions

View File

@ -33,7 +33,19 @@ static cl::extrahelp ClangTidyHelp(
" .clang-tidy file located in the closest parent directory of the source\n"
" file. If any configuration options have a corresponding command-line\n"
" option, command-line option takes precedence. The effective\n"
" configuration can be inspected using -dump-config.\n\n");
" configuration can be inspected using -dump-config:\n"
"\n"
" $ clang-tidy -dump-config - --\n"
" ---\n"
" Checks: '-*,some-check'\n"
" HeaderFilterRegex: ''\n"
" AnalyzeTemporaryDtors: false\n"
" User: user\n"
" CheckOptions: \n"
" - key: some-check.SomeOption\n"
" value: 'some value'\n"
" ...\n"
"\n\n");
const char DefaultChecks[] = // Enable these checks:
"clang-diagnostic-*," // * compiler diagnostics
@ -100,16 +112,19 @@ ListChecks("list-checks",
static cl::opt<std::string> Config(
"config",
cl::desc("Specifies a configuration in YAML/JSON format:\n"
" -config=\"{Checks: '*', CheckOptions: {key: x, value: y}}\"\n"
" -config=\"{Checks: '*', CheckOptions: [{key: x, value: y}]}\"\n"
"When the value is empty, clang-tidy will attempt to find\n"
"a file named .clang-tidy for each source file in its parent\n"
"directories."),
cl::init(""), cl::cat(ClangTidyCategory));
static cl::opt<bool>
DumpConfig("dump-config",
cl::desc("Dumps configuration in the YAML format to stdout."),
cl::init(false), cl::cat(ClangTidyCategory));
static cl::opt<bool> DumpConfig(
"dump-config",
cl::desc("Dumps configuration in the YAML format to stdout. This option\n"
"should be used along with a file name (and '--' if the file is\n"
"outside of a project with configured compilation database). The\n"
"configuration used for this file will be printed."),
cl::init(false), cl::cat(ClangTidyCategory));
static cl::opt<bool> EnableCheckProfile(
"enable-check-profile",

View File

@ -86,71 +86,95 @@ An overview of all the command-line options:
clang-tidy options:
-analyze-temporary-dtors - Enable temporary destructor-aware analysis in
clang-analyzer- checks.
-checks=<string> - Comma-separated list of globs with optional '-'
prefix. Globs are processed in order of appearance
in the list. Globs without '-' prefix add checks
with matching names to the set, globs with the '-'
prefix remove checks with matching names from the
set of enabled checks.
This option's value is appended to the value read
from a .clang-tidy file, if any.
-config=<string> - Specifies a configuration in YAML/JSON format:
-config="{Checks: '*', CheckOptions: {key: x, value: y}}"
When the value is empty, clang-tidy will attempt to find
a file named .clang-tidy for each source file in its parent
directories.
-dump-config - Dumps configuration in the YAML format to stdout.
-export-fixes=<filename> - YAML file to store suggested fixes in. The
stored fixes can be applied to the input source
code with clang-apply-replacements.
-fix - Fix detected errors if possible.
-header-filter=<string> - Regular expression matching the names of the
headers to output diagnostics from. Diagnostics
from the main file of each translation unit are
always displayed.
Can be used together with -line-filter.
This option overrides the value read from a
.clang-tidy file.
-line-filter=<string> - List of files with line ranges to filter the
warnings. Can be used together with
-header-filter. The format of the list is a JSON
array of objects:
[
{"name":"file1.cpp","lines":[[1,3],[5,7]]},
{"name":"file2.h"}
]
-list-checks - List all enabled checks and exit. Use with
-checks='*' to list all available checks.
-p=<string> - Build path
-system-headers - Display the errors from system headers
-analyze-temporary-dtors - Enable temporary destructor-aware analysis in
clang-analyzer- checks.
This option overrides the value read from a
.clang-tidy file.
-checks=<string> - Comma-separated list of globs with optional '-'
prefix. Globs are processed in order of appearance
in the list. Globs without '-' prefix add checks
with matching names to the set, globs with the '-'
prefix remove checks with matching names from the
set of enabled checks.
This option's value is appended to the value read
from a .clang-tidy file, if any.
-config=<string> - Specifies a configuration in YAML/JSON format:
-config="{Checks: '*', CheckOptions: [{key: x, value: y}]}"
When the value is empty, clang-tidy will attempt to find
a file named .clang-tidy for each source file in its parent
directories.
-dump-config - Dumps configuration in the YAML format to stdout. This option
should be used along with a file name (and '--' if the file is
outside of a project with configured compilation database). The
configuration used for this file will be printed.
-enable-check-profile - Enable per-check timing profiles, and print a report to stderr.
-export-fixes=<filename> - YAML file to store suggested fixes in. The
stored fixes can be applied to the input source
code with clang-apply-replacements.
-extra-arg=<string> - Additional argument to append to the compiler command line
-extra-arg-before=<string> - Additional argument to prepend to the compiler command line
-fix - Apply suggested fixes. Without -fix-errors
clang-tidy will bail out if any compilation
errors were found.
-fix-errors - Apply suggested fixes even if compilation errors
were found. If compiler errors have attached
fix-its, clang-tidy will apply them as well.
-header-filter=<string> - Regular expression matching the names of the
headers to output diagnostics from. Diagnostics
from the main file of each translation unit are
always displayed.
Can be used together with -line-filter.
This option overrides the value read from a
.clang-tidy file.
-line-filter=<string> - List of files with line ranges to filter the
warnings. Can be used together with
-header-filter. The format of the list is a JSON
array of objects:
[
{"name":"file1.cpp","lines":[[1,3],[5,7]]},
{"name":"file2.h"}
]
-list-checks - List all enabled checks and exit. Use with
-checks='*' to list all available checks.
-p=<string> - Build path
-system-headers - Display the errors from system headers.
-p <build-path> is used to read a compile command database.
For example, it can be a CMake build directory in which a file named
compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
CMake option to get this output). When no build path is specified,
a search for compile_commands.json will be attempted through all
parent paths of the first input file . See:
http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an
example of setting up Clang Tooling on a source tree.
For example, it can be a CMake build directory in which a file named
compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
CMake option to get this output). When no build path is specified,
a search for compile_commands.json will be attempted through all
parent paths of the first input file . See:
http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an
example of setting up Clang Tooling on a source tree.
<source0> ... specify the paths of source files. These paths are
looked up in the compile command database. If the path of a file is
absolute, it needs to point into CMake's source tree. If the path is
relative, the current working directory needs to be in the CMake
source tree and the file must be in a subdirectory of the current
working directory. "./" prefixes in the relative files will be
automatically removed, but the rest of a relative path must be a
suffix of a path in the compile command database.
looked up in the compile command database. If the path of a file is
absolute, it needs to point into CMake's source tree. If the path is
relative, the current working directory needs to be in the CMake
source tree and the file must be in a subdirectory of the current
working directory. "./" prefixes in the relative files will be
automatically removed, but the rest of a relative path must be a
suffix of a path in the compile command database.
Configuration files:
clang-tidy attempts to read configuration for each source file from a
.clang-tidy file located in the closest parent directory of the source
file. If any configuration options have a corresponding command-line
option, command-line option takes precedence. The effective
configuration can be inspected using -dump-config.
configuration can be inspected using -dump-config:
$ clang-tidy -dump-config - --
---
Checks: '-*,some-check'
HeaderFilterRegex: ''
AnalyzeTemporaryDtors: false
User: user
CheckOptions:
- key: some-check.SomeOption
value: 'some value'
...
.. _LibTooling: http://clang.llvm.org/docs/LibTooling.html
.. _How To Setup Tooling For LLVM: http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html
@ -384,7 +408,7 @@ the check implements and what the current values are (e.g. for the
SomeOption(Options.get("SomeOption1", -1U)),
SomeOption(Options.get("SomeOption2", "some default")) {}
void storeOptions(ClangTidyOptions::OptionMap &Opts) {
void storeOptions(ClangTidyOptions::OptionMap &Opts) override {
Options.store(Opts, "SomeOption1", SomeOption1);
Options.store(Opts, "SomeOption2", SomeOption2);
}
@ -395,12 +419,18 @@ be set in a ``.clang-tidy`` file in the following way:
.. code-block:: yaml
CheckOptions: {
CheckOptions:
- key: my-check.SomeOption1
value: 123
- key: my-check.SomeOption2
value: 'some other value'
}
If you need to specify check options on a command line, you can use the inline
YAML format:
.. code-block:: bash
$ clang-tidy -config="{CheckOptions: [{key: a, value: b}, {key: x, value: y}]}" ...
Testing Checks