Skip to content

Commit 91ddee7

Browse files
committed
compileroptions.cmake: disabled -Wshadow-header for now
triage/mainwindows.cpp: mitigated `bugprone-random-generator-seed` clang-tidy warning disabled `misc-multiple-inheritance` clang-tidy check for now vf_common.cpp: fixed `readability-math-missing-parentheses` clang-tidy warning testcheckersreport.cpp: fixed `misc-override-with-different-visibility` clang-tidy warnings clang_tidy.cmake: only add `-enable-check-profile` on Clang 22 or higher .clang-tidy: disabled `misc-use-internal-linkage.AnalyzeTypes` clang-tidy check for now .clang-tidy: disabled `modernize-avoid-c-style-cast` clang-tidy check for now .clang-tidy: disabled `readability-inconsistent-ifelse-braces` clang-tidy check Revert "Workaround for broken apt.llvm.org repo (revert to clang 21) (cppcheck-opensource#8312)" This reverts commit 6a14618. Revert "iwyu.yml: reverted to Clang 21 for now [skip ci] (cppcheck-opensource#8318)" This reverts commit e473adb.
1 parent 36b8eb5 commit 91ddee7

12 files changed

Lines changed: 58 additions & 24 deletions

File tree

.clang-tidy

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@ Checks: >
2323
google-explicit-constructor,
2424
-bugprone-assignment-in-if-condition,
2525
-bugprone-branch-clone,
26+
-bugprone-command-processor,
2627
-bugprone-easily-swappable-parameters,
2728
-bugprone-empty-catch,
2829
-bugprone-macro-parentheses,
2930
-bugprone-narrowing-conversions,
3031
-bugprone-signed-char-misuse,
3132
-bugprone-switch-missing-default-case,
33+
-bugprone-throwing-static-initialization,
3234
-bugprone-unchecked-optional-access,
3335
-clang-analyzer-*,
3436
-concurrency-mt-unsafe,
@@ -37,11 +39,12 @@ Checks: >
3739
-misc-non-private-member-variables-in-classes,
3840
-misc-throw-by-value-catch-by-reference,
3941
-misc-use-anonymous-namespace,
40-
-misc-use-internal-linkage,
4142
-modernize-avoid-c-arrays,
4243
-modernize-deprecated-ios-base-aliases,
4344
-misc-include-cleaner,
45+
-misc-multiple-inheritance,
4446
-misc-unused-using-decls,
47+
-modernize-avoid-c-style-cast,
4548
-modernize-loop-convert,
4649
-modernize-macro-to-enum,
4750
-modernize-raw-string-literal,
@@ -67,9 +70,10 @@ Checks: >
6770
-readability-identifier-length,
6871
-readability-identifier-naming,
6972
-readability-implicit-bool-conversion,
73+
-readability-inconsistent-ifelse-braces,
7074
-readability-isolate-declaration,
7175
-readability-magic-numbers,
72-
-readability-math-missing-parentheses,
76+
-readability-redundant-parentheses,
7377
-readability-suspicious-call-argument,
7478
-readability-uppercase-literal-suffix,
7579
-readability-use-concise-preprocessor-directives,
@@ -84,3 +88,7 @@ CheckOptions:
8488
value: '0'
8589
- key: modernize-use-trailing-return-type.TransformFunctions
8690
value: false
91+
- key: misc-override-with-different-visibility.DisallowedVisibilityChange
92+
value: widening
93+
- key: misc-use-internal-linkage.AnalyzeTypes
94+
value: false

.github/workflows/asan.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14
5555
wget https://apt.llvm.org/llvm.sh
5656
chmod +x llvm.sh
57-
sudo ./llvm.sh 21
57+
sudo ./llvm.sh 22
5858
5959
- name: Install Qt ${{ env.QT_VERSION }}
6060
uses: jurplel/install-qt-action@v4
@@ -76,8 +76,8 @@ jobs:
7676
run: |
7777
cmake -S . -B cmake.output -Werror=dev -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_RULES=On -DBUILD_TESTING=On -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_TRIAGE=On -DUSE_MATCHCOMPILER=Verify -DANALYZE_ADDRESS=On -DENABLE_CHECK_INTERNAL=On -DUSE_BOOST=On -DCPPCHK_GLIBCXX_DEBUG=Off -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DDISABLE_DMAKE=On -DFILESDIR= -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
7878
env:
79-
CC: clang-21
80-
CXX: clang++-21
79+
CC: clang-22
80+
CXX: clang++-22
8181

8282
- name: Build cppcheck
8383
run: |

