Open
Description
一、 项目说明
用于跟踪 clang-tidy代码风格检查工具的引入 并记录该计划下各个子任务的计划和进度。
二、 主要工作
📓 操作指南
(以readability-container-size-empty
为例)
- 编译Paddle (PR-CI-Coverage中的编译选项),需要打开
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_GPU=ON -DWITH_CUDNN_DSO=OFF -DWITH_SHARED_PHI=ON \
-DWITH_TENSORRT=ON -DWITH_ROCM=OFF -DWITH_CINN=OFF -DWITH_DISTRIBUTE=ON \
-DWITH_MKL=ON -DWITH_AVX=ON -DCUDA_ARCH_NAME=Volta -DNEW_RELEASE_PYPI=OFF \
-DNEW_RELEASE_ALL=OFF -DNEW_RELEASE_JIT=OFF -DWITH_PYTHON=ON \
-DCUDNN_ROOT=/usr/ -DWITH_TESTING=ON -DWITH_COVERAGE=ON \
-DWITH_INCREMENTAL_COVERAGE=OFF -DCMAKE_MODULE_PATH=/opt/rocm/hip/cmake \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_INFERENCE_API_TEST=ON \
-DINFERENCE_DEMO_INSTALL_DIR=/home/data/cfs/.cache/coverage -DPY_VERSION=3.8 \
-DCMAKE_INSTALL_PREFIX=/paddle/build -DWITH_PSCORE=ON -DWITH_PSLIB=OFF \
-DWITH_GLOO=ON -DLITE_GIT_TAG=release/v2.10 -DWITH_XPU=OFF -DWITH_IPU=OFF \
-DXPU_SDK_ROOT= -DWITH_LITE=ON -DWITH_XPU_BKCL=OFF -DWITH_ARM=OFF \
-DWITH_STRIP=ON -DON_INFER=OFF -DWITH_HETERPS=OFF -DWITH_GPU_GRAPH=OFF \
-DCUDA_ARCH_BIN= -DWITH_RECORD_BUILDTIME=OFF -DWITH_UNITY_BUILD=ON \
-DWITH_ONNXRUNTIME=OFF -DWITH_CUDNN_FRONTEND=OFF
# 不执行make,会导致clang-tidy无法找到第三方库
make -j$(nproc)
- 打开检查
在.clang-tidy
中移除-readability-container-size-empty
的前缀-
- 运行
clang-tidy
,并根据clang-tidy
提示修改代码 - 重新运行pre-commit确认修改完成
# paddle on develop [!+?] via △ v3.18.0 via 🐍 v3.7.16 took 27m16s
pre-commit run clang-tidy --all-files > clang-tidy.log 2>&1
grep "\[readability-container-size-empty,-warnings-as-errors\]" clang-tidy.log
也可以直接运行clang-tidy并行检查工具:
python ./tools/codestyle/clang-tidy.py -p=build -j=10 \
-clang-tidy-binary=clang-tidy \
-extra-arg=-Wno-unknown-warning-option \
-extra-arg=-Wno-pessimizing-move \
-extra-arg=-Wno-braced-scalar-init \
-extra-arg=-Wno-deprecated-copy \
-extra-arg=-Wno-dangling-gsl \
-extra-arg=-Wno-final-dtor-non-final-class \
-extra-arg=-Wno-implicit-int-float-conversion \
-extra-arg=-Wno-inconsistent-missing-override \
-extra-arg=-Wno-infinite-recursion \
-extra-arg=-Wno-mismatched-tags \
-extra-arg=-Wno-self-assign \
-extra-arg=-Wno-sign-compare \
-extra-arg=-Wno-sometimes-uninitialized \
-extra-arg=-Wno-tautological-overlap-compare \
-extra-arg=-Wno-unused-const-variable \
-extra-arg=-Wno-unused-lambda-capture \
-extra-arg=-Wno-unused-private-field \
-extra-arg=-Wno-unused-value \
-extra-arg=-Wno-unused-variable \
-extra-arg=-Wno-overloaded-virtual \
-extra-arg=-Wno-defaulted-function-deleted \
-extra-arg=-Wno-delete-non-abstract-non-virtual-dtor \
-extra-arg=-Wno-return-type-c-linkage > clang-tidy.log 2>&1
整体进展 (39/94)
1. 存量修复相关
注:错误数量没有统计 CINN 目录下,CINN 目录下也暂时无需修复,原因见 #54073 (comment)
注:2023/07/21重新扫描的日志文件clang-tidy.log
注:2023/11/15重新扫描的日志文件clang-tidy.log
编号 | 错误类型 | 错误数量 | 认领人 | PR链接 |
---|---|---|---|---|
1 | cppcoreguidelines-init-variables | 11002 | ||
2 | modernize-redundant-void-arg | 1294 | ||
3 | bugprone-narrowing-conversions,cppcoreguidelines-narrowing-conversions | 327 | @enkilee | #61759 ✅ #62109 ✅ |
4 | cppcoreguidelines-pro-type-member-init | 216 | ||
5✅ (2024/3/1) | cppcoreguidelines-avoid-c-arrays,modernize-avoid-c-arrays | 151 | @enkilee | #61751 |
6 | modernize-unary-static-assert | 132 | ||
7✅ (2024/3/1) | bugprone-branch-clone | 132 | @enkilee | #61735 |
8 | performance-unnecessary-copy-initialization | 127 | ||
9 | cppcoreguidelines-avoid-goto,hicpp-avoid-goto | 109 | ||
10 | cppcoreguidelines-pro-type-const-cast | 90 | ||
11 | modernize-pass-by-value | 65 | ||
12✅ (2024/3/7) | modernize-loop-convert | 46 | @enkilee | #61725 |
13✅ (2024/2/21) | modernize-deprecated-headers | 44 | @enkilee | #61721 |
14✅ (2024/2/20) | misc-unused-alias-decls | 44 | @enkilee | #61716 |
15✅ (2024/2/20) | performance-inefficient-vector-operation | 30 | @enkilee | #61715 |
16 | clang-analyzer-optin.cplusplus.VirtualCall | 26 | ||
17✅ (2024/3/1) | cppcoreguidelines-explicit-virtual-functions,modernize-use-override | 20 | @enkilee | #61714 |
18 | clang-analyzer-core.NullDereference | 18 | ||
19✅ (2024/2/26) | readability-container-size-empty | 16 | @enkilee | #61713 |
20✅ (2023/12/5) | modernize-use-nullptr | 15 | @ccsuzzh | #59626 |
21✅ (2024/2/21) | performance-for-range-copy | 14 | @enkilee | #61712 |
22 | cppcoreguidelines-no-malloc | 13 | ||
23 | modernize-use-emplace | 11 | ||
24✅ (2024/3/1) | hicpp-exception-baseclass | 11 | @enkilee | #61691 |
25✅ (2024/2/26) | modernize-use-transparent-functors | 9 | @enkilee | #61689 |
26✅ (2024/2/20) | misc-unused-using-decls | 9 | @enkilee | #61616 |
27✅ (2024/2/21) | performance-move-const-arg | 7 | @enkilee | #61615 |
28✅ (2024/2/21) | modernize-use-equals-default | 7 | @enkilee | #61614 |
29✅ (2024/2/20) | bugprone-exception-escape | 7 | @enkilee | #61609 |
30 | performance-inefficient-string-concatenation | 5 | ||
31✅ (2024/2/29) | clang-analyzer-cplusplus.NewDeleteLeaks | 5 | @enkilee | #62129 |
32✅ (2024/2/29) | bugprone-unused-raii | 5 | @enkilee | #62129 |
33✅ (2024/2/20) | bugprone-inaccurate-erase | 5 | @enkilee | #61589 |
34✅ (2024/2/29) | bugprone-copy-constructor-init | 5 | @enkilee | #62129 |
35✅ (2024/2/20) | modernize-use-bool-literals | 3 | @enkilee | #61580 |
36✅ (2024/2/20) | clang-analyzer-core.DivideZero | 3 | @enkilee | #61580 |
37✅ (2024/2/20) | bugprone-integer-division | 3 | @enkilee | #61580 |
38✅ (2024/2/26) | performance-trivially-destructible | 2 | @enkilee | #61556 |
39✅ (2024/2/26) | modernize-make-unique | 2 | @enkilee | #61556 |
40✅ (2024/2/26) | modernize-avoid-bind | 2 | @enkilee | #61556 |
41✅ (2024/2/29) | cppcoreguidelines-slicing | 2 | @enkilee | #62129 |
42✅ (2024/2/20) | performance-noexcept-move-constructor | 1 | @enkilee | #61555 |
43✅ (2024/2/20) | clang-diagnostic-unused-but-set-variable | 1 | @enkilee | #61555 |
44✅ (2024/2/20) | clang-analyzer-security.FloatLoopCounter | 1 | @enkilee | #61555 |
45✅ (2024/2/29) | clang-analyzer-cplusplus.NewDelete | 1 | @enkilee | #62129 |
46✅ (2024/2/21) | clang-analyzer-core.NonNullParamChecker | 1 | @enkilee | #61494 |
47✅ (2024/2/21) | bugprone-unhandled-self-assignment | 1 | @enkilee | #61494 |
48✅ (2024/2/20) | bugprone-string-integer-assignment | 1 | @enkilee | #61492 |
49✅ (2024/2/20) | bugprone-misplaced-widening-cast | 1 | @enkilee | #61492 |
50✅ (2024/2/20) | bugprone-infinite-loop | 1 | @enkilee | #61492 |
旧任务表格如下所示(旧任务进展 55/94):按完成时间顺序,排名不分先后: @GreatV (4) @BeingGod (4) @gouzil (19) @ccsuzzh (5) @enkilee (13) @xiaoyewww (6) @SigureMo (3) @RedContritio (1)
编号 | 错误类型 | 错误数量 | 认领人 | PR链接 |
---|---|---|---|---|
1 | [hicpp-avoid-goto] | 1603 | ||
2 | [cppcoreguidelines-avoid-goto] (🏷️ alias of task 1) | 1603 | ||
3✅ (2023/7/31) | [modernize-redundant-void-arg] | 1326 | @gouzil | #55652 #55741 |
4✅ (2023/8/3) | [modernize-loop-convert] | 1091 | @GreatV | #55704 |
5✅ (2023/8/30) | [modernize-make-shared] | 842 | @SigureMo | #55807 |
6✅ (2023/8/14) | [modernize-avoid-c-arrays] | 820 | @gouzil | #55774✅ #55954✅ |
7✅ (2023/8/14) | [cppcoreguidelines-avoid-c-arrays] (🏷️ alias of task 6) | 820 | @gouzil | #55774✅ #56208✅ |
8✅ (2023/9/15) | [cppcoreguidelines-narrowing-conversions] | 596 | @gouzil | #56218 ✅ #56895✅ #56904✅ 57114✅ |
9✅ (2023/10/11) | [bugprone-narrowing-conversions] (🏷️ alias of task 8) | 596 | @gouzil | #57861 |
10✅ (2023/10/11) | [cppcoreguidelines-init-variables] | 576 | @gouzil | #57871 |
11 ✅ (2023/7/11) | [readability-container-size-empty] | 458 | @GreatV | #55279 |
12✅ (2023/8/4) | [modernize-use-nullptr] | 409 | @ccsuzzh | #55800 |
13✅ (2023/8/4) | [modernize-use-emplace] | 401 | @BeingGod | #55799 |
14 | [performance-unnecessary-copy-initialization] | 395 | ||
15 | [cppcoreguidelines-pro-type-const-cast] | 164 | @enkilee | #58285 |
16✅ (2023/8/7) | [modernize-use-equals-default] | 150 | @BeingGod | #55983 |
17✅ (2023/10/12) | [performance-for-range-copy] | 127 | @enkilee | #57809 |
18 | [cppcoreguidelines-pro-type-member-init] | 127 | ||
19✅ (2023/10/13) | [performance-move-const-arg] | 113 | @enkilee | #57627 |
20✅ (2023/9/7) | [clang-analyzer-core.CallAndMessage] | 96 | @enkilee | #56954 |
21 | [modernize-pass-by-value] | 95 | @Rruown | |
22✅ (2023/8/9) | [modernize-make-unique] | 81 | @BeingGod | #55506✅ #55764✅ |
23✅ (2023/9/21) | [bugprone-branch-clone] | 74 | @enkilee | #57522 |
24 | [performance-inefficient-vector-operation] | 71 | @gouzil | #58028 ✅ |
25✅ (2023/9/7) | [modernize-deprecated-headers] | 34 | @enkilee | #56994 |
26✅ (2023/8/29) | [misc-unused-using-decls] | 33 | @enkilee | #56485 |
27✅ (2023/8/29) | [misc-unused-alias-decls] | 32 | @enkilee | #56485 |
28 | [clang-analyzer-core.NullDereference] | 32 | ||
29✅ (2023/9/18) | [cppcoreguidelines-no-malloc] | 29 | @gouzil | #57343 |
30 | [clang-analyzer-optin.cplusplus.VirtualCall] | 26 | ||
31✅ (2023/8/14) | [modernize-use-bool-literals] | 22 | @enkilee | #56216 |
32✅ (2023/9/20) | [clang-analyzer-deadcode.DeadStores] | 22 | @enkilee | #57483 |
33✅ (2023/9/7) | [bugprone-signed-char-misuse] | 21 | @ccsuzzh | #56744 |
34✅ (2023/9/1) | [performance-noexcept-move-constructor] | 18 | @enkilee | #56261 |
35✅ (2023/9/1) | [bugprone-incorrect-roundings] | 18 | @gouzil | #56747 |
36✅ (2023/9/1) | [modernize-use-transparent-functors] | 17 | @enkilee | #56261 |
37✅ (2023/8/15) | [performance-faster-string-find] | 14 | @enkilee | #56255 |
38✅ (2023/8/28) | [bugprone-exception-escape] | 14 | @gouzil | #56692 |
39✅ (2023/8/30) | [clang-analyzer-optin.cplusplus.UninitializedObject] | 13 | @gouzil | #56648 |
40✅ (2023/8/29) | [performance-inefficient-string-concatenation] | 12 | @gouzil | #56647 |
41✅ (2023/8/29) | [bugprone-unhandled-self-assignment] | 9 | @gouzil | #56640 |
42✅ (2023/8/29) | [clang-analyzer-core.uninitialized.Assign] | 8 | @gouzil | #56637 |
43✅ (2023/8/29) | [clang-analyzer-core.UndefinedBinaryOperatorResult] | 8 | @gouzil | #56636 |
44✅ (2023/8/29) | [bugprone-misplaced-widening-cast] | 8 | @gouzil | #56635 |
45✅ (2023/8/1) | [bugprone-unused-raii] | 7 | @ccsuzzh | #55815 |
46✅ (2023/8/3) | [modernize-avoid-bind] | 6 | @gouzil | |
47 ✅ (2023/7/21) | [modernize-use-override] | 4 | @BeingGod | #55491 |
48✅(2023/11/6) | [clang-analyzer-unix.Malloc] | 4 | @RedContritio | #55658 |
49 | [clang-analyzer-cplusplus.NewDeleteLeaks] | 4 | ||
50 | [clang-analyzer-core.DivideZero] | 4 | ||
51✅ (2023/8/14) | [bugprone-copy-constructor-init] | 4 | @enkilee | #56219 |
52✅ (2023/8/14) | [bugprone-argument-comment] | 4 | @enkilee | #56217 |
53✅ (2023/8/29) | [cppcoreguidelines-c-copy-assignment-signature] | 3 | @xiaoyewww | #56601 |
54✅ (2023/8/29) | [bugprone-use-after-move] | 3 | @xiaoyewww | #56601 |
55 | [bugprone-sizeof-expression] | 3 | @xiaoyewww | |
56✅ (2023/8/29) | [modernize-raw-string-literal] | 2 | @SigureMo | #55675 |
57✅ (2023/9/5) | [cppcoreguidelines-explicit-virtual-functions] | 2 | @xiaoyewww | #56649 |
58✅ (2023/9/5) | [clang-analyzer-core.NonNullParamChecker] | 2 | @xiaoyewww | #56649 |
59✅ (2023/9/5) | [bugprone-unused-return-value] | 2 | @xiaoyewww | #56676 |
60✅ (2023/9/5) | [bugprone-suspicious-missing-comma] | 2 | @xiaoyewww | #56676 |
61✅ (2023/8/29) | [hicpp-exception-baseclass] | 1 | @SigureMo | #55847 |
62✅ (2023/8/15) | [clang-analyzer-unix.Vfork] | 1 | @gouzil | #56253 |
63✅ (2023/8/15) | [clang-analyzer-security.insecureAPI.vfork] | 1 | @gouzil | #56253 |
64✅ (2023/9/7) | [clang-analyzer-optin.portability.UnixAPI] | 1 | @ccsuzzh | #56744 |
65✅ (2023/8/28) | [clang-analyzer-cplusplus.InnerPointer] | 1 | @ccsuzzh | #56693 |
66✅ (2023/8/14) | [bugprone-integer-division] | 1 | @gouzil | #56246 |
2. 增量拦截相关
编号 | 任务 | 认领人 | PR链接 |
---|---|---|---|
67✅ (2023/7/11) | 在 .pre-commit-config.yaml 在添加 clang-tidy 检查项 |
@GreatV | #55279 #55894 |
68✅(2023/7/11) | 使用单独的脚本运行 clang-tidy ,开发者便于手动执行检查 |
运行tools/codestyle/clang-tidy.py 即可 |
#55279 |
69 | 将 clang-tidy 工具同步到release分支 |
@Liyulingyue | |
70 | 将 clang-tidy 同步到CI镜像中,PR-CI-Build 中打开CI, 避免重复安装下载 |
@ccsuzzh | #55619 |
3. 移除pre-commit中的-WnoXXX
(.pre-commit-config.yaml)
编号 | 任务 | 认领人 | PR链接 |
---|---|---|---|
71 | -extra-arg=-Wno-pessimizing-move | @enkilee | |
72 | -extra-arg=-Wno-braced-scalar-init | ||
73 | -extra-arg=-Wno-dangling-gsl | ||
74 | -extra-arg=-Wno-deprecated-copy | ||
75 | -extra-arg=-Wno-final-dtor-non-final-class | ||
76 | -extra-arg=-Wno-implicit-int-float-conversion | ||
77 | -extra-arg=-Wno-inconsistent-missing-override | ||
78 | -extra-arg=-Wno-infinite-recursion | ||
79 | -extra-arg=-Wno-mismatched-tags | ||
80 | -extra-arg=-Wno-self-assign | ||
81 | -extra-arg=-Wno-sign-compare | ||
82 | -extra-arg=-Wno-sometimes-uninitialized | ||
83 | -extra-arg=-Wno-tautological-overlap-compare | ||
84 | -extra-arg=-Wno-unused-const-variable | ||
85 | -extra-arg=-Wno-unused-lambda-capture | ||
86 | -extra-arg=-Wno-unused-private-field | ||
87 | -extra-arg=-Wno-unused-value | ||
88 | -extra-arg=-Wno-unused-variable | ||
89 | -extra-arg=-Wno-overloaded-virtual | ||
90 | -extra-arg=-Wno-defaulted-function-deleted | ||
91 | -extra-arg=-Wno-delete-non-abstract-non-virtual-dtor | ||
92 | -extra-arg=-Wno-return-type-c-linkage | ||
93 | 将paddle/cinn 重新加入 clang-tidy pre-commit 扫描路径,并确保打开的检查项能够通过 |
||
94 | 将cmake时自动生成的c++文件路径加入clang-tidy排除项 |
Metadata
Assignees
Type
Projects
Status
In Progress