MARTe Development Tools (mdt)

mdt is a comprehensive toolkit for developing, validating, and building configurations for the MARTe real-time framework. It provides a CLI and a Language Server Protocol (LSP) server to enhance the development experience.

Features

  • Portability: A single statically compiled executable compatible with any Linux 3.2+ machine (as well as possible to compile and run on Windows and Mac OS X)
  • LSP Server: Real-time syntax checking, validation, autocomplete, hover documentation, and navigation (Go to Definition/References).
  • Builder: Merges multiple configuration files into a single, ordered output file.
  • Formatter: Standardizes configuration file formatting.
  • Validator: Advanced semantic validation using CUE schemas, ensuring type safety and structural correctness.

MARTe extended configuration language

Few additional features have been added to the standard MARTe configuration language:

  • Multi file configuration support
    • Multi file definition merging
    • File level namespace / node
  • Doc-strings support
  • Pragmas for warning suppression / documentation

Documentation

Installation

From Source

Requirements: Go 1.21+

go install github.com/marte-community/marte-dev-tools/cmd/mdt@latest

Usage

CLI Commands

  • Init: Initialize a MARTe project.
    mdt init project_name
    
  • Check: Run validation on a file or project.
    mdt check path/to/project
    
  • Build: Merge project files into a single output.
    mdt build [-o output.marte] main.marte ...
    
  • Format: Format configuration files.
    mdt fmt path/to/file.marte
    
  • LSP: Start the language server (used by editor plugins).
    mdt lsp
    

Editor Integration

mdt lsp implements the Language Server Protocol. You can use it with any LSP-compatible editor (VS Code, Neovim, Emacs, etc.).

MARTe Configuration

The tools support the MARTe configuration format with extended features:

  • Objects: +Node = { Class = ... }
  • Signals: Signal = { Type = ... }
  • Namespaces: #package PROJECT.NODE for organizing multi-file projects.

Validation & Schema

Validation is fully schema-driven using CUE.

  • Built-in Schema: Covers standard MARTe classes (StateMachine, GAM, DataSource, RealTimeApplication, etc.).
  • Custom Schema: Add a .marte_schema.cue file to your project root to extend or override definitions.

Example .marte_schema.cue:

package schema

#Classes: {
    MyCustomGAM: {
        #meta: {
            direction: "INOUT"
            multithreaded: true
        }
        Param1: int
        Param2?: string
        ...
    }
}

Pragmas (Suppressing Warnings)

Use comments starting with //! to control validation behavior:

  • //! unused: Reason - Suppress "Unused GAM" or "Unused Signal" warnings.
  • //! implicit: Reason - Suppress "Implicitly Defined Signal" warnings.
  • //! cast(DefinedType, UsageType) - Allow type mismatch between definition and usage (e.g. //!cast(uint32, int32)).
  • //! allow(unused) - Global suppression for the file.

Development

Building

go build ./cmd/mdt

Running Tests

go test ./...

License

MIT

Description
MARTe development tools
Readme MIT 23 MiB
2026-01-23 14:31:46 +01:00
Languages
Go 97.1%
CUE 2.7%
Makefile 0.2%