Машинный перевод, не проверенный носителем языка. Эталоном служит английская версия.

API и интеграцииПравить на GitHubИсточник: ide/jetbrains/README.md

Kshana для IDE JetBrains

Install: Kshana — симулятор PNT в JetBrains Marketplace — или, в любой IDE JetBrains, Settings → Plugins → Marketplace → найдите «Kshana».

Нативный плагин, запускающий симулятор устойчивости PNT Kshana изнутри любой IDE JetBrains (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Щёлкните правой кнопкой по сценарию .toml → Run Kshana Scenario; показатели качества и JSON результата выводятся потоком в окно инструментов Kshana.

Дополняет сервер MCP (который даёт AI Assistant от JetBrains доступ к Kshana): этот плагин — путь для человека, с помощью мыши.

Что делает#

  • Действие Run Kshana Scenario для любого .toml (контекстные меню редактора и представления проекта) — запускает kshana <file> и показывает вывод в окне инструментов Kshana.
  • Assess Receiver Trust для сценария receiver-trust .toml (kshana receiver-trust): временная шкала доверия с оценкой от 0 до 100 и причинами для судна. Программное обеспечение консультативного характера, не навигационное оборудование с утверждённым типом (IEC 61108, IEC 61162): ответственность за судовождение остаётся на операторе.
  • Generate Training NMEA для nmea-scenario .toml (kshana nmea-scenario): синтетический мостиковый NMEA и журнал инструктора, записываемые рядом со сценарием. Только текст; для тренировки, но не для действующих навигационных систем судна.
  • Build Interference Map для ADS-B или AIS .csv (представление проекта; спрашивает, какой это утверждённый набор данных) и Route Exposure для файла маршрута (спрашивает папку с картами). Деградировавшая ячейка не указывает на помехи как на причину; это не прогноз.
  • Export Test-Bench Files для сценария .toml (kshana bench-export): движение аппарата, NMEA и размеченные события для лабораторного имитатора GNSS, записываемые рядом со сценарием. Сигнал не записывается; запускайте имитатор только там, где это разрешено.
  • Build Compliance Report для результата прогона .json (kshana compliance-report) и Tools → Show Compliance Mapping (kshana compliance-report --mapping): сопоставление с публичной рамкой, показанное с собственным утверждением движка слово в слово.
  • Verify Evidence Pack для папки пакета доказательств (представление проекта; kshana evidence verify): запрашивает открытый ключ подписанта (64 шестнадцатеричных цифр или файл .pub; всегда закреплённый, плагин никогда не принимает незакреплённого подписанта) и, по желанию, полный журнал сессии. Как проверенный читается только проверенный результат; целый пакет с незакреплённым подписантом читается как «NOT VERIFIED».
  • Render Trust Telemetry для результата receiver-trust .json (kshana trust-telemetry --result): текст Prometheus, события syslog CEF/LEEF или строки MQTT для Home Assistant выводятся в окно Kshana. Ничего не отправляется и не раздаётся; работающие экспортёры остаются в командной строке.
  • Fit Sensor Parameters from IMU Log для неподвижного IMU .csv (kshana imu-fit): параметры акселерометра и гироскопа сценариев hybrid и fusion, подогнанные по девиации Аллана, выводятся в окно Kshana в виде таблицы [accel_classical]. Ничего не записывается; подгонка — MODELLED.
  • Validate Scenario (kshana --validate), List Scenario Kinds (меню Tools; kshana kinds) и Assess Receiver Stream (сессия судна .toml плюс выбранный вами сохранённый журнал NMEA; kshana receiver-trust live --file, оценивается один раз, без сокета и без шлюза).
  • Insert Example Scenario (папка в представлении проекта или меню Tools; kshana example): выберите поставляемый сценарий, и он будет записан как новый .toml (никогда поверх файла). Export Scenario для .toml (SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; только имитированный вывод), Animate Scenario (HTML или SVG, открывается в браузере) и Import Route для маршрута .geojson (спрашивает, для какого сценария).
  • Create Evidence Pack для сессии доверия к приёмнику .toml (kshana receiver-trust evidence): запрашивает окно, уже имеющийся у вас файл ключа подписи и выходную папку. Плагин никогда не создаёт, не читает и не хранит ключ (kshana evidence keygen остаётся в командной строке). Attach Timestamp для папки пакета (kshana evidence attach-timestamp): Kshana не проверяет подпись службы меток времени; запустите openssl ts -verify самостоятельно.
  • По-прежнему только в командной строке: команды IQ, evidence keygen и receiver-trust live.
  • Нижнее окно инструментов Kshana, содержащее консоль запуска.
  • Не входят в плагин: kshana receiver-trust live (долго работающий потоковый процесс со шлюзом и необязательным слушателем TCP) и kshana trust-telemetry остаются в командной строке, потому что действие IDE выполняет команду до конца и показывает её вывод; см. docs/MARITIME-TRUST.md.
  • Settings → Tools → Kshana, чтобы указать двоичный файл kshana (пусто → определяется из PATH; установка с помощью cargo install kshana).

Плагин чисто платформенный (без зависимостей от конкретных языков), поэтому загружается в каждой IDE JetBrains сборки 243 (2024,3) и новее.

Сборка и запуск#

Требуются JDK 17+ (сборка закрепляет JDK 21) и входящая в состав обёртка Gradle.

cd ide/jetbrains
./gradlew test          # unit tests (pure CLI helpers)
./gradlew buildPlugin    # assembles build/distributions/kshana-jetbrains-<version>.zip
./gradlew runIde         # launches a sandbox IDE with the plugin loaded
./gradlew verifyPlugin   # JetBrains plugin-verifier compatibility check (downloads IDEs)

verifyPlugin по умолчанию проверяет since-build, 2024,3. Чтобы проверить другие линейки, перечислите их как TYPE:VERSION (каждая IDE — это загрузка около 1 ГБ):

KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin

Плагин не использует устаревший или планируемый к удалению API платформы ни в одной из них; так и следует оставить (диалог выбора вызывается через KshanaChooser, а не Messages.showChooseDialog).

Установите собранный zip через Settings → Plugins → ⚙ → Install Plugin from Disk….

Структура#

build.gradle.kts / settings.gradle.kts / gradle.properties   build config (IntelliJ Platform Gradle Plugin 2.x)
src/main/kotlin/dev/kshana/ide/
  KshanaCli.kt            pure binary-resolution + command helpers (unit-tested)
  KshanaSettings.kt       persisted binary-path setting (app service)
  KshanaConsole.kt        per-project output console (project service)
  KshanaToolWindowFactory.kt   the "Kshana" tool window
  RunScenarioAction.kt    the Run-scenario action
  KshanaRunner.kt         runs one command in the background into the tool window
  MarineActions.kt        receiver trust, training NMEA, interference map, route exposure
  KshanaConfigurable.kt   Settings → Tools → Kshana
src/main/resources/META-INF/plugin.xml   plugin descriptor
src/test/kotlin/.../KshanaCliTest.kt      unit tests

Изоляция#

Как и mcp/ и xval/, это отдельный проект Gradle, исключённый из опубликованного крейта kshana (/ide в exclude пакета); его выходные файлы сборки игнорируются в git.

Лицензия: AGPL-3.0-only (или коммерческая лицензия от Ashforde OÜ — см. LICENSING.md в репозитории).