10 KiB
📋 Аудит проекта Umbrix v0.1.0 (build 100)
Дата: 29 декабря 2025 г.
Flutter: 3.24.0 (Stable)
Платформа: Android SDK 36.1.0
✅ Статус сборки
🎯 Успешно собрано
- APK:
build/app/outputs/flutter-apk/app-debug.apk - Размер: 223 MB (debug-режим с символами отладки)
- Время сборки: 11.4s (Gradle)
- Bootstrap: 2358ms
- Статус: ✅ Приложение запущено и работает на эмуляторе
📊 Статический анализ кода (Flutter Analyze)
Общая статистика
- Всего проблем: 265
- Категории:
- ❌ Errors: 0 (критических ошибок нет)
- ⚠️ Warnings: ~30 (неиспользуемые импорты, мёртвый код)
- ℹ️ Info/Hints: ~235 (стилистика, рекомендации)
Основные проблемы
⚠️ Warnings (требуют внимания):
-
Неиспользуемые импорты (20+ файлов):
lib/features/per_app_proxy/overview/per_app_proxy_page.dart:5-go_routerlib/features/home/widget/home_page.dart:15-active_proxy_notifier.dartlib/features/settings/widgets/advanced_setting_tiles.dart- 3 импорта- И другие...
-
Неиспользуемые переменные:
connection_button.dart:31-todaysystem_tray_notifier.dart:64-destinationslogs_overview_page.dart:31-debugabout_page.dart:28-appUpdate- И другие...
-
Мёртвый код (Dead code):
profile_notifier.dart:117-false && ...(всегда false)qr_code_scanner_screen.dart:143- недостижимый кодsystem_tray_notifier.dart:184- недостижимый код
-
Go lang warning:
libcore/config/server.go:46- impossible condition:nil != nil
ℹ️ Info (рекомендации по стилю):
- Отсутствие
constконструкторов (~100 мест) - Отсутствие trailing commas (~50 мест)
- Использование deprecated API (~10 мест)
- Generated код (protobuf) - игнорируется
📦 Зависимости
Устаревшие пакеты (требующие обновления):
Критичные (серьёзно устарели):
flutter_adaptive_scaffold: 0.1.12 → 0.3.3+1 (discontinued! ⚠️)go_router: 13.2.5 → 17.0.1 (+3 мажорные версии)grpc: 3.2.4 → 5.1.0 (+2 мажорные версии)hooks_riverpod: 2.6.1 → 3.1.0freezed_annotation: 2.4.4 → 3.1.0riverpod_annotation: 2.6.1 → 4.0.0protobuf: 3.1.0 → 6.0.0 (+3 мажорные версии)
Рекомендуемые к обновлению:
mobile_scanner: 5.2.3 → 7.1.4package_info_plus: 5.0.1 → 9.0.0sentry_flutter: 7.20.2 → 9.9.1share_plus: 7.2.2 → 12.0.1slang: 3.32.0 → 4.11.1upgrader: 9.0.0 → 12.3.0window_manager: 0.3.9 → 0.5.1wolt_modal_sheet: 0.4.1 → 0.11.0
Dev dependencies:
build_runner: 2.4.13 → 2.10.4dependency_validator: 3.2.3 → 5.0.3
🔧 Конфигурация линтера
Файл: analysis_options.yaml
Используемые плагины:
- ✅
package:lint/strict.yaml(строгие правила) - ✅
custom_lintсprovider_parameters
Исключения:
libcore/**(Go код)**.g.dart(сгенерированный код)lib/gen/**(переводы)
Отключенные правила:
sort_pub_dependencies: falsesort_unnamed_constructors_first: falseavoid_classes_with_only_static_members: false
🌍 Переводы (i18n)
Статус: ✅ Полная локализация
Поддерживаемые языки: 11
- 🇸🇦 ar (арабский)
- 🇬🇧 en (английский - базовый)
- 🇪🇸 es (испанский)
- 🇮🇷 fa (персидский)
- 🇫🇷 fr (французский)
- 🇮🇩 id (индонезийский)
- 🇧🇷 pt-BR (португальский)
- 🇷🇺 ru (русский) ✨
- 🇹🇷 tr (турецкий)
- 🇨🇳 zh-CN (китайский упрощенный)
- 🇹🇼 zh-TW (китайский традиционный)
Генератор: slang v3.32.0 (можно обновить до 4.11.1)
Время генерации: 0.229s
Статус: Все ключи переведены, включая:
- ✅
excludedDomains(добавлены для id, pt-BR, zh-TW в этой сессии) - ✅
proxies.pageTitleизменено с "Proxies" на "Locations" во всех языках
🛠️ Flutter Doctor
✅ Работающие компоненты:
- Flutter SDK 3.24.0 (stable)
- Android toolchain SDK 36.1.0
- Android Studio 2025.1.3
- VS Code 1.106.3 / 1.108.0-insider
- Connected devices (2)
- Network resources
❌ Отсутствующие (для полной поддержки):
- Chrome (для web-разработки)
- Linux toolchain (clang++, CMake, ninja)
📝 Git Status
Изменённые файлы:
.gitignoreandroid/app/build.gradleandroid/app/src/main/AndroidManifest.xml
Удалённые файлы (ребрендинг):
- Старый пакет:
com.hiddify.hiddify - Новый пакет:
com.umbrix.app - Удалено ~50 Kotlin файлов из старого namespace
🎨 UI Изменения (текущая сессия)
-
Размер шрифта:
- Description: 12px (было: default)
- Buttons: 13px (было: default)
- Цель: уместить русский текст в одну строку
-
Переводы:
- Кнопка "Proxies" → "Локации" (все языки)
- Добавлен раздел "Exclusions" для id, pt-BR, zh-TW
🚀 Рекомендации
🔴 Критично (сделать в ближайшее время):
-
Удалить неиспользуемые импорты:
dart fix --apply -
Обновить discontinued пакет:
- Заменить
flutter_adaptive_scaffoldна актуальную альтернативу
- Заменить
-
Исправить мёртвый код:
profile_notifier.dart:117- убратьfalse &&- Другие dead code warnings
🟡 Важно (планировать):
-
Major updates пакетов:
- Обновить Riverpod 2.x → 3.x (breaking changes!)
- Обновить go_router 13.x → 17.x
- Обновить protobuf 3.x → 6.x
- Обновить grpc 3.x → 5.x
-
Размер APK (223 MB):
- Создать release build для оптимизации
- Проверить, нет ли лишних ресурсов
- Использовать app bundle вместо APK
🟢 Желательно (улучшения):
-
Добавить const конструкторы (производительность)
-
Добавить trailing commas (читаемость)
-
Обновить deprecated API:
AutoDisposeRef→RefSingboxServiceRef→Refpackage:drift_dev/api/migrations.dart
-
Linux support:
sudo apt install clang cmake ninja-build
🧪 Плагины для проверки
Уже используются:
- ✅
flutter analyze(встроенный статический анализатор) - ✅
custom_lint(кастомные правила для Riverpod) - ✅
package:lint/strict.yaml(строгие правила)
Рекомендуемые дополнительно:
-
dart_code_metrics (DCM)
dev_dependencies: dart_code_metrics: ^5.7.6- Циклическая сложность
- Метрики кода
- Anti-patterns
-
flutter_lints
dev_dependencies: flutter_lints: ^4.0.0- Более современная альтернатива lint
-
very_good_analysis
dev_dependencies: very_good_analysis: ^5.1.0- Еще более строгие правила от Very Good Ventures
-
Dependency checkers:
flutter pub run dependency_validator- Проверка неиспользуемых зависимостей
-
Security audit:
flutter pub run pubspec_dependency_analyzer
📈 Итоговая оценка
| Критерий | Оценка | Комментарий |
|---|---|---|
| Сборка | ✅ 10/10 | Собирается без ошибок |
| Код-стиль | ⚠️ 6/10 | 265 замечаний, но нет критичных |
| Зависимости | ⚠️ 5/10 | Много устаревших пакетов |
| Локализация | ✅ 10/10 | 11 языков, все ключи переведены |
| Размер APK | ⚠️ 6/10 | 223 MB (debug), нужен release |
| Тесты | ❓ N/A | Требует проверки |
| Документация | ✅ 8/10 | README есть, можно улучшить |
Общая оценка: ⚠️ 7.5/10
Вывод: Проект в хорошем состоянии, основные проблемы - устаревшие зависимости и стилистические замечания линтера. Критических ошибок нет, приложение работает стабильно.
🎯 План действий
Этап 1 (Немедленно):
- Запустить
dart fix --apply - Удалить неиспользуемые импорты вручную
- Исправить dead code
Этап 2 (На этой неделе):
- Собрать release APK
- Проверить размер release build
- Обновить minor версии пакетов
Этап 3 (Планирование):
- Протестировать major updates
- Заменить discontinued пакеты
- Добавить DCM метрики
Отчёт сгенерирован: GitHub Copilot
Версия приложения: Umbrix v0.1.0 (100)