Clazy 검사를 사용하여 C++ 애플리케이션을 Qt 6로 포팅하기
애플리케이션을 Qt 5에서 Qt 6으로 포팅하는 데 도움이 되는 몇 가지 검사 및 수정 사항을 Clazy 프레임워크 내에 구현했습니다. 개발자들의 말을 빌리자면 "Clazy는 컴파일러 플러그인으로, clang이 Qt 시맨틱을 이해할 수 있게 해줍니다." Clazy(https://invent.kde.org/sdk/clazy)를 다운로드하여 Qt 6로 더 원활하게 포팅하는 방법을 읽어보세요.
컴파일 중에 플러그인으로 실행하거나 clazy-standalone
를 사용하여 JSON 컴파일 데이터베이스를 통해 Clazy 검사를 실행할 수 있습니다. 수정 사항은 나중에 clang-apply-replacements
을 사용하여 적용됩니다.
Qt 6 포팅 전용 클래지 검사
다음 검사는 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"
수정 사항을 활성화합니다:
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>
이렇게 하면 소스 파일이 수정되므로 코드를 백업하는 것이 좋습니다.
수정 사항 간에 일부 충돌이 있는 경우 알림이 표시되며 파일은 변경되지 않습니다.
모든 포팅을 자동 수정으로 수행할 수 있는 것은 아닙니다. 수동으로 변경해야 하는 코드에 대해서는 컴파일 중 경고를 주의 깊게 살펴보세요.
Clazy 검사 내에서 적용하는 방법 Qt Creator
Qt Creator 내에서 Tools > Options > Analyzer (또는 Qt Creator > Preferences > Analyzer ).
직접 구성을 만들고 Qt Creator 버전 4.14.1 이상의 레벨 2 및 수동 레벨 섹션에서 찾을 수 있는 포팅 전용 Clazy 검사를 선택해야 합니다. qt6 필터를 사용하여 대부분의 검사를 찾을 수 있습니다. 위에 주어진 목록에 있는 검사만 선택하도록 주의하세요.
참고: 수정 사항을 더 쉽게 적용하고 불필요한 충돌을 피하려면 포팅 검사를 제외한 다른 모든 검사를 선택 해제하는 것이 좋습니다.
검사를 실행하려면 Analyze > Clang-Tidy and Clazy 을 선택하세요.
Clazy 검사 구성 및 실행에 대한 자세한 내용은 Qt Creator: Clang 도구 사용하기를 참조하세요.
주의 사항
Qt Creator 에서는 픽스잇 간의 충돌에 대한 경고가 제공되지 않습니다. 같은 줄에 픽스잇이 두 개 이상 있는 경우 픽스잇을 적용할 때 주의하세요.
픽스잇을 적용한 후에는 새 코드가 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.