7 /10

qnote

https://github.com/Omibranch/qnote
Нормально

Прожарка: qnote

Оценка: 7/10

Критично

  • [⚠ МНЕНИЕ] src-tauri/src/main.rs: стр. 27 – вызывается unwrap() при открытии окна без обработки ошибки; в продакшене падёт при любой проблеме с рендерером.
  • [⚠ МНЕНИЕ] src/lib/pdfExport.ts: стр. 9 – функция esc экранирует строки, но используется только в экспорте PDF, а в UI‑компонентах (src/components/MarkdownEditor.tsx) выводятся необработанные строки через dangerouslySetInnerHTML. Это открывает путь к XSS, если пользователь вставит HTML‑тег.
  • [✓ ФАКТ: Инфра-Ревизор] release.yml (GitHub Actions): стр. 176 – строка превышает 80 символов, а в целом workflow использует on: release без ограничения types: [created]. Checkov фиксирует CKV2_GHA_1 – потенциальный запуск CI при каждом теге, в том числе поддельном.

Надо переделать

  • [✓ ФАКТ: YAML-Граммарнаци] pnpm-lock.yaml – более 20 строк превышают лимит 80 символов, что усложняет чтение и приводит к ошибкам yamllint.
  • [⚠ МНЕНИЕ] src/lib/fileOps.ts – объявлены функции readFileSync и writeFileSync, но ни одна из них не вызывается в коде приложения; их следует удалить или задокументировать назначение.
  • [⚠ МНЕНИЕ] src-tauri/icons/ – более 30 файлов‑иконок, из которых только 5 реально используются в tauri.conf.json. Остальные лишь «загромождают» репозиторий.

Мелочи

  • [✓ ФАКТ: YAML-Граммарнаци] В release.yml отсутствует начало документа (---), что считается плохой практикой YAML.
  • [⚠ МНЕНИЕ] В Makefile нет комментариев к целям, а переменные объявлены в верхнем регистре без пояснений.
  • [⚠ МНЕНИЕ] В src/store/useStore.ts названия состояний (setState, getState) совпадают с методами Zustand, но типы не указаны – ухудшает автодополнение.

Что хорошо

  • [⚠ МНЕНИЕ] Структура проекта чётко разделена: src-tauri — Rust‑ядро, src — React‑frontend, src/lib — утилиты, src/components — UI‑компоненты. Навигация по дереву интуитивна.
  • [⚠ МНЕНИЕ] Типизация TypeScript‑кода почти везде включена, ошибки компиляции почти не встречаются.
  • [⚠ МНЕНИЕ] Лицензия присутствует, в ней указаны актуальные года и автор, что избавляет от юридических вопросов.
  • [⚠ МНЕНИЕ] Sanitization реализована в pdfExport.ts (функция esc), показывая, что автор знает о необходимости экранирования.
  • [⚠ МНЕНИЕ] CI настроен через GitHub Actions, автоматизирует сборку и публикацию, что экономит время.
  • [⚠ МНЕНИЕ] Иконки для разных платформ (Windows, macOS, Linux, Android, iOS) уже подготовлены – готовый к кроссплатформенной сборке Tauri‑приложения.
  • [⚠ МНЕНИЕ] README содержит краткое описание и инструкцию по запуску, что упрощает старт для новых разработчиков.

Вердикт

Добротный стартовый шаблон Tauri‑приложения, но без доработки обработки ошибок и полной санитизации UI‑вывода он рискует «потеряться» в продакшене. 🚀


Анализ выполнен автоматически методами статического анализа (SAST) публично доступного репозитория. Активное сканирование и тестирование на проникновение не проводились. Значения обнаруженных секретов, персональные данные и пути эксплуатации уязвимостей не раскрываются. Цитирование кода — в соответствии со ст. 1274 ГК РФ. Результат является оценочным суждением и не заменяет профессиональный аудит безопасности. Пункты помечены: ✓ факт (линтер), ⚠ мнение (AI), ✗ неверно (опровергнуто).

Raw Markdown Прожарить ещё