1+ # TheSuperHackers @build bobtista 17/11/2025 Add clang-tidy configuration for code quality analysis
2+ ---
3+ # Clang-tidy configuration for GeneralsGameCode project
4+ # This configuration is tailored for a legacy C++98/C++20 hybrid codebase
5+ # with Windows-specific code and COM interfaces
6+
7+ # Enable specific checks that are appropriate for this codebase
8+ Checks : >
9+ -*,
10+ bugprone-*,
11+ -bugprone-easily-swappable-parameters,
12+ -bugprone-implicit-widening-of-multiplication-result,
13+ -bugprone-narrowing-conversions,
14+ -bugprone-signed-char-misuse,
15+ cert-*,
16+ -cert-dcl21-cpp,
17+ -cert-dcl50-cpp,
18+ -cert-dcl58-cpp,
19+ -cert-env33-c,
20+ -cert-err58-cpp,
21+ clang-analyzer-*,
22+ -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
23+ cppcoreguidelines-*,
24+ -cppcoreguidelines-avoid-c-arrays,
25+ -cppcoreguidelines-avoid-magic-numbers,
26+ -cppcoreguidelines-avoid-non-const-global-variables,
27+ -cppcoreguidelines-init-variables,
28+ -cppcoreguidelines-macro-usage,
29+ -cppcoreguidelines-no-malloc,
30+ -cppcoreguidelines-owning-memory,
31+ -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
32+ -cppcoreguidelines-pro-bounds-constant-array-index,
33+ -cppcoreguidelines-pro-bounds-pointer-arithmetic,
34+ -cppcoreguidelines-pro-type-cstyle-cast,
35+ -cppcoreguidelines-pro-type-reinterpret-cast,
36+ -cppcoreguidelines-pro-type-union-access,
37+ -cppcoreguidelines-pro-type-vararg,
38+ -cppcoreguidelines-special-member-functions,
39+ google-*,
40+ -google-build-using-namespace,
41+ -google-explicit-constructor,
42+ -google-readability-casting,
43+ -google-readability-todo,
44+ -google-runtime-int,
45+ -google-runtime-references,
46+ hicpp-*,
47+ -hicpp-avoid-c-arrays,
48+ -hicpp-explicit-conversions,
49+ -hicpp-no-array-decay,
50+ -hicpp-signed-bitwise,
51+ -hicpp-special-member-functions,
52+ -hicpp-uppercase-literal-suffix,
53+ -hicpp-use-auto,
54+ -hicpp-vararg,
55+ misc-*,
56+ -misc-const-correctness,
57+ -misc-include-cleaner,
58+ -misc-non-private-member-variables-in-classes,
59+ -misc-use-anonymous-namespace,
60+ modernize-*,
61+ -modernize-avoid-c-arrays,
62+ -modernize-concat-nested-namespaces,
63+ -modernize-loop-convert,
64+ -modernize-pass-by-value,
65+ -modernize-raw-string-literal,
66+ -modernize-return-braced-init-list,
67+ -modernize-use-auto,
68+ -modernize-use-default-member-init,
69+ -modernize-use-nodiscard,
70+ -modernize-use-trailing-return-type,
71+ performance-*,
72+ -performance-avoid-endl,
73+ portability-*,
74+ readability-*,
75+ -readability-avoid-const-params-in-decls,
76+ -readability-braces-around-statements,
77+ -readability-convert-member-functions-to-static,
78+ -readability-function-cognitive-complexity,
79+ -readability-identifier-length,
80+ -readability-implicit-bool-conversion,
81+ -readability-isolate-declaration,
82+ -readability-magic-numbers,
83+ -readability-named-parameter,
84+ -readability-redundant-access-specifiers,
85+ -readability-uppercase-literal-suffix
86+
87+ # Treat warnings as errors for CI/CD
88+ WarningsAsErrors : false
89+
90+ # Header filter to include project headers
91+ HeaderFilterRegex : ' (Core|Generals|GeneralsMD|Dependencies)/.*\.(h|hpp)$'
92+
93+ # Check options for specific rules
94+ CheckOptions :
95+ # Naming conventions - adapted for the existing codebase style
96+ - key : readability-identifier-naming.ClassCase
97+ value : CamelCase
98+ - key : readability-identifier-naming.StructCase
99+ value : CamelCase
100+ - key : readability-identifier-naming.FunctionCase
101+ value : CamelCase
102+ - key : readability-identifier-naming.MethodCase
103+ value : CamelCase
104+ - key : readability-identifier-naming.VariableCase
105+ value : lower_case
106+ - key : readability-identifier-naming.ParameterCase
107+ value : lower_case
108+ - key : readability-identifier-naming.MemberCase
109+ value : lower_case
110+ - key : readability-identifier-naming.MemberPrefix
111+ value : m_
112+ - key : readability-identifier-naming.ConstantCase
113+ value : UPPER_CASE
114+ - key : readability-identifier-naming.EnumConstantCase
115+ value : UPPER_CASE
116+ - key : readability-identifier-naming.MacroDefinitionCase
117+ value : UPPER_CASE
118+
119+ # Performance settings
120+ - key : performance-for-range-copy.WarnOnAllAutoCopies
121+ value : true
122+ - key : performance-unnecessary-value-param.AllowedTypes
123+ value : ' AsciiString;UnicodeString;Utf8String;Utf16String'
124+
125+ # Modernize settings - be conservative for legacy code
126+ - key : modernize-use-nullptr.NullMacros
127+ value : ' NULL'
128+ - key : modernize-replace-auto-ptr.IncludeStyle
129+ value : llvm
130+
131+ # Readability settings
132+ - key : readability-function-size.LineThreshold
133+ value : 150
134+ - key : readability-function-size.StatementThreshold
135+ value : 100
136+ - key : readability-function-size.BranchThreshold
137+ value : 25
138+ - key : readability-function-size.ParameterThreshold
139+ value : 8
140+ - key : readability-function-size.NestingThreshold
141+ value : 6
142+
143+ # Bugprone settings
144+ - key : bugprone-argument-comment.StrictMode
145+ value : false
146+ - key : bugprone-suspicious-string-compare.WarnOnImplicitComparison
147+ value : true
148+ - key : bugprone-suspicious-string-compare.WarnOnLogicalNotComparison
149+ value : true
150+
151+ # Google style settings
152+ - key : google-readability-braces-around-statements.ShortStatementLines
153+ value : 2
154+ - key : google-readability-function-size.StatementThreshold
155+ value : 100
156+
157+ # CERT settings
158+ - key : cert-dcl16-c.NewSuffixes
159+ value : ' L;LL;LU;LLU'
160+ - key : cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField
161+ value : false
162+
163+ # Use .clang-format for formatting suggestions
164+ FormatStyle : file
165+
166+ # Exclude certain directories and files
167+ # Note: This is handled by HeaderFilterRegex above, but can be extended
0 commit comments