aboutsummaryrefslogtreecommitdiffstats
path: root/Changelog
blob: c06fc94089e1f971fd22be6783fb498819ff8a3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# Changelog

* v1.11 (January 21st 2022)
    - New Checks:
      - use-arrow-operator-instead-of-data
      - use-static-qregularexpression
      - unexpected-flag-enumerator-value
      - Removed inefficient-qlist check (Fixed in Qt6)

* v1.10 (July 20th 2021)
   - Requires C++17
   - Fixed a -Wclazy-lambda-in-connect false-positive
   - Fixed crash in copyable-polymorphic when PCH was enabled

* v1.9 (Jan 10th, 2021)
    - Fixed clazy slowdown introduced in 1.8. I can be up to 4x faster now.
    - range-loop was split in range-loop-detach and range-loop-reference
    - Fixed -Wclazy-connect-non-signal false positives


* v1.8 (November 22nd, 2020)
    - New Checks:
      - qt6-qhash-signature
      - qt6-header-fixes
      - qt6-deprecated-api-fixes
      - use-chrono-in-qtimer
      - fixit for missing-qobject-macro


* v1.7 (June 29th, 2020)
  - New Checks:
    - overloaded signal
    - invalid JNI signatures
    - qstring-comparison-to-implicit-char
    - qt6-qlatin1string-to-u
  - connect-non-signal: Fix case where it didn't find the pmf
  - qstring-arg warns when using QLatin1String::arg(int), as it casts to QChar
  - Building clazy itself is 30% faster
  - heap-allocated-small-trivial-type: less false-positives


* v1.6 (October 12, 2019)
  - New Checks:
    - heap-allocated-small-trivial-type
    - signal-with-return-value
    - qproperty-type-mismatch, contributed by Jean-Michaƫl Celerier
  - Removed level3. Moved all level3 checks to manual level. Doesn't make sense to enable all of them.
  Each one must be carefully considered.
  - Fixed regressions with LLVM 9.0
  - Minimum LLVM was bumped to 5.0
  - Fixit infrastructure was overhauled
  - Clazy no longer rewrites files directly, to avoid races when parallel invocations change the same header.
  - Clazy now exports a yaml file with the replacements, to be applied with clang-apply-replacements. 
  The same way other clang tooling does it.
  - The way to enable code rewrite is now: -Xclang -plugin-arg-clazy -Xclang export-fixes for clang
  or -export-fixes=somefile.yaml for clazy-standalone
  - All other fixit arguments and fixit env variables were removed
  - Thanks to Christian Gagneraud for contributing the fixit yaml exporter!


* v1.5 (January 31st, 2019)
  - New Checks:
      - ifndef-define-typo
      - lowercase-qml-type-name
      - qrequiredresult-candidates
  - New Fixits:
      - range-loop now supports adding missing refs or const-ref
      - range-loop now supports adding qAsConst()
      - function-args-by-ref now adding missing refs or const-ref (experimental)
      - Introduced CLAZY_FIXIT_SUFFIX env variable
  - Removed support for the obscure -DCLAZY_BUILD_UTILS_LIB to simplify the CMakeLists.txt
  - Renamed the clazy plugin from ClangLazy.so to ClazyPlugin.so
  - fully-qualified-moc-types now warns for slot/invokable return values too.
  They need to be fully qualified for QML.
  - Fixed a crash (clang assert) in raw-environment-function


* v1.4 (September 23rd, 2018)
  - New Checks:
      - connect-by-name
      - skipped-base-method
      - qstring-varargs
      - fully-qualified-moc-types
      - qt-keywords, with fixit included
      - qhash-with-char-pointer-key
      - wrong-qevent-cast
      - static-pmf
      - raw-environment-function
      - empty-qstringliteral
  - auto-unexpected-qstringbuilder now also warns for lambdas returning QStringBuilder
  - performance optimizations
  - Added -header-filter=<regex> option to clazy-standalone. Only headers matching the regexp will
  have warnings, besides the .cpp file from the translation unit, which is never filtered out.
  - Added -ignore-dirs=<regex> option to clazy-standalone, and its CLAZY_IGNORE_DIRS env variable equivalent.
  - Added CLAZY_HEADER_FILTER env variable which adds above functionality to both clazy and clazy-standalone
  - unused-non-trivial-variable got unused-non-trivial-variable-no-whitelist option
  - unused-non-trivial-variable got user-blacklist and user-whitelist support
  - container-inside-loop is now a manual check instead of level2
  - HiddenLevel was renamed to ManualLevel
  - connect-3arg-lambda now warns when passing a lambda to QTimer::singleShot() or QMenu::addAction()
  without a context object
  - old-style-connect warns for QMenu::addAction() and QMessageBox::open() too now


* v1.3 (November 26th, 2017)
  - New checks:
      - thread-with-slots
      - connect-3arg-lambda
      - qproperty-without-notify
      - virtual-signal
      - overridden-signal
      - qhash-namespace
      - const-signal-or-slot
      - lambda-unique-connection
  - missing-qobject-macro is now a level2 check, instead of level1. Because, people can omit Q_OBJECT intentionally.
  - Added -only-qt option, which will make clazy bailout early on non-Qt files.
  For this purpose, the definition of a Qt file is whenever -DQT_CORE_LIB is passed,
  which is usually the case in most build systems.
  - Added -qt-developer option, when building Qt with clazy it will honour specific guidelines for Qt,
  which are not many right now but the list will grow.


* v1.2 (July 8th, 2017)
  - clazy-standalone executable. Allows to run clazy against a JSON compilation database
    instead of as a plugin. clang-tidy doesn't support loading external modules (https://bugs.llvm.org/show_bug.cgi?id=32739)
    so this is a good workaround.
  - qt-compat mode. Allows to disable Qt5 specific checks by passing -Xclang -plugin-arg-clazy -Xclang qt4-compat
  - New checks:
      - install-event-filter
      - qcolor-from-literal
      - strict-iterators
      - connect-not-normalized
  - returning-data-from-temporary now checks for temporary QByteArrays casting to char* when returned
  - returning-data-from-temporary now checks for assignment too, not only return statements
  - unused-non-trivial-variable now warns for unused QList, QVector and many more types
  - ASTMatchers based checks are now supported
  - clang 3.7 was dropped due to ASTMatchers source incompatibilities.
  - Use clazy v1.1 for clang >= 3.6 support
  - clazylib.so no longer gets built by default, only the plugin (ClangLazy.so)
    gets built. Pass -DCLAZY_BUILD_UTILS_LIB=ON to enable the utils library if
    you're developing tools using clazy's convenience functions, which you're
    probably not.
  - CLAZY_INSTALL_NO_HEADERS option was removed. Either install the utils library
    and headers or nothing at all. By default nothing is installed, except
    the plugin and man pages.


* v1.1 (February 20th, 2017)

  - macOS and Windows support
  - New checks:
      - child-event-qobject-cast
      - ctor-missing-parent-argument
      - returning-data-from-temporary
      - qt-macros
      - base-class-event
      - connect-non-signal
      - incorrect-emit
      - tr-non-literal
  - Fixes against :
    - clang 4.0
    - Qt 5.9
  - 60% performance improvement
  - Fixed many false positives


* v1.0 (September 12th, 2016)
  - (...)


* v0.0.1 (June 10th, 2015)
  - (...)