Clazy チェックを使って C++ アプリケーションを Qt 6 に移植する
アプリケーションを Qt 5 から Qt 6 に移植するために、Clazy フレームワークにいくつかのチェックとフィキシットを実装しました。彼らの言葉を借りると「Clazy は clang が Qt のセマンティクスを理解できるようにするコンパイラプラグインです。Clazy(https://invent.kde.org/sdk/clazy) を入手して、Qt 6 への移植をよりスムーズにしましょう。
Clazy のチェックは、プラグインとしてコンパイル中に実行するか、clazy-standalone
を使って JSON コンパイルデータベース上で実行することができます。修正はclang-apply-replacements
を使って後で適用されます。
Qt 6 への移植に特化した Clazy チェック
以下のチェックは、Qt 5 から Qt 6 への移植を容易にするためのものです。
qt6-deprecated-api-fixes
qt6-header-fixes
qt6-qhash-signature
qt6-fwd-fixes
missing-qobject-macro
チェックは Qt 5 に対して実行する必要があります。修正されたコードは Qt 6 に対してのみコンパイルされます。このため、上記のチェックは一度に実行する必要があります。Clazy では、修正を適用する際の衝突を避けるために、一度に一つのテストを実行することを推奨していますが、プラグインとしてこれらのチェックを実行する場合には、このオプションはありません。
Clazyのチェックを適用する方法
Clazyで実行するためのプロジェクトの設定方法、チェックの選択と適用方法については、https://invent.kde.org/sdk/clazy#setting-up-your-project-to-build-with-clazy。
チェックをプラグインとしてではなく、JSONコンパイルデータベース上で実行したい場合は、clazy-standalone
を使用する必要があります。https://invent.kde.org/sdk/clazy#clazy-standalone-and-json-database-support。
簡単に言うと、最新のClazyのバージョンがインストールされていると仮定して、プラグインとしてチェックを実行するために必要なことを以下に説明します。
Clazyで実行するようにプロジェクトをセットアップします。
qmakeを使う場合
お使いのOSに合わせて、qmakeコマンドに以下の行を追加します:
-spec linux-clang QMAKE_CXX="clazy" -spec macx-clang QMAKE_CXX="clazy"
MSVCのWindowsの場合は、QMAKE_CXX="clazy-cl.bat"
を追加します。
qmakeを実行します。
CMakeを使う場合
cmake コマンドに-DCMAKE_CXX_COMPILER=clazy
を追加します。
cmake を実行する。
チェックを選択する:
export CLAZY_CHECKS="qt6-deprecated-api-fixes,qt6-header-fixes, qt6-qhash-signature,qt6-qlatin1stringchar-to-u,qt6-fwd-fixes,missing-qobject-macro"
fixitsを有効にする:
export CLAZY_EXPORT_FIXES=ON
Clazyが無視するディレクトリを設定する:
export CLAZY_IGNORE_DIRS=.*lib_dir.*
これにより、ライブラリのファイルに対してClazyのチェックが実行されなくなります。これは、ライブラリのパスが-isystem
と-framework
ではなく-I
と-F
に含まれている場合に必要です。また、チェックのトリガーとなるヘッダーがインクルードされたライブラリのファイルに含まれている場合、qt-header-fixes
のチェックによる警告を避けるためにも必要です。
コードをコンパイルしてください。
コンパイル時に、ソース・ファイルの隣に.yaml
ファイルが作成されます。
修正を適用するには、次のコマンドを実行します:
clang-apply-replacements <path_to_yaml_files>
これによりソース・ファイルが変更されるので、コードのバックアップを取ることを検討してください。
もしfixitsの間に矛盾があれば、あなたに通知され、ファイルは変更されません。
すべての移植が自動修正でできるわけではありません。手動で変更しなければならないコードについては、コンパイル中の警告を注意深く見てください。
Clazyチェックの適用方法Qt Creator
Qt Creator Tools > > (またはOptions Analyzer Qt CreatormacOS では >Preferences >Analyzer ).
独自の設定を作成し、Qt Creator バージョン 4.14.1 以降の Level 2 および Manual Level セクションにある移植専用の Clazy チェックを選択する必要があります。qt6フィルターを使って、ほとんどのチェックを見つけることができます。上記のリストにあるチェックだけを選択するように注意してください。
注意: 修正を適用しやすくし、不要な競合を避けるため、移植チェック以外のチェックはすべて選択解除することをお勧めします。
チェックを実行するには、Analyze >Clang-Tidy and Clazy を選択します。
Clazyチェックの設定と実行の詳細については、Qt Creator:Using Clang Toolsを参照してください。
注意事項
Qt Creator 内では、fixit 間のコンフリクトは警告されません。同じ行に複数のfixitがある場合は、fixitを適用するときに注意してください。
なぜなら、新しいコードは Qt 6 に対してのみコンパイルされるからです。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.