Files
dev-process/toolstack/toolstack.md
T
Stefan Lohmaier 247b8311f3 refactor(i18n): rename vorlagen/ -> templates/, *-vorlage -> *-template
Final German naming cleanup in dev-process:
- vorlagen/                            -> templates/
- vorlagen-word/                       -> templates-word/
- tools/generate_word_vorlagen.sh      -> tools/generate_word_templates.sh
- *-vorlage.md / *-vorlage.docx        -> *-template.md / *-template.docx
- Review-Protokoll-vorlage.*           -> Review-Minutes-template.*
- angebot-vorlage.*                    -> quote-template.*
- angebot-beispiel.html                -> quote-example.html

All references in README.md, toolstack/toolstack.md, build_word_template.py,
and generate_word_templates.sh updated. The master Word style template
(slohmaier-doc-template.docx) was already English-named.

The dev-process repo is now fully English in both content and structure.
2026-05-12 12:09:06 -07:00

223 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 |
|------|-----------|-------------------------------|
| AB | gcov/lcov | Statement + branch coverage |
| CD | 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 |