1CLAZY(1) KDAB CLAZY(1)
2
3
4
6 clazy - a static source code analyzer for Qt5-based C++.
7
9 clazy [option] [clang++-options]
10
12 clazy scans C++/Qt source code looking for issues related to good
13 coding practice with of Qt5. In typical use, during code compilation
14 with clazy you will see any such warnings printed to the output
15 normally as you would find any compiler warnings.
16
17 clazy has the ability to "fix" the offending code in some cases. See
18 the CLAZY_FIXIT environment variable description below for more
19 information.
20
22 --help
23 Print help message and exit.
24
25 --version
26 Print version information and exit.
27
28 --list
29 Print a list of all available checkers, arranged by level.
30
31 --explain
32 Print explanations for all checkers.
33
34 --explain <regexp>
35 Print explanations for the checkers matching the specified regular
36 expression.
37
38 Any of the options above will print the requested information and then
39 exit.
40
41 --qt4compat
42 This option runs clazy in Qt4 compatibility mode. Use this when
43 your source code can build with Qt4 and Qt5 in order to easily
44 suppress issues that cannot be fixed due to the requirement of the
45 Qt4 API.
46
47 This is a convenience option which is identical to directly
48 passing:
49 "-Xclang -plugin-arg-clazy -Xclang qt4-compat"
50
51 --qtdeveloper
52 For Qt developers only. This option is special for running clazy
53 on Qt itself. Will result in fewer false positives being reported
54 in Qt code.
55
56 This is a convenience option which is identical to directly
57 passing:
58 "-Xclang -plugin-arg-clazy -Xclang qt-developer"
59
60 All other options are passed directly to clang++ and handled from
61 there.
62
63 See the clang manual for a list of the very large set of options
64 available, but in normal operation you "compile" your code with clazy
65 just as you would with clang.
66
68 Print a list of all available checkers, arranged by check level:
69 % clazy --list
70
71 List of available clazy checkers:
72
73 Checks from level0. Very stable checks, 100% safe, no false-positives:
74 connect-non-signal
75 container-anti-pattern
76 lambda-in-connect
77 mutable-container-key
78 qdatetime-utc
79 qenums
80 qfileinfo-exists
81 ....
82
83 Compile your CMake project with clazy default checkers:
84 % cmake -DCMAKE_CXX_COMPILER=clazy <other_cmake_options>
85 then make as normal
86
87 Compile your CMake project with level2 checks only (non-Windows):
88 % export CLAZY_CHECKS="level2"
89 % cmake -DCMAKE_CXX_COMPILER=clazy <other_cmake_options>
90 then make as normal
91
92 Compile your qmake project with clazy default checkers:
93 % qmake -spec linux-clang QMAKE_CXX=clazy <other_qmake_options>
94 then make as normal
95
97 clazy supports the following list of in-code directives:
98
99 clazy:skip
100 Exempt an entire file from all checks.
101 No clazy tests will run on the file.
102
103 clazy:excludeall=<name1[,name2,...,nameN]>
104 Exempt the entire file from the specified checks.
105 The clazy checks name1, etc will not be run on this file.
106
107 clazy:exclude=<name1[,name2,...,nameN]>
108 Exclude individual lines from specific checks.
109 The clazy checks tests name1, etc. will not be run on the line where
110 this directive is found.
111
112 Don't include the 'clazy-' prefix. For example, to disable the
113 "qstring-allocations" check, you would write:
114
115 // clazy:exclude=qstring-allocations
116
117 and not
118
119 // clazy:exclude=clazy-qstring-allocations
120
121 Also note that these directives must be C++ style comments; C style
122 comments are ignored.
123
125 CLAZY_CHECKS - a comma-separated list of checkers or check-sets to run.
126 By default, all checkers from the "level0" and "level1" check-sets will
127 run.
128
129 Examples:
130
131 1. Enables the 2 checkers "unneeded-cast" and "virtual-call-ctor" only:
132 % export CLAZY_CHECKS="unneeded-cast,virtual-call-ctor"
133
134 2. Enables all checks from the "level0" check-set, except for "qenums":
135 % export CLAZY_CHECKS="level0,no-qenums"
136
137 3. Enables all checks from the "level0" check-set along with the
138 "detaching-temporary" checker:
139 % export CLAZY_CHECKS="level0,detaching-temporary"
140
141 CLAZY_FIXIT - some checkers are able to automatically re-write your
142 source code whenever it encounters code it can "fix". Enable this
143 "fixit" feature by setting this variable to the name of the checker
144 with a "fixit" capability.
145
146 Examples:
147
148 1. Fix qlatin1string allocations:
149 % export CLAZY_FIXIT="fix-qlatin1string-allocations"
150
151 2. Fix old-style (simple cases) connect statements:
152 % export CLAZY_FIXIT=fix-old-style-connect
153
154 More documentation is provided when running clazy with the
155 --explain command line option.
156
157 Also note that only 1 fixit checker can be run at a time.
158
159 CLAZY_EXTRA_OPTIONS - some checkers can adapt their behavior depending
160 on the value of this environment variable. More documentation is
161 provided when running clazy with the --explain command line option.
162
163 CLAZY_NO_WERROR - if this is variable is set, clazy will not treat
164 warnings as errors, even if the -Werror compiler option is specified.
165 This is useful if you want to use -Werror only for the regular
166 gcc/clang warnings but not for clazy warnings.
167
168 CLAZY_CHECKS_AS_ERRORS - comma-separated list of checks that will be
169 promoted to compiler errors. Note that this does not enable the checks
170 specified here.
171
172 CLAZY_IGNORE_DIRS - A regular expression for paths to exclude from
173 processing. For example:
174
175 % export CLAZY_IGNORE_DIRS=".*my_qt_folder.*"
176
178 Copyright (C) 2015-2017 Klaralvdalens Datakonsult AB, a KDAB Group
179 company, <info@kdab.com>
180
181 This library is free software; you can redistribute it and/or modify it
182 under the terms of the GNU Lesser General Public License as published
183 by the Free Software Foundation; either version 2.1 of the License, or
184 (at your option) any later version.
185
186 This library is distributed in the hope that it will be useful, but
187 WITHOUT ANY WARRANTY; without even the implied warranty of
188 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
189 Lesser General Public License for more details.
190
191 You should have received a copy of the GNU Lesser General Public
192 License along with this library. If not, see
193 <http://www.gnu.org/licenses/>.
194
196 clang(1)
197 https://www.kdab.com/use-static-analysis-improve-performance
198
200 Sergio Martins <sergio.martins@kdab.com>
201 Laurent Montel <laurent.montel@kdab.com>
202 Allen Winter <allen.winter@kdab.com>
203 Albert Astals Cid <aacid@kde.org>
204 Aurélien Gâteau <agateau@kde.org>
205 Kevin Funk <kevin.funk@kdab.com>
206 Hannah von Reth <hannah.vonreth@kdab.com>
207 Volker Krause <volker.krause@kdab.com>
208 Christian Ehrlicher <Ch.Ehrlicher@gmx.de>
209 Mathias Hasselmann <mathias.hasselmann@kdab.com>
210
211
212
2131.11.0 2023-09-06 CLAZY(1)