CodeGuard
CodeGuard (codeguard) ist ein Kommandozeilenwerkzeug für macOS, das Swift-Projekte read-only prüft. Es liest Konfiguration, Pfade und Git-Änderungen, ruft externe Prüfwerkzeuge auf und schreibt das Ergebnis als Text-, JSON- oder SARIF-Bericht. Das Projekt selbst verändert es nie.
Diese Hilfe beschreibt codeguard 0.3.5.
Was CodeGuard prüft
Ein Prüflauf besteht aus Phasen. Welche davon laufen, hängt vom Kommando, von der Konfiguration und vom Projekt ab.
| Phase | Was passiert | Werkzeug |
|---|---|---|
security | Pfadregeln (erlaubter Bereich, geschützte Dateien) und Inhaltsregeln (z. B. fatalError, try!, as!, Secrets, Passwörter im Log) | CodeGuard selbst |
platform | Statische Prüfung von App- und Framework-Targets: Privacy Manifest, Purpose-Strings, App Transport Security, Entitlements | CodeGuard selbst |
format | Formatprüfung | swift-format |
swiftlint | Lint mit der .swiftlint.yml des Projekts | swiftlint |
swiftlint_metrics | Verwaltete Metrikregeln (Zeilenlänge, Komplexität …) aus der CodeGuard-Konfiguration | swiftlint |
compile | Build für jede erkannte und verfügbare Apple-Plattform | swift build bzw. xcodebuild |
tests | Tests nativ auf macOS und auf Wegwerf-Simulatoren | swift test bzw. xcodebuild test |
Die Einzelheiten stehen unter Prüfungen und Regeln.
Was CodeGuard zusichert
- Kein Schreiben in das Projekt. Geschrieben werden nur ein angeforderter Bericht (
--output), der geräte-lokale Trust-Store mit Audit-Log und bei Simulator-Tests Wegwerf-Simulatoren. Xcode-Builds laufen auf einer Kopie des Projekts. - Kein Netzwerk. Builds laufen offline. Swift-Pakete mit Remote-Abhängigkeiten lassen sich deshalb derzeit nicht bauen (Exit 3, siehe Häufige Fragen).
- Kein Projektcode ohne Freigabe.
swift build,swift testundxcodebuildführen Code des Projekts aus (Manifest, Plugins, Build-Einstellungen, Tests). Sie starten nur mit einem Trust-Ticket oder, in der CI, in einer attestierten, isolierten Umgebung. - Werkzeuge nur aus verifizierten Pfaden. Externe Werkzeuge werden über
xcode-select/xcrunoder unterhalb vertrauenswürdiger Verzeichnisse aufgelöst, nie überPATH. - Der Exit-Code ist Vertrag. Er ist in allen Ausgabeformaten gleich und lässt sich in Skripten und Pipelines auswerten.
Plattformen
CodeGuard baut für macOS, iOS/iPadOS, watchOS, tvOS und visionOS, und zwar gegen die Simulator-SDKs plus natives macOS. Es gibt keinen Gerätebuild, kein Mac Catalyst, kein DriverKit und kein Linux.
Aufbau dieser Hilfe
- Erste Schritte: Voraussetzungen, Installation, erster Lauf
- Kommandos und Parameter: alle Kommandos, globalen Optionen und Exit-Codes
- Prüfungen und Regeln: jede Phase und jede Regel-ID
- Projektkonfiguration:
.codeguard.ymlmit allen Schlüsseln - Organisationsrichtlinie:
policy.ymlfür Administratoren - Konfigurationsbeispiele: macOS, iOS, tvOS, watchOS und Swift Packages
- Trust und Sicherheit: Projektvertrauen, Audit-Log, Simulatoren
- Manueller Einsatz: CodeGuard im Alltag auf dem Entwicklerrechner
- CI mit GitHub Actions und CI mit GitLab
- Berichte lesen: Text, JSON und SARIF an echten Beispielen
- Häufige Fragen: typische Fehlerbilder und ihre Lösung