.github/workflows/clang-tidy.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ jobs:
4343
sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14
4444
wget https://apt.llvm.org/llvm.sh
4545
chmod +x llvm.sh
46-
sudo ./llvm.sh 21
47-
sudo apt-get install -y clang-tidy-21
46+
sudo ./llvm.sh 22
47+
sudo apt-get install -y clang-tidy-22
4848
4949
- name: Install Qt ${{ env.QT_VERSION }}
5050
uses: jurplel/install-qt-action@v4
@@ -57,14 +57,14 @@ jobs:
5757

5858
- name: Verify clang-tidy configuration
5959
run: |
60-
clang-tidy-21 --verify-config
60+
clang-tidy-22 --verify-config
6161
6262
- name: Prepare CMake
6363
run: |
6464
cmake -S . -B cmake.output -Werror=dev -DHAVE_RULES=On -DBUILD_TESTING=On -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_TRIAGE=On -DENABLE_CHECK_INTERNAL=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DDISABLE_DMAKE=On -DCPPCHK_GLIBCXX_DEBUG=Off -DCMAKE_COMPILE_WARNING_AS_ERROR=On
6565
env:
66-
CC: clang-21
67-
CXX: clang++-21
66+
CC: clang-22
67+
CXX: clang++-22
6868

6969
- name: Prepare CMake dependencies
7070
run: |

.github/workflows/iwyu.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -217,13 +217,13 @@ jobs:
217217
sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14
218218
wget https://apt.llvm.org/llvm.sh
219219
chmod +x llvm.sh
220-
sudo ./llvm.sh 21
221-
sudo apt-get install -y clang-tools-21
220+
sudo ./llvm.sh 22
221+
sudo apt-get install -y clang-tools-22
222222
223223
- name: Install libc++
224224
if: matrix.stdlib == 'libc++'
225225
run: |
226-
sudo apt-get install -y libc++-21-dev
226+
sudo apt-get install -y libc++-22-dev
227227
228228
- name: Install Qt ${{ env.QT_VERSION }}
229229
uses: jurplel/install-qt-action@v4
@@ -238,8 +238,8 @@ jobs:
238238
run: |
239239
cmake -S . -B cmake.output -Werror=dev -DCMAKE_BUILD_TYPE=Release -DHAVE_RULES=On -DBUILD_TESTING=On -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_TRIAGE=On -DENABLE_CHECK_INTERNAL=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DDISABLE_DMAKE=On -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCPPCHK_GLIBCXX_DEBUG=Off -DUSE_MATCHCOMPILER=Off -DEXTERNALS_AS_SYSTEM=On -DUSE_LIBCXX=${{ matrix.use_libcxx }}
240240
env:
241-
CC: clang-21
242-
CXX: clang++-21
241+
CC: clang-22
242+
CXX: clang++-22
243243

244244
- name: Prepare CMake dependencies
245245
run: |
@@ -256,7 +256,7 @@ jobs:
256256
- name: clang-include-cleaner
257257
run: |
258258
# TODO: run multi-threaded
259-
find $PWD/cli $PWD/lib $PWD/test $PWD/gui -maxdepth 1 -name "*.cpp" | xargs -t -n 1 clang-include-cleaner-21 --print=changes --extra-arg=-w --extra-arg=-stdlib=${{ matrix.stdlib }} -p cmake.output > clang-include-cleaner.log 2>&1
259+
find $PWD/cli $PWD/lib $PWD/test $PWD/gui -maxdepth 1 -name "*.cpp" | xargs -t -n 1 clang-include-cleaner-22 --print=changes --extra-arg=-w --extra-arg=-stdlib=${{ matrix.stdlib }} -p cmake.output > clang-include-cleaner.log 2>&1
260260
261261
- uses: actions/upload-artifact@v4
262262
if: success() || failure()

.github/workflows/tsan.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14
5454
wget https://apt.llvm.org/llvm.sh
5555
chmod +x llvm.sh
56-
sudo ./llvm.sh 21
56+
sudo ./llvm.sh 22
5757
5858
- name: Install Qt ${{ env.QT_VERSION }}
5959
uses: jurplel/install-qt-action@v4
@@ -75,8 +75,8 @@ jobs:
7575
run: |
7676
cmake -S . -B cmake.output -Werror=dev -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_RULES=On -DBUILD_TESTING=On -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_TRIAGE=On -DUSE_MATCHCOMPILER=Verify -DANALYZE_THREAD=On -DENABLE_CHECK_INTERNAL=On -DUSE_BOOST=On -DCPPCHK_GLIBCXX_DEBUG=Off -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=Off -DDISABLE_DMAKE=On -DFILESDIR= -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
7777
env:
78-
CC: clang-21
79-
CXX: clang++-21
78+
CC: clang-22
79+
CXX: clang++-22
8080

