Maschinelle Übersetzung, nicht von einem Muttersprachler geprüft. Englisch ist die maßgebliche Fassung.

APIs und IntegrationenAuf GitHub bearbeitenQuelle: ide/jetbrains/README.md

Kshana für JetBrains-IDEs

Install: Kshana — PNT simulator im JetBrains Marketplace — oder in jeder JetBrains-IDE Settings → Plugins → Marketplace → nach „Kshana“ suchen.

Ein natives Plugin, das den PNT-Resilienz-Simulator Kshana aus jeder JetBrains-IDE heraus ausführt (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Klicken Sie mit der rechten Maustaste auf ein Szenario .toml → Run Kshana Scenario; die Gütemaße und das Ergebnis-JSON laufen in das Werkzeugfenster Kshana.

Ergänzt den MCP-Server (der dem JetBrains-AI Assistant Zugriff auf Kshana gibt): Dieses Plugin ist der menschliche Weg per Zeigen und Klicken.

Was es tut#

  • Aktion Run Kshana Scenario auf jeder .toml (Kontextmenüs von Editor und Projektansicht) — führt kshana <file> aus und zeigt die Ausgabe im Werkzeugfenster Kshana.
  • Assess Receiver Trust auf einem Szenario receiver-trust .toml (kshana receiver-trust): der Vertrauensverlauf, mit einem Wert von 0-100 und Gründen für ein Schiff. Beratende Software, keine typzugelassene Navigationsausrüstung (IEC 61108, IEC 61162): Der Betreiber bleibt für die Navigation des Schiffes verantwortlich.
  • Generate Training NMEA auf einem nmea-scenario .toml (kshana nmea-scenario): synthetisches Brücken-NMEA und ein Ausbilderprotokoll, neben dem Szenario geschrieben. Nur Text; für Training, nie für die laufenden Navigationssysteme eines Schiffes.
  • Build Interference Map auf einer ADS-B- oder AIS-.csv (Projektansicht; fragt, um welchen zugelassenen Datensatz es sich handelt) und Route Exposure auf einer Routendatei (fragt nach dem Ordner der Karten). Eine beeinträchtigte Zelle weist Störung nicht als Ursache nach; keine Vorhersage.
  • Export Test-Bench Files auf einem Szenario .toml (kshana bench-export): Fahrzeugbewegung, NMEA und beschriftete Ereignisse für einen GNSS-Simulator im Labor, neben dem Szenario geschrieben. Es schreibt kein Signal; betreiben Sie einen Simulator nur dort, wo es genehmigt ist.
  • Build Compliance Report auf einem Laufergebnis .json (kshana compliance-report) und Tools → Show Compliance Mapping (kshana compliance-report --mapping): die Zuordnung zu öffentlichen Rahmenwerken, gezeigt mit der eigenen Aussage der Engine Wort für Wort.
  • Verify Evidence Pack auf einem Nachweispaket-Ordner (Projektansicht; kshana evidence verify): fragt nach dem öffentlichen Schlüssel des Signierenden (64 Hexziffern oder eine .pub-Datei; immer gepinnt, das Plugin akzeptiert nie einen ungepinnten Signierenden) und optional nach dem vollständigen Sitzungsprotokoll. Nur ein verifiziertes Ergebnis gilt als verifiziert; ein intaktes Paket mit ungepinntem Signierenden wird als „NOT VERIFIED“ angezeigt.
  • Render Trust Telemetry auf einem Ergebnis .json der Art receiver-trust (kshana trust-telemetry --result): Prometheus-Text, CEF/LEEF-Syslog-Ereignisse oder Home-Assistant-MQTT-Zeilen, im Kshana-Fenster ausgegeben. Nichts wird gesendet oder bereitgestellt; die laufenden Exporter bleiben auf der Kommandozeile.
  • Fit Sensor Parameters from IMU Log auf einer ruhenden IMU-.csv (kshana imu-fit): die Beschleunigungsmesser- und Gyroparameter der Szenarien hybrid und fusion, durch die Allan-Abweichung angepasst, als Tabelle [accel_classical] im Kshana-Fenster ausgegeben. Nichts wird geschrieben; die Anpassung ist MODELLED.
  • Validate Scenario (kshana --validate), List Scenario Kinds (Menü Tools; kshana kinds) und Assess Receiver Stream (eine Schiffssitzung .toml plus ein von Ihnen gewähltes gespeichertes NMEA-Protokoll; kshana receiver-trust live --file, einmal bewertet, ohne Socket und ohne Gate).
  • Insert Example Scenario (Ordner der Projektansicht oder Menü Tools; kshana example): Wählen Sie ein mitgeliefertes Szenario, und es wird als neue .toml geschrieben (nie über eine Datei). Export Scenario auf einer .toml (SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; nur simulierte Ausgabe), Animate Scenario (HTML oder SVG, im Browser geöffnet) und Import Route auf einer Route .geojson (fragt, welches Szenario).
  • Create Evidence Pack auf einer receiver-trust-Sitzung .toml (kshana receiver-trust evidence): fragt nach dem Fenster, einer Signierschlüsseldatei, die Sie schon haben, und dem Ausgabeordner. Das Plugin erzeugt, liest oder speichert nie einen Schlüssel (kshana evidence keygen bleibt auf der Kommandozeile). Attach Timestamp auf einem Paketordner (kshana evidence attach-timestamp): Kshana prüft die Signatur der Zeitstempelautorität nicht; führen Sie openssl ts -verify selbst aus.
  • Weiterhin nur auf der Kommandozeile: die IQ-Befehle, evidence keygen und receiver-trust live.
  • Ein unteres Werkzeugfenster Kshana, das die Laufkonsole enthält.
  • Nicht im Plugin: kshana receiver-trust live (ein lang laufender Stromprozess mit einem Gate und einem optionalen TCP-Listener) und kshana trust-telemetry bleiben auf der Kommandozeile, weil eine IDE-Aktion einen Befehl bis zum Ende ausführt und seine Ausgabe zeigt; siehe docs/MARITIME-TRUST.md.
  • Settings → Tools → Kshana, um auf die Binärdatei kshana zu zeigen (leer → aus PATH aufgelöst; Installation mit cargo install kshana).

Das Plugin ist rein plattformbasiert (keine sprachspezifischen Abhängigkeiten) und lädt daher in jeder JetBrains-IDE ab Build 243 (2024,3).

Bauen und ausführen#

Erfordert JDK 17+ (der Build legt JDK 21 fest) und den mitgelieferten Gradle-Wrapper.

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 prüft standardmäßig den Since-Build 2024,3. Um weitere Linien zu prüfen, listen Sie sie als TYPE:VERSION auf (jede IDE ist ein Download von etwa 1 GB):

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

Das Plugin verwendet auf keiner davon eine veraltete oder zur Entfernung vorgesehene Plattform-API; das soll so bleiben (ein Auswahldialog läuft über KshanaChooser, nicht über Messages.showChooseDialog).

Installieren Sie das gebaute Zip über Settings → Plugins → ⚙ → Install Plugin from Disk….

Aufbau#

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

Isolation#

Wie mcp/ und xval/ ist dies ein eigenständiges Gradle-Projekt, ausgeschlossen aus dem veröffentlichten Crate kshana (/ide im Paket exclude); seine Build-Ausgabe steht in der gitignore.

Lizenz: AGPL-3.0-only (oder eine kommerzielle Lizenz von Ashforde OÜ — siehe die LICENSING.md des Repositorys).