Clazy
Categorias:
Versões RSS
1.17 2026-02-15
This release fixes the following bugs:
- Fix non-pod-static check emitting warning for each entry of a container
- Fix use-arrow-operator-instead-of-data emitting false positive when value is casted
- Do not whitelist QVariant for detaching-temporary. QVariant::toString will provide a QString that is not detached
- detaching-temporary properly checks conditions when more than two method calls are chained
- Fixits for detaching-temporary/detaching-member are more reliable with fixit ranges for operator calls
- When using QT_NAMESPACE, clazy properly handles Qt classes being in this specific namespace
- Fix wrong replacement method for QMap::operator[]
- Make project compile with LLVM22. qhash-namespace, fully-qualified-moc-types, old-style-connect tests are fixed
- Adjust readlock-detaching check to work properly with Qt 6.11 changes
- Move qstring-ref to manuallevel since it is not compatible with Qt6
This release adds the following feature:
- New checks: - compare-member-check: Checks whether comparison operators do not use all member variables of a class.
C++20 is now required for compilation
qt6-\* porting checks are removed
1.16 2025-09-03
Esta versão corrige os seguintes bugs:
- unused-result-check: Corrigida a falha que ocorre quando a declaração do método não pode ser resolvida
- use-chrono-in-qtimer: Corrigido o problema que causava o fechamento inesperado ao usar cabeçalhos pré-compilados
- qt6-qhash-signature: Adapta a verificação para usar uma lógica mais adequada para conversões de tipo e corrige o travamento em casos extremos
- Certifica-se de que o clang21 funcione corretamente com o clazy e produza o mesmo número de linha/letra de antes (incompatibilidades com chamadas da operadora).
- non-pod-global-static: Corrigido falso positivo com Q_IMPORT_PLUGIN no Qt-6.10
Esta versão adiciona as seguintes funcionalidades:
- O Clazy finalmente pode ser integrado ao clang-tidy - um comando para governar
- todos! Todas as verificações podem ser ativadas usando "clazy-<nome_da_verificação>". Por exemplo:
- `clazy-qstring-arg,clazy-qfileinfo-exists`, habilitando todas as verificações usando
- `clazy-*` também permite verificações manuais. Recomenda-se maior granularidade.
- O plugin pode ser carregado usando `-load=ClazyClangTidy.so`, para isso, o plugin
- deve estar no LD_LIBRARY_PATH. Caso contrário, um caminho absoluto pode ser especificado.
- isempty-vs-count agora oferece correções para todos os cenários. Além disso, casos em que
- o comprimento é comparado usando "== 0", "< 1", "> 0" agora são relatados e possuem correções.
- As verificações de portabilidade do qt6-\* agora são consideradas obsoletas e serão removidas na próxima versão do clazy
- As verificações detaching-temporary e detaching-member fornecem correções para métodos que possuem contrapartes constantes.
- NOLINT/NOLINTNEXTLINE/NOLINTBEGIN/NOLINTEND funciona agora no clazy como
- esperado. As verificações individuais de loucura podem ser desativadas ao usar um "clazy-"
- prefixo. Por exemplo "NOLINTNEXTLINE(clazy-qfileinfo-exists, clazy-qstring-arg)"
1.15 2025-06-12
Esta versão corrige os seguintes bugs:
- install-event-filter: Corrigido o erro que causava o fechamento inesperado do sistema quando não havia nenhum filho na profundidade especificada. BUG: 464372
- fully-qualified-moc-types: Corrigido o problema em que enum/classe enum não estava sendo avaliado. BUG: 423780
- Corrigido o erro que causava falha em qstring-comparison-to-implicit-char. BUG: 502458
- Corrigido o erro que ocorria quando tipos moc totalmente qualificados encontravam sinais com expressões como "std::bitset<int(8)>"
- Corrigido o problema que causava falha em qvariant-template-instantiation
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- readlock-detaching
- Atualizado o Clang/LLVM mínimo para 19
- `clazy-standalone --version` contém a versão do git (saída de `git describe`) se não for um commit com tag.
- Adicionadas as verificações de métodos ausentes para desanexar listas temporárias/de membros ou mapas
1.14 2025-04-27
É possível desativar os avisos do Clazy para a linha seguinte, por exemplo: clazy:exclude-next-line=check1,check2
Suporte para compilação com Clang 20
aumento do nível de detalhamento de algumas mensagens de aviso
verifica `function-args-by-value` e `function-args-by-ref`: adiciona o nome da função e o nome do parâmetro à mensagem de aviso
verifica `unused-non-trivial-variable` e `non-pod-global-static`: adiciona o nome da variável à mensagem de aviso
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- qbytearray-conversion-to-c-style
1.13 2024-12-28
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- used-qunused-variable
Esta versão corrige os seguintes bugs:
- verificação qstring-arg fornece uma correção
- Corrigido o comportamento de variável não trivial não utilizada para não gerar aviso quando [[maybe_unused]] for definida
- Correção do argumento qstring para a próxima versão do Qt 6.9
- Corrigido falso positivo de tipos moc totalmente qualificados para modificadores constantes de argumentos genéricos
- Silenciar aviso falso positivo de non-pod-global-static para a inicialização do módulo QML
- Correção de falso positivo em argumentos de função por valor que causava erro de compilação
- em construtores de cópia, operadores de atribuição e verificações de igualdade
- Os falsos positivos para `Q_EMIT(someSignal())` foram corrigidos
1.12 2024-06-30
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- qt-keyword-emit
- sanitize-inline-keyword
1.11 2022-01-21
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- use-arrow-operator-instead-of-data
- use-static-qregularexpression
- unexpected-flag-enumerator-value
- Removida a verificação de lista de consultas ineficiente (corrigido no Qt6)
1.10 2021-07-20
Esta versão corrige os seguintes bugs:
- Requer C++17
- Correções de bugs:
- Corrigido um falso positivo -Wclazy-lambda-in-connect
- Corrigido o problema que causava o erro em copyable-polymorphic quando o PCH estava ativado
1.9 2021-01-10
Esta versão corrige os seguintes bugs:
- Corrigido o problema de lentidão extrema introduzido na versão 1.8. Agora é até 4 vezes mais rápido.
- range-loop foi dividido em range-loop-detach e range-loop-reference
- Corrigido falsos positivos do -Wclazy-connect-non-signal
1.8 2020-11-22
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- qt6-qhash-signature
- qt6-header-fixes
- qt6-deprecated-api-fixes
- use-chrono-in-qtimer
- correção para missing-qobject-macro
1.7 2020-06-29
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- sinal sobrecarregado
- assinaturas JNI inválidas
- qstring-comparison-to-implicit-char
- qt6-qlatin1string-to-u
- heap-allocated-small-trivial-type: menos falsos positivos
Esta versão corrige os seguintes bugs:
- connect-non-signal: Corrigido o caso em que o arquivo pmf não era encontrado
- qstring-arg emite um aviso ao usar QLatin1String::arg(int), pois ele realiza um cast para QChar
Compilar o próprio clazy é 30% mais rápido
1.6 2019-10-12
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- heap-allocated-small-trivial-type
- signal-with-return-value
- qproperty-type-mismatch, contribuição de Jean-Michaël Celerier
Nível 3 removido. Todas as verificações de nível 3 foram movidas para o nível manual. Não faz sentido habilitá-las todas.
Cada uma delas deve ser cuidadosamente analisada.
A versão mínima do LLVM foi aumentada para 5.0
O clazy não reescreve mais arquivos diretamente, para evitar condições de corrida quando invocações paralelas alteram o mesmo cabeçalho.
O clazy agora exporta um arquivo YAML com as substituições, que devem ser aplicadas com o clang-apply-replacements.
Da mesma forma que outras ferramentas do clang fazem.
A forma de habilitar a reescrita de código agora é: -Xclang -plugin-arg-clazy -Xclang export-fixes para clang
ou -export-fixes=somefile.yaml para clazy-standalone
Todos os outros argumentos do fixit e variáveis de ambiente do fixit foram removidos
Agradecemos a Christian Gagneraud por sua contribuição com o exportador fixit yaml!
Esta versão corrige os seguintes bugs:
- Corrigidas regressões com o LLVM 9.0
- A infraestrutura do fixit foi reformulada
1.5 2019-01-31
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- ifndef-define-typo
- lowercase-qml-type-name
- qrequiredresult-candidates
- Novos Fixits:
- range-loop agora suporta a adição de referências ausentes ou const-ref
- range-loop agora suporta adicionar qAsConst()
- function-args-by-ref agora adiciona referências ausentes ou const-ref (experimental)
- Introduzida a variável de ambiente CLAZY_FIXIT_SUFFIX
Removemos o suporte para a obscura opção -DCLAZY_BUILD_UTILS_LIB para simplificar o arquivo CMakeLists.txt
Renomeado o plugin clazy de ClangLazy.so para ClazyPlugin.so
full-qualified-moc-types agora também emite avisos para valores de retorno de slots/invocáveis. Eles precisam ser totalmente qualificados para o QML.
Esta versão corrige o seguinte erro:
- Corrigido um erro (clang assert) em raw-environment-function
1.4 2018-09-23
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- connect-by-name
- skipped-base-method
- qstring-varargs
- fully-qualified-moc-types
- qt-keywords, com fixit incluído
- qhash-with-char-pointer-key
- wrong-qevent-cast
- static-pmf
- raw-environment-function
- empty-qstringliteral
- auto-unexpected-qstringbuilder agora também emite avisos para lambdas que retornam QStringBuilder
otimizações de performance
Adicionada a opção -header-filter=<regex> ao clazy-standalone. Somente os cabeçalhos que correspondem à expressão regular
possuirão avisos, além do arquivo .cpp da unidade de tradução, que nunca é filtrado.
Adicionada a opção -ignore-dirs=<regex> ao clazy-standalone, e sua variável de ambiente equivalente CLAZY_IGNORE_DIRS.
Adicionada a variável de ambiente CLAZY_HEADER_FILTER, que adiciona a funcionalidade acima tanto ao clazy quanto ao clazy-standalone
unused-non-trivial-variable obtém a opção unused-non-trivial-variable-no-whitelist
unused-non-trivial-variable obtém suporte para user-blacklist e user-whitelist
container-inside-loop agora é uma verificação manual, em vez de nível 2
HiddenLevel foi renomeada para ManualLevel
connect-3arg-lambda agora avisa ao passar um lambda para QTimer::singleShot() ou QMenu::addAction()
sem um objeto de contexto
old-style-connect agora avisa para QMenu::addAction() e QMessageBox::open() também
1.3 2017-11-26
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- 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 agora é de nível 2, em vez de nível 1. Isso ocorre porque é possível omitir Q_OBJECT intencionalmente.
Adicionada a opção -only-qt, que fará com que o clazy interrompa o processo em arquivos que não utilizam Qt. Para isso, a definição de um arquivo Qt ocorre sempre que -DQT_CORE_LIB é passado, o que geralmente acontece na maioria dos sistemas de compilação.
Adicionada a opção -qt-developer; ao compilar o Qt com o clazy, ele respeitará as diretrizes específicas do Qt, que ainda não são muitas, mas a lista aumentará.
1.2 2017-07-08
Esta versão adiciona as seguintes funcionalidades:
- Novas verificações:
- install-event-filter
- qcolor-from-literal
- strict-iterators
- connect-not-normalized
Esta versão corrige os seguintes bugs:
- Executável do clazy-standalone. Permite executar o clazy em um banco de dados compilado em JSON em vez de como um plugin. O clang-tidy não suporta o carregamento de módulos externos (https://github.com/llvm/llvm-project/issues/32086), então esta é uma boa solução alternativa.
- Modo qt-compat. Permite desativar as verificações específicas do Qt5 passando -Xclang -plugin-arg-clazy -Xclang qt4-compat
- returning-data-from-temporary agora verifica se há conversão de QByteArrays temporários para char* ao serem retornados
- returning-data-from-temporary agora também verifica a atribuição, e não apenas as instruções de retorno
- unused-non-trivial-variable agora emite um aviso para variáveis não utilizadas dos tipos QList, QVector e muitos outros
- Agora há suporte para verificações baseadas em ASTMatchers
- O clang 3.7 foi descontinuado devido a incompatibilidades com o código-fonte do ASTMatcher.
- Suporte do uso do clazy v1.1 para clang >= 3.6
- clazylib.so não é mais compilado por padrão; apenas o plugin (ClangLazy.so) é compilado. Passe o parâmetro -DCLAZY_BUILD_UTILS_LIB=ON para habilitar a biblioteca de utilitários caso esteja desenvolvendo ferramentas que utilizem as funções de conveniência do clazy, o que provavelmente não é o caso.
- A opção CLAZY_INSTALL_NO_HEADERS foi removida. Ou você instala a biblioteca de utilitários e os cabeçalhos, ou nada. Por padrão, nada é instalado, exceto o plugin e as páginas de manual.
1.1 2017-02-20
Esta versão adiciona as seguintes funcionalidades:
- Suporte a macOS e Windows
- Novas verificações:
- 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
- Correções para:
- clang 4.0
- Qt 5.9
- Notas:
- Melhoria de desempenho de 60%
- Corrigido um grande número de falsos positivos