Дата актуализации: 2026-07-14.
Этот документ фиксирует текущее состояние legacy qmllint после релиза v0.2.6.1 и завершения P10.
Команда проверки:
cmake --build build_release --target appOpenIPC-Dashboard_qmllint --config ReleaseРезультат на 2026-07-14:
- полный
qmllintпока падает на legacy baseline; - до чистки было около
1322предупреждений; - после P10 осталось
1093предупреждения (-91относительно предыдущего baseline); - обычная сборка
Releaseпроходит; - unit-тесты проходят:
24/24; - QML smoke проходит в обычном режиме и при
QT_SCALE_FACTOR=1.5; - отдельный
qml_lint_targetedпроходит без предупреждений для новых и существенно изменённых компонентов.
| Файл | Предупреждений | Комментарий |
|---|---|---|
src/ui/GridCell.qml |
149 | Старый крупный экран видеоячейки, много unqualified access и unresolved C++ QML types в lint tooling. |
src/ui/analytics/ImageViewerWindow.qml |
125 | Legacy analytics UI, требует отдельной типизации делегатов/контролов. |
src/ui/CameraSearchDialog.qml |
69 | Диалог поиска камер и сложные delegate/model bindings. |
src/ui/MajesticControlDialog.qml |
66 | Оставшийся крупный coordinator после безопасного дробления Majestic. |
src/ui/analytics/SnapshotBrowser.qml |
53 | Legacy analytics browser. |
src/ui/DashboardView.qml |
50 | Остаточные предупреждения shell после дробления Dashboard. |
src/ui/analytics/AnalyticsModulesPanel.qml |
49 | Динамические module-card bindings и model roles. |
src/ui/ArchiveView.qml |
42 | После декомпозиции P9 предупреждений заметно меньше, остался player/shell layer. |
src/ui/SettingsDialog.qml |
41 | Coordinator настроек после выноса отдельных страниц и evidence upload panel. |
src/ui/AnalyticsView.qml |
40 | Legacy shell analytics-раздела. |
src/ui/analytics/AnalyticsOverviewPanel.qml |
38 | Динамические диагностические карты. |
src/ui/FileManagerDialog.qml |
35 | Часть safe warnings исправлена, остаток требует отдельной ревизии старого FileManager. |
Unqualified accessостается крупнейшим классом legacy-предупреждений.- часть
Unresolved QML typeотносится к динамическим C++/QML model roles и tooling Qt 6.4. Property "text" not found on type "QQuickItem"и родственныеparent.*: остаточный legacy-класс.Cannot defer property assignment: 20.- Layout-managed
height/width: остаточные места в старых компонентах. qlonglongв QML tooling: предупреждения типов Qt/C++ bridge.
- C++ типы, которые используются напрямую из QML, переведены на Qt QML type registration macros.
- Для target
appOpenIPC-Dashboardдобавлены include paths для сгенерированной QML-регистрации:src/backend;src/backend/analytics;src/backend/gst.
- Ручная регистрация этих типов в
main.cppубрана, оставлен singletonSystemController. - Исправлены безопасные
parent.*предупреждения в:src/ui/Main.qml;src/ui/SettingsDialog.qml;src/ui/FileManagerDialog.qml;src/ui/StyledScrollBar.qml.
- Часть
heightвнутриColumnLayout/GridLayoutзаменена наLayout.preferredHeight. ArchiveView, Dashboard, Settings, Majestic Control Center и Analytics разделены на меньшие компоненты без изменения публичного QML API.AnalyticsZoneEditor.qml,SettingsEvidenceUploadPanel.qml, архивные P9-компоненты,RulesPanel.qmlиLogView.qmlвключены в обязательный targeted lint.- устранён рекурсивный runtime-warning
LogViewпри закрытии окна на масштабе 150%, который мог переполнять application log.
Новые QML-компоненты не должны добавлять предупреждения в baseline.
Для новых файлов и при существенной переработке существующих файлов:
- давать корневым контролам явные
id; - не обращаться из
background,contentItem,indicator,delegateкparent.*, если можно обратиться к явномуid; - внутри Layout использовать
Layout.preferredWidth/Layout.preferredHeight, а не прямыеwidth/height, если элемент управляется Layout; - не оставлять неявные singleton/global references без необходимости;
- после правки запускать обычную сборку и unit-тесты, а полный
qmllintсверять с этим baseline.
GridCell.qml.analytics/ImageViewerWindow.qml.CameraSearchDialog.qml.MajesticControlDialog.qmlтолько после введения отдельного transaction state-proxy.analytics/SnapshotBrowser.qml.DashboardView.qmlиAnalyticsModulesPanel.qmlнебольшими изолированными пакетами.
Эти работы относятся к дальнейшей архитектурной эволюции и должны выполняться отдельными небольшими PR/коммитами, чтобы не сломать runtime-поведение UI.