8181
- name: Build cppcheck
8282
run: |

.github/workflows/ubsan.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
sudo apt-get purge --auto-remove llvm python3-lldb-14 llvm-14
5454
wget https://apt.llvm.org/llvm.sh
5555
chmod +x llvm.sh
56-
sudo ./llvm.sh 21
56+
sudo ./llvm.sh 22
5757
5858
- name: Install Qt ${{ env.QT_VERSION }}
5959
uses: jurplel/install-qt-action@v4
@@ -75,8 +75,8 @@ jobs:
7575
run: |
7676
cmake -S . -B cmake.output -Werror=dev -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHAVE_RULES=On -DBUILD_TESTING=On -DBUILD_GUI=On -DWITH_QCHART=On -DBUILD_TRIAGE=On -DUSE_MATCHCOMPILER=Verify -DANALYZE_UNDEFINED=On -DENABLE_CHECK_INTERNAL=On -DUSE_BOOST=On -DCPPCHK_GLIBCXX_DEBUG=Off -DCMAKE_DISABLE_PRECOMPILE_HEADERS=On -DCMAKE_GLOBAL_AUTOGEN_TARGET=On -DDISABLE_DMAKE=On -DFILESDIR= -DCMAKE_COMPILE_WARNING_AS_ERROR=On -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
7777
env:
78-
CC: clang-21
79-
CXX: clang++-21
78+
CC: clang-22
79+
CXX: clang++-22
8080

8181
- name: Build cppcheck
8282
run: |

clang-tidy.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ Does not improve the readability.
133133
`misc-unconventional-assign-operator`<br/>
134134
`bugprone-throwing-static-initialization`<br/>
135135
`bugprone-command-processor`<br/>
136+
`misc-multiple-inheritance`<br/>
136137

137138
To be evaluated (need to remove exclusion).
138139

@@ -163,6 +164,18 @@ We are not interested in this.
163164

164165
Reports false positives - see https://github.com/llvm/llvm-project/issues/164125.
165166

167+
`readability-inconsistent-ifelse-braces`<br/>
168+
169+
The suggestions are too intrusive.
170+
171+
`modernize-avoid-c-style-cast`<br/>
172+
173+
Currently flags functional casts - see https://github.com/llvm/llvm-project/issues/186784.
174+
175+
`misc-use-internal-linkage.AnalyzeTypes`<br/>
176+
177+
Adding anonymous namespaces requires identation which is too instrusive right now. Would require changes to our fomatting configuration.
178+
166179
### Disabled for performance reasons
167180

168181
`portability-std-allocator-const`<br/>

cmake/clang_tidy.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ if(RUN_CLANG_TIDY_NAMES)
2525
endif()
2626
message(STATUS "NPROC=${NPROC}")
2727

28+
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 22)
29+
set(CLANG_TIDY_CONFIG "-enable-check-profile")
30+
else()
31+
set(CLANG_TIDY_CONFIG "")
32+
endif()
33+
2834
# most of these are disabled because they are too noisy in our code
2935
# clang-analyzer-core.CallAndMessage
3036
# clang-analyzer-core.NonNullParamChecker

cmake/compileroptions.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,12 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
170170
add_compile_options(-Wno-weak-vtables)
171171
add_compile_options(-Wno-multichar)
172172

173+
# FIXME: only reported when running clang-tidy
174+
# /home/runner/work/cppcheck/cppcheck/tools/triage/mainwindow.cpp:19:10: error: multiple candidates for header 'mainwindow.h' found; directory '/home/runner/work/cppcheck/cppcheck/tools/triage' chosen, ignoring others including '/home/runner/work/cppcheck/cppcheck/gui' [clang-diagnostic-shadow-header]
175+
# 19 | #include "mainwindow.h"
176+
# | ^
177+
add_compile_options_safe(-Wno-shadow-header)
178+
173179
if(ENABLE_COVERAGE OR ENABLE_COVERAGE_XML)
174180
message(FATAL_ERROR "Do not use clang to generate code coverage. Use GCC instead.")
175181
endif()

lib/vf_common.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ namespace ValueFlow
101101
return value;
102102

103103
const MathLib::biguint unsignedMaxValue = std::numeric_limits<MathLib::biguint>::max() >> ((sizeof(unsignedMaxValue) - value_size) * 8);
104-
const MathLib::biguint signBit = 1ULL << (value_size * 8 - 1);
104+
const MathLib::biguint signBit = 1ULL << ((value_size * 8) - 1);
105105
value &= unsignedMaxValue;
106106
if (dst_sign == ValueType::Sign::SIGNED && (value & signBit))
107107
value |= ~unsignedMaxValue;

0 commit comments

Comments
 (0)