Skip to content

Instantly share code, notes, and snippets.

@j2doll
Last active April 24, 2021 13:05
Clazy 검사를 사용하여 Qt 5에서 Qt 6으로 포팅

Clazy 검사를 사용하여 Qt 5에서 Qt 6으로 포팅

2021 년 3 월 1 일 월요일, Lucie Gérard

Qt 5에서 Qt 6으로 이식하는 데 도움이 필요하면 더 이상 보지 마십시오. Clazy 프레임 워크 내에서 Qt 기반 프로젝트를 이식하는 데 도움이되는 몇 가지 검사 및 수정 사항을 구현했습니다. 이러한 검사는 Clazy 를 컴파일러 플러그인으로 사용하고 .json 파일 에서 clazy-standalone 을 사용하거나 Qt Creator 내에서 실행할 수 있습니다.

Clazy는 clang이 Qt 의미 체계를 이해할 수 있도록 하여 많은 C++ Qt 코드에 대한 경고 및 수정 사항을 제공하는 컴파일러 플러그인입니다. Sergio Martins가 개발한 이 제품은 KDE 산하에 개발되었습니다. 제공된 Qt Creator 바이너리 패키지를 설치하면 clazy가 이미 포함되어 있습니다!

Qt 6 포팅 전용 Clazy 검사

가능한 경우 검사는 수정 사항을 제공하지만 그렇지 않은 경우 경고 만 생성됩니다. 검사는 Qt 5에 대해 실행되어야 하며 고정 코드는 Qt 6으로 만 컴파일됩니다. 이러한 이유로 Clazy가 권장하는대로 하나씩 검사를 실행하지 않고 함께 실행해야 합니다.

다음은 Qt 6 포팅 전용 Clazy 검사 목록입니다.

qt6-deprecated-api-fixes Qt 5.15에서 더 이상 사용되지 않는 API는 Qt 6에서 제거되었습니다 . 검사는 해당 API를 찾아 내고 API에 따라 수정 여부에 관계없이 대체를 제공합니다.
qt6-header-fixes Qt 5에서 Qt 6으로 일부 헤더가 이동되었습니다. 이 검사는 오래된 경로를 Qt 6 경로로 대체합니다.
qt6-qhash-signature qHash, qHashBits, qHashRange와 qHashRangeCommutative 의 검사의 서명을 수정
qt6-fwd-fixes 이 검사는 <QtCore/qcontainerfwd.h> 가 표현하는 forward declaration에 대해 경고합니다. 포워드 선언이 제거되었습니다. 아직 포함되지 않은 경우 <QtCore/qcontainerfwd.h> 가 대신 포함됩니다.
missing-qobject-macro 이 검사는 Q_OBJECT 매크로 없는 QObject 파생 클래스를 찾습니다 .

이제 프로젝트에서 이러한 검사를 실행하는 방법을 살펴 보겠습니다.

Clazy 를 플러그인으로 사용하여 포팅 검사 실행

먼저 Clazy를 다운로드 하거나 버전이 최신인지 확인해야합니다. 버전 1.10에는 더 이상 사용되지 않는 API 수정에 대한 수정 된 검사가 포함될 예정입니다. 그 동안 마스터 브랜치를 사용하십시오

그런 다음 Clazy 로 실행되도록 프로젝트를 설정해야합니다 . qmake 를 사용하는 경우 OS에 따라 명령 줄에 다음을 추가하십시오.

-spec linux-clang QMAKE_CXX="clazy"

-spec macx-clang QMAKE_CXX="clazy"

MSVC가있는 Windows의 경우 다음을 추가하십시오.

QMAKE_CXX="clazy-cl.bat".

cmake 를 사용하는 경우 다음을 추가하십시오.

--DCMAKE_CXX_COMPILER=clazy

명령 줄에.

Qt 6 이식과 관련된 검사 만 활성화하려면 CLAZY_CHECKS다음을 사용하십시오.

export CLAZY_CHECKS="qt6-deprecated-api-fixes, qt6-header-fixes,
qt6-qhash-signature, qt6-fwd-fixes, 
missing-qobject-macro"

수정 사항을 활성화하려면 :

export CLAZY_EXPORT_FIXES=ON

또한 Clazy 가 무시할 디렉토리를 설정하십시오 .

export CLAZY_IGNORE_DIRS=.*lib_dir.*

이렇게하면 Clazy 검사가 라이브러리의 파일에서 실행 되지 않습니다 .

qmake 또는 cmake를 실행 하고 프로젝트를 컴파일하십시오. 각 소스 파일에 대해 <source_file_name> .clazy.yaml 파일이 소스 파일 위치에 생성됩니다. 여기에는 소스 파일과 여기에 포함 된 헤더 파일에 대한 검사 결과 요약과 수정 사항 지침이 포함되어 있습니다.

수정 사항을 적용하려면 프로젝트 디렉터리 경로에서 clang-apply-replacements 를 실행 합니다. 이렇게하면 소스 및 헤더 파일이 수정되므로 코드 백업을 고려하십시오. 수정 사항에 충돌이있는 경우 알림이 표시되고 수정 된 사항이 없습니다.

Qt Creator 내에서 Clazy 검사 및 수정 적용

모든 Clazy 검사를 Qt 6 포팅 전용으로 사용하려면 Qt Creator 버전 14.4.1 이상이 있어야합니다.

Qt Creator에서 프로젝트를 연 후에 는 분석 중에 실행할 Clazy 검사를 선택해야 합니다 . 이것은 '분석기' 아래의 '옵션' 또는 '기본 설정' 창에서 수행됩니다. 검사를 선택하고 새 구성에 저장하면 분석을 실행할 수 있습니다. 검사 결과는 전용 프레임에 나열됩니다. 수정을 선택하고 적용하십시오.

Qt Creator에서 Clazy 검사를 실행하는 방법에 대한 자세한 설명은 이 페이지를 참조하십시오.

Qt Creator 내에서 수정 사항 간의 충돌에 대해 경고하지 않습니다. 동일한 라인에서 발생하는 다른 검사와 관련된 수정 사항을 적용 할 때 주의해야 합니다.

추가 읽기

Clazy에 대한 전체 설명 ( 그것을 얻는 방법과 확인 및 수정 사항을 적용하는 방법)은 여기 에서 찾을 수 있습니다.

clazy-standalone 사용 방법에 대한 지침 은 여기에 있습니다.

여기 에 Qt 6 포팅 전용 페이지도 있습니다.

귀하의 의견

버그를 발견하면 여기에 보고 하고이 게시물의 작성자에게 할당해야 합니다.

사용자의 피드백은 언제나 환영합니다! 특히이 도구가 유용하다고 생각하거나 추가 확인이 필요한 경우 알려 주시기 바랍니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment