Files
umbrix/AUDIT_REPORT.md
2026-01-15 12:28:40 +03:00

10 KiB
Raw Blame History

📋 Аудит проекта 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 (требуют внимания):

  1. Неиспользуемые импорты (20+ файлов):

    • lib/features/per_app_proxy/overview/per_app_proxy_page.dart:5 - go_router
    • lib/features/home/widget/home_page.dart:15 - active_proxy_notifier.dart
    • lib/features/settings/widgets/advanced_setting_tiles.dart - 3 импорта
    • И другие...
  2. Неиспользуемые переменные:

    • connection_button.dart:31 - today
    • system_tray_notifier.dart:64 - destinations
    • logs_overview_page.dart:31 - debug
    • about_page.dart:28 - appUpdate
    • И другие...
  3. Мёртвый код (Dead code):

    • profile_notifier.dart:117 - false && ... (всегда false)
    • qr_code_scanner_screen.dart:143 - недостижимый код
    • system_tray_notifier.dart:184 - недостижимый код
  4. 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.0
  • freezed_annotation: 2.4.4 → 3.1.0
  • riverpod_annotation: 2.6.1 → 4.0.0
  • protobuf: 3.1.0 → 6.0.0 (+3 мажорные версии)

Рекомендуемые к обновлению:

  • mobile_scanner: 5.2.3 → 7.1.4
  • package_info_plus: 5.0.1 → 9.0.0
  • sentry_flutter: 7.20.2 → 9.9.1
  • share_plus: 7.2.2 → 12.0.1
  • slang: 3.32.0 → 4.11.1
  • upgrader: 9.0.0 → 12.3.0
  • window_manager: 0.3.9 → 0.5.1
  • wolt_modal_sheet: 0.4.1 → 0.11.0

Dev dependencies:

  • build_runner: 2.4.13 → 2.10.4
  • dependency_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: false
  • sort_unnamed_constructors_first: false
  • avoid_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

Изменённые файлы:

  • .gitignore
  • android/app/build.gradle
  • android/app/src/main/AndroidManifest.xml

Удалённые файлы (ребрендинг):

  • Старый пакет: com.hiddify.hiddify
  • Новый пакет: com.umbrix.app
  • Удалено ~50 Kotlin файлов из старого namespace

🎨 UI Изменения (текущая сессия)

  1. Размер шрифта:

    • Description: 12px (было: default)
    • Buttons: 13px (было: default)
    • Цель: уместить русский текст в одну строку
  2. Переводы:

    • Кнопка "Proxies" → "Локации" (все языки)
    • Добавлен раздел "Exclusions" для id, pt-BR, zh-TW

🚀 Рекомендации

🔴 Критично (сделать в ближайшее время):

  1. Удалить неиспользуемые импорты:

    dart fix --apply
    
  2. Обновить discontinued пакет:

    • Заменить flutter_adaptive_scaffold на актуальную альтернативу
  3. Исправить мёртвый код:

    • profile_notifier.dart:117 - убрать false &&
    • Другие dead code warnings

🟡 Важно (планировать):

  1. 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
  2. Размер APK (223 MB):

    • Создать release build для оптимизации
    • Проверить, нет ли лишних ресурсов
    • Использовать app bundle вместо APK

🟢 Желательно (улучшения):

  1. Добавить const конструкторы (производительность)

  2. Добавить trailing commas (читаемость)

  3. Обновить deprecated API:

    • AutoDisposeRefRef
    • SingboxServiceRefRef
    • package:drift_dev/api/migrations.dart
  4. Linux support:

    sudo apt install clang cmake ninja-build
    

🧪 Плагины для проверки

Уже используются:

  • flutter analyze (встроенный статический анализатор)
  • custom_lint (кастомные правила для Riverpod)
  • package:lint/strict.yaml (строгие правила)

Рекомендуемые дополнительно:

  1. dart_code_metrics (DCM)

    dev_dependencies:
      dart_code_metrics: ^5.7.6
    
    • Циклическая сложность
    • Метрики кода
    • Anti-patterns
  2. flutter_lints

    dev_dependencies:
      flutter_lints: ^4.0.0
    
    • Более современная альтернатива lint
  3. very_good_analysis

    dev_dependencies:
      very_good_analysis: ^5.1.0
    
    • Еще более строгие правила от Very Good Ventures
  4. Dependency checkers:

    flutter pub run dependency_validator
    
    • Проверка неиспользуемых зависимостей
  5. 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)