Skip to content

krotname/JavaSoundRecorder

JavaSoundRecorder

English

CI CodeQL Coverage OpenSSF Scorecard Release License: GPL-3.0 Java OpenSSF Best Practices

JavaSoundRecorder — Java 21 desktop-проект для записи звука с микрофона, демонстрирующий аккуратную архитектуру, воспроизводимую сборку, многоуровневые тесты, CI, coverage и supply-chain quality gates.

Что показывает репозиторий

  • Чёткие слои: config, audio, orchestration, storage, ui.
  • Работа как через CLI, так и через Swing UI (--ui).
  • Воспроизводимая сборка через Maven Wrapper (./mvnw / mvnw.cmd).
  • Настройка через переменные окружения.
  • Проверки CI: тесты, checkstyle, SpotBugs, CodeQL, coverage, правила сборки.
  • Линтинг GitHub Actions workflow-файлов через actionlint.
  • Политика обновления зависимостей с закрепленными версиями.
  • Многоуровневое тестирование: unit / integration / ui / контрактные проверки.
  • Дополнительно: архитектурные проверки слоёв через ArchUnit.
  • Проверяется корректная остановка фоновой записи и EDT-safe обновление Swing UI.

Архитектура

flowchart LR
    Env[Конфигурация\nAppConfig]
    Main[Main\nзапуск]
    Capture[JavaSoundCaptureService\nаудио пайплайн]
    Coordinator[RecordingCoordinator\nоркестратор]
    Upload[Стратегия хранилища\nUploadService]
    UI[RecorderPanel\nSwing UI]

    Env --> Main
    Main --> Coordinator
    Main --> UI
    Capture --> Coordinator
    Upload --> Coordinator
    Coordinator --> UI
    UI --> Coordinator
Loading

Запуск

git clone https://github.com/krotname/JavaSoundRecorder.git
cd JavaSoundRecorder
./mvnw clean verify

В Windows используйте mvnw.cmd вместо ./mvnw.

Установка из релиза

  1. Скачайте javasoundrecorder-*-all.jar, SBOM и checksums.txt из latest release.
  2. Проверьте checksums и GitHub attestations:
sha256sum -c checksums.txt
gh attestation verify javasoundrecorder-*-all.jar --repo krotname/JavaSoundRecorder
  1. Запустите:
java -jar javasoundrecorder-*-all.jar

Запуск CLI

./mvnw -q exec:java

По умолчанию выполняется одноразовая запись.

./mvnw -q exec:java -Dexec.mainClass=com.krotname.javasoundrecorder.Main -Dexec.args="--ui"

Запуск через Docker

./mvnw -q package
docker build -t javasoundrecorder .
docker run --rm javasoundrecorder

Конфигурация

Переменная Назначение
JAVASOUNDRECORDER_RECORDING_DURATION_MS Длительность записи (мс)
JAVASOUNDRECORDER_RECORDING_DIRECTORY Каталог для WAV файлов
DROPBOX_ACCESS_TOKEN Токен Dropbox
JAVASOUNDRECORDER_DROPBOX_UPLOAD_FOLDER Папка на Dropbox
JAVASOUNDRECORDER_UPLOAD_ENABLED Включить/выключить загрузку

Некорректные boolean-значения завершаются ошибкой. Папка Dropbox нормализуется к абсолютному пути Dropbox.

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

./mvnw -q -Dtest=*UnitTest test
./mvnw -q -Dtest=*IntegrationTest test
./mvnw -q -Dtest=*UiTest test
./mvnw -q -Dtest='*SmokeTest,*ContractTest' test
./mvnw -q -Dtest=ArchitectureUnitTest test

Проверка полного покрытия и политик:

./mvnw -q verify

Качество и документация

  • .github/workflows/ci.yml — запуск по категориям тестов и проверкам, включая architecture tests.
  • .github/workflows/actionlint.yml — статическая проверка GitHub Actions workflow-файлов.
  • Maven Wrapper — воспроизводимая локальная и CI-сборка на Maven 3.9.16.
  • GitHub Actions hardening: ограниченные permissions, timeout для job, concurrency и checkout без сохранения credentials.
  • GitHub Actions закреплены по immutable commit SHA; Docker images закреплены по digest.
  • Maven Wrapper проверяет Maven distribution по SHA-256 checksum.
  • Правила default branch описаны в docs/GOVERNANCE.md.
  • .github/workflows/ci.yml также запускает Dependency Review для pull request.
  • .github/workflows/codeql.yml — анализ безопасности.
  • .github/workflows/scorecard.yml — OSSF Scorecards для оценки supply-chain-подхода.
  • .github/workflows/release.yml — проверенные релизы с checksum, SBOM (JSON/XML) и GitHub artifact attestations.
  • pom.xml — checkstyle/SpotBugs/jacoco/coverage gates и сборка включает генерацию SBOM (JSON/XML).
  • docs/DEPENDENCY_POLICY.md — правила версионирования и обновления зависимостей.
  • .github/dependabot.yml — автоматическое обновление зависимостей Maven/Actions.
  • .github/ISSUE_TEMPLATE/ — шаблоны для багов и фич.
  • CHANGELOG.md, CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md.
  • Лицензия: LICENSE (GNU General Public License v3.0).
  • Доп. docs: docs/ARCHITECTURE.md, docs/TEST_PLAN.md, docs/USAGE.md, docs/QUALITY.md, docs/GOVERNANCE.md, docs/DEPENDENCY_POLICY.md, docs/SUPPLY_CHAIN.md.

About

Java 21 desktop-рекордер звука с Swing UI, загрузкой в Dropbox, покрытием тестами, CI и supply-chain quality gates.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors