Zum Hauptinhalt springen

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.

PhaseWas passiertWerkzeug
securityPfadregeln (erlaubter Bereich, geschützte Dateien) und Inhaltsregeln (z. B. fatalError, try!, as!, Secrets, Passwörter im Log)CodeGuard selbst
platformStatische Prüfung von App- und Framework-Targets: Privacy Manifest, Purpose-Strings, App Transport Security, EntitlementsCodeGuard selbst
formatFormatprüfungswift-format
swiftlintLint mit der .swiftlint.yml des Projektsswiftlint
swiftlint_metricsVerwaltete Metrikregeln (Zeilenlänge, Komplexität …) aus der CodeGuard-Konfigurationswiftlint
compileBuild für jede erkannte und verfügbare Apple-Plattformswift build bzw. xcodebuild
testsTests nativ auf macOS und auf Wegwerf-Simulatorenswift 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 test und xcodebuild fü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/xcrun oder unterhalb vertrauenswürdiger Verzeichnisse aufgelöst, nie über PATH.
  • 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​