Skip to content

Commit 2e595b6

Browse files
authored
chore: Enable clang-tidy checks without issues (#6414)
This change enables all clang-tidy checks that are already passing. It also modifies the clang-tidy CI job, so it runs against all files if .clang-tidy changed.
1 parent 3a8a18c commit 2e595b6

File tree

4 files changed

+192
-152
lines changed

4 files changed

+192
-152
lines changed

.clang-tidy

Lines changed: 156 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,189 +1,198 @@
11
---
22
Checks: "-*,
3-
bugprone-argument-comment
3+
bugprone-argument-comment,
4+
bugprone-assert-side-effect,
5+
bugprone-bad-signal-to-kill-thread,
6+
bugprone-bool-pointer-implicit-conversion,
7+
bugprone-casting-through-void,
8+
bugprone-chained-comparison,
9+
bugprone-compare-pointer-to-member-virtual-function,
10+
bugprone-copy-constructor-init,
11+
bugprone-dangling-handle,
12+
bugprone-dynamic-static-initializers,
13+
bugprone-fold-init-type,
14+
bugprone-forward-declaration-namespace,
15+
bugprone-inaccurate-erase,
16+
bugprone-incorrect-enable-if,
17+
bugprone-incorrect-roundings,
18+
bugprone-infinite-loop,
19+
bugprone-integer-division,
20+
bugprone-lambda-function-name,
21+
bugprone-macro-parentheses,
22+
bugprone-macro-repeated-side-effects,
23+
bugprone-misplaced-operator-in-strlen-in-alloc,
24+
bugprone-misplaced-pointer-arithmetic-in-alloc,
25+
bugprone-misplaced-widening-cast,
26+
bugprone-multi-level-implicit-pointer-conversion,
27+
bugprone-multiple-new-in-one-expression,
28+
bugprone-multiple-statement-macro,
29+
bugprone-no-escape,
30+
bugprone-non-zero-enum-to-bool-conversion,
31+
bugprone-parent-virtual-call,
32+
bugprone-posix-return,
33+
bugprone-redundant-branch-condition,
34+
bugprone-shared-ptr-array-mismatch,
35+
bugprone-signal-handler,
36+
bugprone-signed-char-misuse,
37+
bugprone-sizeof-container,
38+
bugprone-spuriously-wake-up-functions,
39+
bugprone-standalone-empty,
40+
bugprone-string-constructor,
41+
bugprone-string-integer-assignment,
42+
bugprone-string-literal-with-embedded-nul,
43+
bugprone-stringview-nullptr,
44+
bugprone-suspicious-enum-usage,
45+
bugprone-suspicious-include,
46+
bugprone-suspicious-memory-comparison,
47+
bugprone-suspicious-memset-usage,
48+
bugprone-suspicious-realloc-usage,
49+
bugprone-suspicious-semicolon,
50+
bugprone-suspicious-string-compare,
51+
bugprone-swapped-arguments,
52+
bugprone-terminating-continue,
53+
bugprone-throw-keyword-missing,
54+
bugprone-undefined-memory-manipulation,
55+
bugprone-undelegated-constructor,
56+
bugprone-unhandled-exception-at-new,
57+
bugprone-unique-ptr-array-mismatch,
58+
bugprone-unsafe-functions,
59+
bugprone-virtual-near-miss,
60+
cppcoreguidelines-no-suspend-with-lock,
61+
cppcoreguidelines-virtual-class-destructor,
62+
hicpp-ignored-remove-result,
63+
misc-definitions-in-headers,
64+
misc-header-include-cycle,
65+
misc-misplaced-const,
66+
misc-static-assert,
67+
misc-throw-by-value-catch-by-reference,
68+
misc-unused-alias-decls,
69+
misc-unused-using-decls,
70+
readability-duplicate-include,
71+
readability-enum-initial-value,
72+
readability-misleading-indentation,
73+
readability-non-const-parameter,
74+
readability-redundant-declaration,
75+
readability-reference-to-constructed-temporary,
76+
modernize-deprecated-headers,
77+
modernize-make-shared,
78+
modernize-make-unique,
79+
performance-implicit-conversion-in-loop,
80+
performance-move-constructor-init,
81+
performance-trivially-destructible
482
"
5-
# bugprone-assert-side-effect,
6-
# bugprone-bad-signal-to-kill-thread,
7-
# bugprone-bool-pointer-implicit-conversion,
8-
# bugprone-casting-through-void,
9-
# bugprone-chained-comparison,
10-
# bugprone-compare-pointer-to-member-virtual-function,
11-
# bugprone-copy-constructor-init,
12-
# bugprone-crtp-constructor-accessibility,
13-
# bugprone-dangling-handle,
14-
# bugprone-dynamic-static-initializers,
83+
# ---
84+
# checks that have some issues that need to be resolved:
85+
#
1586
# bugprone-empty-catch,
16-
# bugprone-fold-init-type,
17-
# bugprone-forward-declaration-namespace,
18-
# bugprone-inaccurate-erase,
87+
# bugprone-crtp-constructor-accessibility,
1988
# bugprone-inc-dec-in-conditions,
20-
# bugprone-incorrect-enable-if,
21-
# bugprone-incorrect-roundings,
22-
# bugprone-infinite-loop,
23-
# bugprone-integer-division,
24-
# bugprone-lambda-function-name,
25-
# bugprone-macro-parentheses,
26-
# bugprone-macro-repeated-side-effects,
27-
# bugprone-misplaced-operator-in-strlen-in-alloc,
28-
# bugprone-misplaced-pointer-arithmetic-in-alloc,
29-
# bugprone-misplaced-widening-cast,
30-
# bugprone-move-forwarding-reference,
31-
# bugprone-multi-level-implicit-pointer-conversion,
32-
# bugprone-multiple-new-in-one-expression,
33-
# bugprone-multiple-statement-macro,
34-
# bugprone-no-escape,
35-
# bugprone-non-zero-enum-to-bool-conversion,
36-
# bugprone-optional-value-conversion,
37-
# bugprone-parent-virtual-call,
38-
# bugprone-pointer-arithmetic-on-polymorphic-object,
39-
# bugprone-posix-return,
40-
# bugprone-redundant-branch-condition,
4189
# bugprone-reserved-identifier,
90+
# bugprone-move-forwarding-reference,
91+
# bugprone-unused-local-non-trivial-variable,
4292
# bugprone-return-const-ref-from-parameter,
43-
# bugprone-shared-ptr-array-mismatch,
44-
# bugprone-signal-handler,
45-
# bugprone-signed-char-misuse,
46-
# bugprone-sizeof-container,
93+
# bugprone-switch-missing-default-case,
4794
# bugprone-sizeof-expression,
48-
# bugprone-spuriously-wake-up-functions,
49-
# bugprone-standalone-empty,
50-
# bugprone-string-constructor,
51-
# bugprone-string-integer-assignment,
52-
# bugprone-string-literal-with-embedded-nul,
53-
# bugprone-stringview-nullptr,
54-
# bugprone-suspicious-enum-usage,
55-
# bugprone-suspicious-include,
56-
# bugprone-suspicious-memory-comparison,
57-
# bugprone-suspicious-memset-usage,
58-
# bugprone-suspicious-missing-comma,
59-
# bugprone-suspicious-realloc-usage,
60-
# bugprone-suspicious-semicolon,
61-
# bugprone-suspicious-string-compare,
6295
# bugprone-suspicious-stringview-data-usage,
63-
# bugprone-swapped-arguments,
64-
# bugprone-switch-missing-default-case,
65-
# bugprone-terminating-continue,
66-
# bugprone-throw-keyword-missing,
96+
# bugprone-suspicious-missing-comma,
97+
# bugprone-pointer-arithmetic-on-polymorphic-object,
98+
# bugprone-optional-value-conversion,
6799
# bugprone-too-small-loop-variable,
68-
# bugprone-undefined-memory-manipulation,
69-
# bugprone-undelegated-constructor,
70-
# bugprone-unhandled-exception-at-new,
71-
# bugprone-unhandled-self-assignment,
72-
# bugprone-unique-ptr-array-mismatch,
73-
# bugprone-unsafe-functions,
74-
# bugprone-unused-local-non-trivial-variable,
75-
# bugprone-unused-raii,
76100
# bugprone-unused-return-value,
77101
# bugprone-use-after-move,
78-
# bugprone-virtual-near-miss,
79-
# cppcoreguidelines-init-variables,
102+
# bugprone-unhandled-self-assignment,
103+
# bugprone-unused-raii,
104+
#
80105
# cppcoreguidelines-misleading-capture-default-by-value,
81-
# cppcoreguidelines-no-suspend-with-lock,
106+
# cppcoreguidelines-init-variables,
82107
# cppcoreguidelines-pro-type-member-init,
83108
# cppcoreguidelines-pro-type-static-cast-downcast,
84-
# cppcoreguidelines-rvalue-reference-param-not-moved,
85109
# cppcoreguidelines-use-default-member-init,
86-
# cppcoreguidelines-virtual-class-destructor,
87-
# hicpp-ignored-remove-result,
110+
# cppcoreguidelines-rvalue-reference-param-not-moved,
111+
#
88112
# llvm-namespace-comment,
89113
# misc-const-correctness,
90-
# misc-definitions-in-headers,
91-
# misc-header-include-cycle,
92114
# misc-include-cleaner,
93-
# misc-misplaced-const,
94115
# misc-redundant-expression,
95-
# misc-static-assert,
96-
# misc-throw-by-value-catch-by-reference,
97-
# misc-unused-alias-decls,
98-
# misc-unused-using-decls,
99-
# modernize-concat-nested-namespaces,
100-
# modernize-deprecated-headers,
101-
# modernize-make-shared,
102-
# modernize-make-unique,
103-
# modernize-pass-by-value,
104-
# modernize-type-traits,
105-
# modernize-use-designated-initializers,
106-
# modernize-use-emplace,
107-
# modernize-use-equals-default,
108-
# modernize-use-equals-delete,
109-
# modernize-use-override,
110-
# modernize-use-ranges,
111-
# modernize-use-starts-ends-with,
112-
# modernize-use-std-numbers,
113-
# modernize-use-using,
114-
# performance-faster-string-find,
115-
# performance-for-range-copy,
116-
# performance-implicit-conversion-in-loop,
117-
# performance-inefficient-vector-operation,
118-
# performance-move-const-arg,
119-
# performance-move-constructor-init,
120-
# performance-no-automatic-move,
121-
# performance-trivially-destructible,
116+
#
122117
# readability-avoid-nested-conditional-operator,
123118
# readability-avoid-return-with-void-value,
124119
# readability-braces-around-statements,
125-
# readability-const-return-type,
126120
# readability-container-contains,
127121
# readability-container-size-empty,
128122
# readability-convert-member-functions-to-static,
129-
# readability-duplicate-include,
123+
# readability-const-return-type,
130124
# readability-else-after-return,
131-
# readability-enum-initial-value,
132125
# readability-implicit-bool-conversion,
133126
# readability-inconsistent-declaration-parameter-name,
134127
# readability-identifier-naming,
135128
# readability-make-member-function-const,
136129
# readability-math-missing-parentheses,
137-
# readability-misleading-indentation,
138-
# readability-non-const-parameter,
139-
# readability-redundant-casting,
140-
# readability-redundant-declaration,
141130
# readability-redundant-inline-specifier,
142131
# readability-redundant-member-init,
132+
# readability-redundant-casting,
143133
# readability-redundant-string-init,
144-
# readability-reference-to-constructed-temporary,
145134
# readability-simplify-boolean-expr,
146-
# readability-static-accessed-through-instance,
147135
# readability-static-definition-in-anonymous-namespace,
148136
# readability-suspicious-call-argument,
149-
# readability-use-std-min-max
137+
# readability-use-std-min-max,
138+
# readability-static-accessed-through-instance,
139+
#
140+
# modernize-concat-nested-namespaces,
141+
# modernize-pass-by-value,
142+
# modernize-type-traits,
143+
# modernize-use-designated-initializers,
144+
# modernize-use-emplace,
145+
# modernize-use-equals-default,
146+
# modernize-use-equals-delete,
147+
# modernize-use-override,
148+
# modernize-use-ranges,
149+
# modernize-use-starts-ends-with,
150+
# modernize-use-std-numbers,
151+
# modernize-use-using,
152+
#
153+
# performance-faster-string-find,
154+
# performance-for-range-copy,
155+
# performance-inefficient-vector-operation,
156+
# performance-move-const-arg,
157+
# performance-no-automatic-move,
158+
# ---
150159
#
151-
# CheckOptions:
152-
# readability-braces-around-statements.ShortStatementLines: 2
153-
# readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
154-
# readability-identifier-naming.ClassCase: CamelCase
155-
# readability-identifier-naming.StructCase: CamelCase
156-
# readability-identifier-naming.UnionCase: CamelCase
157-
# readability-identifier-naming.EnumCase: CamelCase
158-
# readability-identifier-naming.EnumConstantCase: CamelCase
159-
# readability-identifier-naming.ScopedEnumConstantCase: CamelCase
160-
# readability-identifier-naming.GlobalConstantCase: UPPER_CASE
161-
# readability-identifier-naming.GlobalConstantPrefix: "k"
162-
# readability-identifier-naming.GlobalVariableCase: CamelCase
163-
# readability-identifier-naming.GlobalVariablePrefix: "g"
164-
# readability-identifier-naming.ConstexprFunctionCase: camelBack
165-
# readability-identifier-naming.ConstexprMethodCase: camelBack
166-
# readability-identifier-naming.ClassMethodCase: camelBack
167-
# readability-identifier-naming.ClassMemberCase: camelBack
168-
# readability-identifier-naming.ClassConstantCase: UPPER_CASE
169-
# readability-identifier-naming.ClassConstantPrefix: "k"
170-
# readability-identifier-naming.StaticConstantCase: UPPER_CASE
171-
# readability-identifier-naming.StaticConstantPrefix: "k"
172-
# readability-identifier-naming.StaticVariableCase: UPPER_CASE
173-
# readability-identifier-naming.StaticVariablePrefix: "k"
174-
# readability-identifier-naming.ConstexprVariableCase: UPPER_CASE
175-
# readability-identifier-naming.ConstexprVariablePrefix: "k"
176-
# readability-identifier-naming.LocalConstantCase: camelBack
177-
# readability-identifier-naming.LocalVariableCase: camelBack
178-
# readability-identifier-naming.TemplateParameterCase: CamelCase
179-
# readability-identifier-naming.ParameterCase: camelBack
180-
# readability-identifier-naming.FunctionCase: camelBack
181-
# readability-identifier-naming.MemberCase: camelBack
182-
# readability-identifier-naming.PrivateMemberSuffix: _
183-
# readability-identifier-naming.ProtectedMemberSuffix: _
184-
# readability-identifier-naming.PublicMemberSuffix: ""
185-
# readability-identifier-naming.FunctionIgnoredRegexp: ".*tag_invoke.*"
186-
# bugprone-unsafe-functions.ReportMoreUnsafeFunctions: true
160+
CheckOptions:
161+
# readability-braces-around-statements.ShortStatementLines: 2
162+
# readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
163+
# readability-identifier-naming.ClassCase: CamelCase
164+
# readability-identifier-naming.StructCase: CamelCase
165+
# readability-identifier-naming.UnionCase: CamelCase
166+
# readability-identifier-naming.EnumCase: CamelCase
167+
# readability-identifier-naming.EnumConstantCase: CamelCase
168+
# readability-identifier-naming.ScopedEnumConstantCase: CamelCase
169+
# readability-identifier-naming.GlobalConstantCase: UPPER_CASE
170+
# readability-identifier-naming.GlobalConstantPrefix: "k"
171+
# readability-identifier-naming.GlobalVariableCase: CamelCase
172+
# readability-identifier-naming.GlobalVariablePrefix: "g"
173+
# readability-identifier-naming.ConstexprFunctionCase: camelBack
174+
# readability-identifier-naming.ConstexprMethodCase: camelBack
175+
# readability-identifier-naming.ClassMethodCase: camelBack
176+
# readability-identifier-naming.ClassMemberCase: camelBack
177+
# readability-identifier-naming.ClassConstantCase: UPPER_CASE
178+
# readability-identifier-naming.ClassConstantPrefix: "k"
179+
# readability-identifier-naming.StaticConstantCase: UPPER_CASE
180+
# readability-identifier-naming.StaticConstantPrefix: "k"
181+
# readability-identifier-naming.StaticVariableCase: UPPER_CASE
182+
# readability-identifier-naming.StaticVariablePrefix: "k"
183+
# readability-identifier-naming.ConstexprVariableCase: UPPER_CASE
184+
# readability-identifier-naming.ConstexprVariablePrefix: "k"
185+
# readability-identifier-naming.LocalConstantCase: camelBack
186+
# readability-identifier-naming.LocalVariableCase: camelBack
187+
# readability-identifier-naming.TemplateParameterCase: CamelCase
188+
# readability-identifier-naming.ParameterCase: camelBack
189+
# readability-identifier-naming.FunctionCase: camelBack
190+
# readability-identifier-naming.MemberCase: camelBack
191+
# readability-identifier-naming.PrivateMemberSuffix: _
192+
# readability-identifier-naming.ProtectedMemberSuffix: _
193+
# readability-identifier-naming.PublicMemberSuffix: ""
194+
# readability-identifier-naming.FunctionIgnoredRegexp: ".*tag_invoke.*"
195+
bugprone-unsafe-functions.ReportMoreUnsafeFunctions: true
187196
# bugprone-unused-return-value.CheckedReturnTypes: ::std::error_code;::std::error_condition;::std::errc
188197
# misc-include-cleaner.IgnoreHeaders: '.*/(detail|impl)/.*;.*(expected|unexpected).*;.*ranges_lower_bound\.h;time.h;stdlib.h;__chrono/.*;fmt/chrono.h;boost/uuid/uuid_hash.hpp'
189198
#

.github/workflows/reusable-clang-tidy-files.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ jobs:
7878
id: run_clang_tidy
7979
continue-on-error: true
8080
env:
81-
FILES: ${{ inputs.files }}
81+
TARGETS: ${{ inputs.files != '' && inputs.files || 'src tests' }}
8282
run: |
83-
run-clang-tidy -j ${{ steps.nproc.outputs.nproc }} -p "$BUILD_DIR" $FILES 2>&1 | tee clang-tidy-output.txt
83+
run-clang-tidy -j ${{ steps.nproc.outputs.nproc }} -p "${BUILD_DIR}" ${TARGETS} 2>&1 | tee clang-tidy-output.txt
8484
8585
- name: Upload clang-tidy output
8686
if: steps.run_clang_tidy.outcome != 'success'

.github/workflows/reusable-clang-tidy.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ jobs:
2222
if: ${{ inputs.check_only_changed }}
2323
runs-on: ubuntu-latest
2424
outputs:
25-
any_changed: ${{ steps.changed_files.outputs.any_changed }}
25+
clang_tidy_config_changed: ${{ steps.changed_clang_tidy.outputs.any_changed }}
26+
any_cpp_changed: ${{ steps.changed_files.outputs.any_changed }}
2627
all_changed_files: ${{ steps.changed_files.outputs.all_changed_files }}
2728
steps:
2829
- name: Checkout repository
@@ -38,10 +39,17 @@ jobs:
3839
**/*.ipp
3940
separator: " "
4041

42+
- name: Get changed clang-tidy configuration
43+
id: changed_clang_tidy
44+
uses: tj-actions/changed-files@7dee1b0c1557f278e5c7dc244927139d78c0e22a # v47.0.4
45+
with:
46+
files: |
47+
.clang-tidy
48+
4149
run-clang-tidy:
4250
needs: [determine-files]
43-
if: ${{ always() && !cancelled() && (!inputs.check_only_changed || needs.determine-files.outputs.any_changed == 'true') }}
51+
if: ${{ always() && !cancelled() && (!inputs.check_only_changed || needs.determine-files.outputs.any_cpp_changed == 'true' || needs.determine-files.outputs.clang_tidy_config_changed == 'true') }}
4452
uses: ./.github/workflows/reusable-clang-tidy-files.yml
4553
with:
46-
files: ${{ inputs.check_only_changed && needs.determine-files.outputs.all_changed_files || '' }}
54+
files: ${{ (needs.determine-files.outputs.clang_tidy_config_changed == 'true' && '') || (inputs.check_only_changed && needs.determine-files.outputs.all_changed_files || '') }}
4755
create_issue_on_failure: ${{ inputs.create_issue_on_failure }}

0 commit comments

Comments
 (0)