Qt QML Compiler
Qt QML Compiler 모듈에는 QML 툴링에 필요한 공유 기능인 Qt Quick Compiler 및 qmllint. 또한 도구의 기본 제공 분석 기능을 확장하는 데 사용할 수 있는 QQmlSA 프레임워크도 제공합니다.
모듈 사용
Qt 모듈의 C++ API를 사용하려면 직접 또는 다른 종속성을 통해 모듈 라이브러리에 연결해야 합니다. CMake 및 qmake를 비롯한 여러 빌드 도구가 이를 지원합니다.
CMake로 빌드하기
find_package()
명령을 사용하여 Qt6
패키지에서 필요한 모듈 컴포넌트를 찾습니다:
find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler)
자세한 내용은 CMake로 빌드 개요를 참조하세요.
qmake로 빌드하기
qmake로 빌드하도록 모듈을 구성하려면 프로젝트의 .pro 파일에 QT
변수의 값으로 모듈을 추가합니다:
QT += QmlCompiler
QQmlSA 프레임워크 사용
Qt QML Compiler 모듈은 QML 코드의 정적 분석을 위한 도구를 제공하는 QQmlSA 프레임워크를 제공합니다. 이러한 도구는 구문 유효성을 보장하고 QML 안티 패턴에 대해 경고하는 데 도움이 될 수 있습니다. QML 프로그램에 정적 분석을 추가하는 것은 플러그인을 작성하여 수행됩니다. 플러그인은 QML 코드의 요소와 속성에 대한 분석 패스 모음을 실행합니다. 패스는 패스를 보관하고 요소와 그 하위 요소를 분석하기 위해 호출할 수 있는 PassManager에 등록할 수 있습니다. 패스는 요소 또는 속성에 대해 평가된 특정 규칙 또는 조건에 대한 검사입니다. 조건이 충족되면 패스는 코드에서 들여쓰기된 문제를 사용자에게 경고하고 수정 사항을 제안할 수도 있습니다. 요소와 속성에 대한 분석은 요소와 속성에 대한 패스 컬렉션을 연속적으로 실행하여 수행되므로 이를 패스라고 합니다. 각 패스는 하나의 특정 문제만 식별해야 합니다. 패스 집합을 결합하면 더 복잡한 분석을 수행할 수 있으며, 함께 플러그인을 구성할 수 있습니다. 요소 패스는 shouldRun()
과 run()
의 두 가지 주요 구성 요소로 정의됩니다. 분석을 수행할 때 패스 관리자는 루트 요소의 하위 요소를 탐색하는 동안 마주치는 모든 요소에 대해 패스를 실행합니다. 각 요소에 대해 shouldRun()
가 true
을 반환하면 run()
이 해당 요소에 대해 실행됩니다. 프로퍼티 전달은 프로퍼티가 바인딩될 때, 읽힐 때, 쓰여질 때의 세 가지 이벤트에 따라 트리거됩니다. 이는 각각 onBinding()
, onRead()
및 onWrite()
함수를 재정의하여 구현할 수 있습니다. 코드가 커지면 요소와 프로퍼티의 수도 증가합니다. 이 모든 요소에 대해 정적 분석 패스를 수행하면 비용이 많이 들 수 있습니다. 그렇기 때문에 분석할 요소와 속성을 결정할 때 세분화하는 것이 좋습니다. 요소의 경우, shouldRun()
은 실제 계산을 수행하는 run()
을 실행할지 여부를 결정하기 위한 저렴한 검사로 사용됩니다. 속성의 경우 관리자에게 패스를 등록할 때 선택이 이루어집니다. registerPropertyPass()
함수는 moduleName
, typeName
및 propertyName
문자열을 인수로 받습니다. 이 문자열은 등록된 패스의 영향을 받는 속성 집합을 필터링하는 데 사용됩니다.
예제
QML 정적 분석 자습서에서는 QQmlSA
프레임워크를 사용하여 사용자 지정 qmllint 패스를 만드는 방법을 보여줍니다.
참조
- Qt QML Compiler C++ Classes - QmlCompiler 모듈에서 제공하는 C++ API
- 정적 분석 기능을 사용한 QML 툴링
© 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.