spath-cli 0.1.3

A Windows PATH security scanner and fixer - detects and fixes unquoted paths with spaces
# spath — Development Status & Roadmap


## ✅ COMPLETED: v0.3 — Full CLI Implementation


### Project Status: READY FOR RELEASE (with improvements needed)

- **Binary Name**: spath.exe
- **All Tests**: 173/173 passing ✅ (but need quality improvements)
- **Clippy**: No warnings ✅
- **Release Build**: Working ✅
- **CI/CD**: Configured ✅ (needs release workflow)

### Implemented Features


#### Core Modules

- ✅ Scanner (`src/scanner/mod.rs`) - PATH security scanning with audit mode
- ✅ Fixer (`src/fixer/mod.rs`) - Automatic fixing with backup/restore
- ✅ Analyzer (`src/analyzer/mod.rs`) - SYSTEM/USER PATH analysis
- ✅ Migrator (`src/migrator/mod.rs`) - Path migration and cleanup

#### CLI Commands

- `spath scan` - Scan PATH for security issues
-`spath scan --audit` - Extended audit with statistics
-`spath scan --system` - Scan SYSTEM PATH (requires admin to fix)
-`spath fix` - Fix PATH security issues
-`spath backup` - Create PATH backup
-`spath list-backups` - List available backups
-`spath restore <file>` - Restore from backup
-`spath analyze` - Analyze SYSTEM/USER PATH
-`spath clean` - Clean and optimize PATH
-`spath verify` - Verify if critical issues are actually exploitable
-`spath verify --system` - Verify SYSTEM PATH exploitability

#### Flags

- `--dry-run` / `-d` - Preview changes without applying
-`--delicate` - Careful mode with confirmations
-`--system` / `-s` - Include SYSTEM PATH
-`--verbose` / `-v` - Detailed output
-`--audit` / `-a` - Extended audit information

#### Testing

- ✅ 30 scanner tests
- ✅ 20 fixer tests
- ✅ 20 analyzer tests
- ✅ 20 migrator tests
- ✅ 22 registry tests
- ✅ 36 integration tests
- ✅ 25 utility tests
- ✅ Total: 173 tests, all passing

#### CI/CD

- ✅ GitHub Actions workflow (`.github/workflows/ci.yml`)
- ✅ Release workflow (`.github/workflows/release.yml`)
- ✅ Automated testing on push/PR
- ✅ Release builds for Windows x86_64

#### Documentation

- ✅ English README.md
- ✅ Russian docs/README.ru.md
- ✅ Japanese docs/README.ja.md

### Backup System

