Can analyze an element and its children with static analysis passes. 更多...
头: | #include <PassManager> |
CMake: |
find_package(Qt6 REQUIRED COMPONENTS QmlCompiler)
target_link_libraries(mytarget PRIVATE Qt6::QmlCompiler) |
状态: | 技术预览 |
void | analyze (const QQmlSA::Element & root ) |
std::unordered_map<quint32, QQmlSA::BindingInfo> | bindingsByLocation () const |
std::vector<std::shared_ptr<QQmlSA::ElementPass>> | elementPasses () const |
bool | hasImportedModule (QAnyStringView 模块 ) const |
bool | isCategoryEnabled (QQmlSA::LoggerWarningId category ) const |
std::multimap<QString, QQmlSA::PropertyPassInfo> | propertyPasses () const |
void | registerElementPass (std::unique_ptr<QQmlSA::ElementPass> pass ) |
bool | registerPropertyPass (std::shared_ptr<QQmlSA::PropertyPass> pass , QAnyStringView moduleName , QAnyStringView typeName , QAnyStringView propertyName = QAnyStringView(), bool allowInheritance = true) |
Runs the element passes over root and all its children.
Returns bindings by their source location.
Returns the list of element passes.
返回
true
if the module named
模块
has been imported by the QML to be analyzed,
false
否则。
This can be used to skip registering a pass which is specific to a specific module.
if (passManager->hasImportedModule("QtPositioning")) passManager->registerElementPass( std::make_unique<PositioningPass>(passManager) );
另请参阅 registerPropertyPass () 和 registerElementPass ().
返回
true
if warnings of
category
are enabled,
false
否则。
Returns the list of property passes.
Registers a static analysis pass to be run on all elements.
Registers a static analysis pass for properties. The pass will be run on every property matching the moduleName , typeName and propertyName .
省略 propertyName will register this pass for all properties matching the typeName and moduleName .
设置
allowInheritance
to
true
means that the filtering on the type also accepts types deriving from
typeName
.
pass
is passed as a
std::shared_ptr
to allow reusing the same pass on multiple elements:
auto titleValiadorPass = std::make_shared<TitleValidatorPass>(manager); manager->registerPropertyPass(titleValidatorPass, "QtQuick", "Window", "title"); manager->registerPropertyPass(titleValidatorPass, "QtQuick.Controls", "Dialog", "title");
注意: Running analysis passes on too many items can be expensive. This is why it is generally good to filter down the set of properties of a pass using the moduleName , typeName and propertyName .
返回
true
if the pass was successfully added,
false
otherwise. Adding a pass fails when the
Element
指定通过
moduleName
and
typeName
does not exist.
另请参阅 PropertyPass .