教程;
https://hokein.github.io/clang-tools-tutorial/
要用clang-tidy首先要在电脑上安装clang-tools
Linux Ubuntu系统
sudo apt install clang-tools
装好后就可以看到clang-tidy以及其它相关工具了。
clang-tidy 官方文档
接下来我们要使用clang-tidy-8 --help,注意最后面
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:
$ clang-tidy -dump-config
---
Checks: '-*,some-check'
WarningsAsErrors: ''
HeaderFilterRegex: ''
FormatStyle: none
User: user
CheckOptions:
- key: some-check.SomeOption
value: 'some value'
...
就是说你可以通过建立一个文件.clang-tidy来减少命令行中-checks= option的命令。
在你需要检查的文件夹下建立文件.clang-tidy
在.clang-tidy中
{
Checks: "-*,bugprone-*,cert-*,clang-analyzer-*,cppcoreguidelines-avoid-goto,cppcoreguidelines-c-copy-assignment-signature,cppcoreguidelines-interfaces-global-init,cppcoreguidelines-narrowing-conversions,cppcoreguidelines-no-malloc,cppcoreguidelines-pro-bounds-constant-array-index,cppcoreguidelines-pro-type-const-cast,cppcoreguidelines-pro-type-cstyle-cast,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-pro-type-reinterpret-cast,cppcoreguidelines-pro-type-static-cast-downcast,cppcoreguidelines-pro-type-union-access,cppcoreguidelines-slicing,cppcoreguidelines-special-member-functions,google-build-*,google-default-arguments,google-explicit-constructor,google-global-names-in-headers,google-objc-*,google-readability-casting,google-readability-function-size,google-readability-namespace-comments,google-readability-todo,google-runtime-operator,hicpp-avoid-goto,hicpp-deprecated-headers,hicpp-exception-baseclass,hicpp-explicit-conversions,hicpp-function-size,hicpp-invalid-access-moved,hicpp-member-init,hicpp-move-const-arg,hicpp-multiway-paths-covered,hicpp-named-parameter,hicpp-new-delete-operators,hicpp-no-assembler,hicpp-no-malloc,hicpp-noexcept-move,hicpp-special-member-functions,hicpp-static-assert,hicpp-undelegated-constructor,hicpp-use-*,misc-*,modernize-*,-modernize-use-trailing-return-type,performance-*,readability-avoid-const-params-in-decls,readability-container-size-empty,readability-delete-null-pointer,readability-deleted-default,readability-else-after-return,readability-function-size,readability-identifier-naming,readability-inconsistent-declaration-parameter-name,readability-misleading-indentation,readability-misplaced-array-index,readability-named-parameter,readability-non-const-parameter,readability-redundant-*,readability-simplify-*,readability-static-*,readability-string-compare,readability-uniqueptr-delete-release,readability-rary-objects"
}
这些就是检测规则
然后执行:
clang-tidy-8 -p ${
PWD} -dump-config
然后运行clang-tidy
clant-tidy-8 --quite -p ./ src.cpp
这里注意-p 参数,在help里是这样说的
-p <build-path> is used to read a compile command database.
For example, it can be a CMake build directory in

本文介绍如何使用 Clang-Tidy 进行 C++ 代码静态分析,包括安装配置、常见检查规则详解及自动化脚本实现。涵盖 Linux 下安装 clang-tools,配置 .clang-tidy 文件以定制检查规则,并提供示例脚本帮助开发者自动化执行 Clang-Tidy 分析。

2298

被折叠的 条评论
为什么被折叠?



