CodeGuard

Pre-Commit-Hooks

CodeGuard schon lokal vor dem Commit laufen lassen.

Pre-Commit-Hooks

CodeGuard im CI ist Pflicht. CodeGuard lokal vor dem Commit ist Kür - spart aber Iterations-Zeit, weil ihr nicht erst auf den CI-Build warten müsst um zu sehen ob die Konvention eingehalten ist.

Mit Git-Hooks direkt

.git/hooks/pre-commit:

#!/bin/sh
set -e

# Schneller Check: nur Validierung der Regeln
codeguard validate || {
    echo "❌ CodeGuard rules invalid. Fix .codeguard/rules/ before committing."
    exit 1
}

# Optional: volle Analyse, nur Errors
codeguard analyze . --fail-on error --output console || {
    echo ""
    echo "❌ CodeGuard found blocking issues."
    echo "Run 'codeguard analyze .' for details, or commit with --no-verify if you really want."
    exit 1
}

chmod +x .git/hooks/pre-commit.

Auf Windows: dasselbe Skript funktioniert mit Git for Windows (Git Bash).

Mit pre-commit (das Python-Tool)

Wenn ihr pre-commit sowieso nutzt, .pre-commit-config.yaml:

repos:
  - repo: local
    hooks:
      - id: codeguard-validate
        name: CodeGuard validate rules
        entry: codeguard validate
        language: system
        pass_filenames: false
        files: ^\.codeguard/

      - id: codeguard-analyze
        name: CodeGuard analyze
        entry: codeguard analyze . --fail-on error
        language: system
        pass_filenames: false
        types: [csharp]

Mit Husky (Node.js)

Für JS/TS-Repos die zufällig auch C# haben, oder gemischte Teams:

.husky/pre-commit:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

codeguard analyze . --fail-on error

Hook nur bei C#-Änderungen ausführen

Eine volle Analyse vor jedem Commit kann auf großen Solutions länger dauern. Spar dir den Lauf, wenn der Commit keine .cs-Files betrifft:

#!/bin/sh
CHANGED=$(git diff --cached --name-only --diff-filter=ACMR -- '*.cs')
if [ -z "$CHANGED" ]; then
    exit 0
fi
codeguard analyze MySolution.sln --fail-on error

Empfohlene Strategie

Schritt Hook
pre-commit codeguard validate (eine Sekunde)
pre-push codeguard analyze . --fail-on error (warm Cache: ein paar Sekunden)
CI codeguard analyze . --fail-on error (immer)

So sind die Hooks im Hot Path schnell und ihr fangt grobe Patzer ab, ohne dass jeder Commit fünfzehn Sekunden dauert.