-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Closed
Labels
PFCCPaddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfccPaddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
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排除项 |
GreatV and gouzil
Metadata
Metadata
Assignees
Labels
PFCCPaddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfccPaddle Framework Contributor Club,https://github.com/PaddlePaddle/community/tree/master/pfcc
Type
Projects
Status
Done