# 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           |