- Location: `%LOCALAPPDATA%\spath\backups\`
- Format: `path_backup_YYYYMMDD_HHMMSS.json`
- Automatic backup before fixes
- Manual backup/restore commands

---

---

## 🔴 КРИТИЧЕСКИЕ ПРОБЛЕМЫ (требуют немедленного исправления)


### Качество кода

- [x] **DRY нарушен**: Дублирование кода чтения реестра в 3 модулях (analyzer, fixer, migrator)
  - ✅ Создан общий модуль `src/registry.rs` с `RegistryHelper`
- [x] **Отсутствие валидации**: Нет проверки длины PATH (макс. 2047 символов)
  - ✅ Добавлена константа `MAX_PATH_LENGTH` и валидация в `write_user_path()` / `write_system_path()`
- [x] **Смешение логики и представления**: Методы `print()` в структурах данных
  - ✅ Создан `src/formatter.rs` с `ConsoleFormatter`, методы `print()` удалены из data models

### Безопасность

- [x] **Path traversal уязвимость**: `restore` не валидирует путь к backup-файлу
  - ✅ Добавлена функция `validate_backup_path()` с проверкой директории, расширения и формата имени
- [x] **Race conditions**: Нет защиты от одновременного изменения PATH несколькими процессами
  - ✅ Добавлен file locking через `fs2` crate в `src/registry.rs` (`PathLockGuard`)
- [ ] **Backup в plaintext**: Нет шифрования чувствительных данных
  - Опционально: добавить шифрование через Windows DPAPI

### Тестирование

- [ ] **90% тестов тривиальны**: Тестируют стандартную библиотеку, а не логику приложения
  - Переписать тесты для реальных функций (`PathScanner::scan()`, `PathFixer::fix_user_path()`)
- [ ] **Нет интеграционных тестов**: Отсутствуют end-to-end сценарии
  - Добавить тесты: scan → fix → verify
- [ ] **Нет тестов edge cases**: Unicode, спецсимволы, длинные пути, поврежденные backup
  - Добавить property-based тесты через `proptest`

---

## 🟡 ВАЖНЫЕ УЛУЧШЕНИЯ (краткосрочно: 1-2 недели)


### Код

- [ ] Вынести магические строки в константы (`"c:\\windows"`, `"c:\\program files"`)
- [ ] Добавить логирование через `tracing` или `env_logger`
- [ ] Добавить проверку на секреты в PATH (токены, пароли)
- [ ] Реализовать автоочистку старых backup (хранить последние N)

### Тесты

- [ ] Настроить измерение покрытия кода (`cargo-tarpaulin`)
- [ ] Добавить моки для реестра (`mockall` crate)
- [ ] Добавить benchmark-тесты (`criterion` crate)
- [ ] Цель: покрытие > 80%

### Инфраструктура

- [x] Создать `.github/workflows/release.yml` для автоматических релизов (✅ выполнено)
- [ ] Настроить автоматическое обновление `CHANGELOG.md` (`git-cliff`)
- [x] Добавить версионирование через `cargo-release` (✅ выполнено)
- [ ] Подписать бинарники цифровой подписью (`signtool`)

### Документация

- [x] Создать `CONTRIBUTING.md` с гайдом для контрибьюторов (✅ выполнено)
- [ ] Добавить архитектурные диаграммы (ASCII или Mermaid)
- [x] Создать `SECURITY.md` с политикой безопасности (✅ выполнено)
- [ ] Добавить примеры использования в `examples/`

---

## 🟢 СРЕДНЕСРОЧНЫЕ ЗАДАЧИ (1-2 месяца)


### Архитектура

- [x] Рефакторинг: создать `src/registry.rs` для работы с реестром (✅ выполнено)
- [x] Рефакторинг: разделить data models и presentation layer (✅ выполнено)
- [ ] Добавить кеширование результатов анализа
- [x] Реализовать audit log для отслеживания изменений (✅ выполнено в GUI)

### Функциональность

- [ ] Поддержка других переменных окружения (не только PATH)
- [ ] Экспорт отчетов в JSON/CSV/HTML
- [ ] Интерактивный режим с выбором действий

### Безопасность

- [ ] Установка ACL на backup-файлы (только текущий пользователь)
- [ ] Опциональное шифрование backup
- [ ] Проверка целостности backup (checksums)
- [ ] Предупреждения о потенциальных секретах в PATH

### Производительность

- [ ] Оптимизация: передавать результаты анализа между функциями
- [ ] Добавить прогресс-бар для длительных операций
- [ ] Параллельная проверка существования путей

---

## 🔵 ДОЛГОСРОЧНЫЕ ЗАДАЧИ (3+ месяцев)


### v1.0 — GUI и Дистрибуция

- [ ] Tauri GUI application с веб-интерфейсом
- [ ] Публикация на crates.io
- [ ] winget manifest для Microsoft Store
- [ ] Scoop manifest для Scoop package manager
- [ ] Chocolatey package для корпоративных пользователей
- [ ] NSIS installer для традиционной установки
- [ ] PowerShell module для автоматизации

### Расширенные возможности

- [ ] Scheduled task integration (автоматическое сканирование)
- [ ] Multi-user context checking (проверка PATH всех пользователей)
- [ ] Advanced permission analysis (детальный анализ ACL)
- [ ] Интеграция с антивирусами (проверка путей на вредоносность)
- [ ] Поддержка WSL PATH (Windows Subsystem for Linux)

### Мониторинг и Телеметрия

- [ ] Опциональная анонимная телеметрия (с согласия пользователя)
- [ ] Интеграция с Sentry для отслеживания ошибок
- [ ] Метрики использования команд
- [ ] Автоматические отчеты о найденных уязвимостях

---

## 📊 Метрики качества


### Текущее состояние (v0.3)

- ✅ Функциональность: 10/10
- ✅ Качество кода: 9/10 (DRY исправлен, логика отделена)
- ⚠️ Тестирование: 7/10 (173 теста, но нужны реальные тесты)
- ✅ Безопасность: 9/10 (path traversal и race conditions исправлены)
- ✅ Производительность: 9/10
- ✅ DX (Developer Experience): 9/10 (CONTRIBUTING.md, SECURITY.md)
- ✅ Инфраструктура: 9/10 (CI/CD настроен)

### Целевые метрики (v1.0)

- 🎯 Качество кода: 10/10
- 🎯 Тестирование: 9/10 (покрытие > 80%, реальные тесты)
- 🎯 Безопасность: 10/10 (все уязвимости закрыты)
- 🎯 DX: 10/10 (полная документация)
- 🎯 Инфраструктура: 10/10 (автоматические релизы)

---

## 🚀 Приоритетный план действий


### Неделя 1-2: Критические исправления ✅ ВЫПОЛНЕНО

1. ✅ Создать `src/registry.rs` и убрать дублирование кода
2. ✅ Добавить валидацию длины PATH и пути к backup
3. ✅ Добавить file locking для защиты от race conditions
4. [ ] Переписать 20 ключевых тестов для реальной логики

### Неделя 3-4: Качество и безопасность ✅ ЧАСТИЧНО ВЫПОЛНЕНО

5. [ ] Вынести константы, добавить логирование
6. [ ] Настроить измерение покрытия кода
7. ✅ Создать `.github/workflows/release.yml`
8. ✅ Написать `CONTRIBUTING.md` и `SECURITY.md`

### Месяц 2: Рефакторинг и улучшения ✅ ЧАСТИЧНО ВЫПОЛНЕНО

9. ✅ Разделить data models и presentation
10. [ ] Добавить кеширование и audit log
11. [ ] Реализовать экспорт отчетов
12. [ ] Добавить интерактивный режим

### Месяц 3+: Дистрибуция и GUI

13. [ ] Публикация на crates.io
14. [ ] Создание winget/Scoop/Chocolatey пакетов
15. [ ] Разработка Tauri GUI
16. [ ] Подписание бинарников

---

## 📊 Current Metrics


### v0.3 Status

- ✅ Works on Windows 10/11
- ✅ Detects unquoted paths with spaces
- ✅ Detects non-existent paths
- ✅ Detects relative paths
- ✅ Detects duplicates
- ✅ Analyzes SYSTEM/USER PATH separation
- ✅ Fixes issues automatically
- ✅ Creates and restores backups
- ✅ Execution time < 1 second
- ✅ 173 comprehensive tests
- ✅ Zero clippy warnings
- ✅ CI/CD pipeline configured