# Toolstack – slohmaier Dev Process Complete open-source toolstack for ASPICE 4.0 and ISO 26262-compliant embedded development. --- ## Overview | Category | Tool | Notes | |-----------|------|-------| | Source Control | Gitea (self-hosted) | `tea` CLI for command line, VS Code integration | | Requirements | Doorstop (Markdown mode) | Requirements as `.md` with embedded PlantUML | | Architecture design | Doorstop + PlantUML | SA / SWA / SWD as `.md` with mapping via `links:` (ASPICE SYS.3 / SWE.2 / SWE.3) | | Diagrams | PlantUML | Embedded in Markdown, rendered by Gitea and VS Code | | MISRA | Cppcheck + MISRA addon | Free, deviation permits/records via Doorstop | | Coverage | gcov/lcov | Up to ASIL-B; MCDC-Star for ASIL-C/D | | Unit tests | CppUTest or Google Test | Project-dependent | | Static analysis | Cppcheck, clang-tidy | Cppcheck also for MISRA | | Build | SCons, CMake | Project-dependent | | Compiler | GCC ARM | Own qualification; Ferrocene for Rust | | CI | Gitea Actions | Pipeline in the monorepo under `.gitea/workflows/` | | Open-source analysis | ScanCode, FOSSology | License compliance | | AI assistance | Continue.dev + Ollama | VS Code extension, local, no cloud privacy issue | | Document export | pandoc | Markdown to PDF | | Editor | VS Code | Primary editor for everything | --- ## Source Control: Gitea Gitea is a self-hosted Git platform. Lightweight, runs on any hardware. - Web UI for PRs, reviews, issues - Gitea Actions for CI/CD (compatible with GitHub Actions syntax) - PlantUML rendering in Markdown (via PlantUML server) - `tea` CLI for command-line workflows - Branch protection and approval workflows Setup guide: `gitea-aspice-setup.md` --- ## Requirements: Doorstop (Markdown mode) Doorstop manages requirements as `.md` files with YAML frontmatter. No proprietary format — everything readable in any editor. **Advantages:** - Requirements are Markdown, versioned in Git - PlantUML diagrams embedded directly in the requirement - Traceability check via CLI: `doorstop check` - Report generation: `doorstop publish all docs/traceability/` - Gitea renders everything natively (Markdown + PlantUML) **Requirement format:** ```markdown --- active: true level: 1.0 links: - SYS-001: abc123 --- # SWE-001: Title Description with embedded PlantUML. ``` --- ## Architecture design: Doorstop + PlantUML Architecture elements are also Doorstop documents, only with their own prefixes: | Prefix | Layer | ASPICE | Directory | |--------|--------------------------------|--------|--------------| | SA | System Architectural Design | SYS.3 | `arch/sys/` | | SWA | Software Architectural Design | SWE.2 | `arch/swe/` | | SWD | Software Detailed Design | SWE.3 | `arch/swd/` | **Mapping to requirements** via `links:` in the YAML frontmatter — identical to requirements linking. Doorstop verifies in both directions: no orphan requirements, no orphan architecture elements. **Verification in CI:** ```bash doorstop check # bidirectional, fails on gaps doorstop publish all docs/traceability/ # generate traceability matrix ``` Templates under `dev-process/templates/`: - `SA-template.md` — System Architecture Element - `SWA-template.md` — Software Architecture Element SWD is only mandatory for ASIL-C/D; for QM/A/B, code + header comments are sufficient. --- ## Diagrams: PlantUML PlantUML diagrams are embedded directly in Markdown. No separate tool, no export. **Rendering:** - Gitea: automatically via the PlantUML server (configuration in `app.ini`) - VS Code: PlantUML extension (jebbs.plantuml) for live preview - Export: pandoc with PlantUML filter for PDF --- ## MISRA: Cppcheck + MISRA addon Cppcheck with the MISRA addon checks C code for MISRA compliance. Free, runs in the CI pipeline. ```bash cppcheck --addon=misra --error-exitcode=1 src/ ``` Deviation permits and records are kept as Markdown files in the `misra/` directory. Templates under `dev-process/templates/`. --- ## Coverage | ASIL | Tool | Method | |------|-----------|-------------------------------| | A–B | gcov/lcov | Statement + branch coverage | | C–D | MCDC-Star | MC/DC coverage | Coverage reports are generated in CI and stored under `tests/results/`. --- ## Unit tests CppUTest or Google Test, depending on project requirements. - Tests under `tests/unit/` - Results under `tests/results/` - CI runs tests on every push --- ## Static analysis | Tool | Purpose | |------------|----------------------------------------| | Cppcheck | General static analysis + MISRA | | clang-tidy | Modernisation, style, bugs | Both run in the CI pipeline. --- ## Build: SCons / CMake Either SCons or CMake, depending on the project. Cross-compilation for ARM targets. --- ## Compiler | Compiler | Language | Qualification | |-----------|----------|--------------------------------------------| | GCC ARM | C/C++ | Own qualification per ISO 26262 | | Ferrocene | Rust | Certified Rust compiler for safety | --- ## CI: Gitea Actions Pipeline file: `.gitea/workflows/validate.yml` Steps on every push/PR: 1. Doorstop consistency check 2. MISRA check 3. Unit tests 4. Coverage 5. Traceability report generation Syntax compatible with GitHub Actions. --- ## Open-source analysis | Tool | Purpose | |-----------|----------------------------------| | ScanCode | License detection in source code | | FOSSology | License compliance analysis | Important for automotive: license compliance must be documented. --- ## AI assistance: Continue.dev + Ollama Continue.dev as a VS Code extension with Ollama as a local backend. - No cloud service, all data stays local - No privacy issue with customer data - Assistance with code writing, reviews, documentation --- ## Document export: pandoc ```bash pandoc document.md -o document.pdf --pdf-engine=xelatex ``` All documents in Markdown, export to PDF for customers and audits. --- ## VS Code extensions | Extension | Purpose | |-----------------------------|--------------------------| | PlantUML (jebbs.plantuml) | PlantUML preview | | Markdown All in One | Markdown editing | | GitLens | Git history, blame | | YAML (redhat.vscode-yaml) | YAML validation | | Continue.dev | AI with Ollama |