Zum Hauptinhalt springen
ai-slop/go-library-panicmanuelle Behebung

Panic in Library-Code.

Ein `panic()`-Aufruf in einem Go-Package außer main. Er wickelt die Goroutine des Aufrufers ab, statt einen Fehler zurückzugeben, den der Aufrufer behandeln könnte.

Beanstandete und saubere Form.

Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.

go-library-panic.go
✗ Beanstandet
package config

func Load(path string) Config {
	data, err := os.ReadFile(path)
	if err != nil {
		panic(err)
	}
	return parse(data)
}
Warum das anschlägt

Deterministischer Zeilenabgleich: beanstandet `panic(` in `.go`-Dateien außerhalb von Tests, deren Package nicht `main` ist.

go-library-panic.go
✓ Sauber
package config

func Load(path string) (Config, error) {
	data, err := os.ReadFile(path)
	if err != nil {
		return Config{}, fmt.Errorf("read config %s: %w", path, err)
	}
	return parse(data), nil
}
Was sich geändert hat

Gib einen Fehler zurück (`fmt.Errorf("...: %w", err)`) und lass den Aufrufer entscheiden. Reserviere `panic` für wirklich unmögliche Zustände und kennzeichne diese mit einem Kommentar.

Agenten behandeln `panic` wie `throw` aus anderen Sprachen und nutzen es für gewöhnliche Fehler. In Go sind Fehler in Libraries Werte, über die der Aufrufer entscheidet.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/go-library-panic

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: beanstandet `panic(` in `.go`-Dateien außerhalb von Tests, deren Package nicht `main` ist.

Legitimer Code, der NICHT beanstandet wird

`package main`, `_test.go`-Dateien, Packages, deren Name auf `test` endet, Testhilfe-Pfade wie `testdata/` und `testutil/`, Panics mit einem Kommentar in den drei Zeilen darüber sowie kurze String-Panics direkt unter einem `if x == nil`-Guard werden nicht beanstandet.

Belege

Erschienen in aislop v0.8.0 mit den Go-Detektoren; dasselbe Release nahm nach einer Validierung an Open-Source-Projekten Nil-Check-Vorbedingungen aus.