Zum Hauptinhalt springen
ai-slop/hidden-fallbackmanuelle Behebung

Versteckter Fallback.

Ein harmlos wirkender Standardwert (`0`, `[]`, `{ ok: true }`), der für fehlende Eingaben oder einen fehlgeschlagenen Aufruf einspringt. Aus einem lauten Fehler wird eine leise falsche Antwort.

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.

hidden-fallback.ts
✗ Beanstandet
export async function chargeCustomer(order: Order) {
  try {
    return await payments.charge(order.total, order.customerId)
  } catch {
    return { ok: true }
  }
}
Warum das anschlägt

Deterministischer AST-Abgleich für JS/TS: beanstandet `||`/`??`-Defaults und `Math.max`/`Math.min`-Clamps auf Fehlerzustandswerten, wenn der Text in der Nähe einen Fallback oder einen fehlenden, fehlgeschlagenen oder unmöglichen Zustand erwähnt, sowie Catch-Blöcke, die einen sicheren Standardwert oder ein erfolgsartiges Objekt zurückgeben, ohne den Fehler sichtbar zu machen.

hidden-fallback.ts
✓ Sauber
export async function chargeCustomer(order: Order): Promise<ChargeResult> {
  try {
    const receipt = await payments.charge(order.total, order.customerId)
    return { ok: true, receipt }
  } catch (error) {
    return { ok: false, error }
  }
}
Was sich geändert hat

Behandle die fehlende Eingabe explizit: verlange den Wert, gib einen typisierten Fehler zurück oder benenne die konservative Schätzung, damit Aufrufer wissen, dass sie nicht maßgeblich ist.

Agenten bevorzugen Code, der nie wirft, und überdecken fehlende oder fehlgeschlagene Zustände deshalb mit einem Wert, den der Aufrufer nicht von einem echten Ergebnis unterscheiden kann.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/hidden-fallback

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer AST-Abgleich für JS/TS: beanstandet `||`/`??`-Defaults und `Math.max`/`Math.min`-Clamps auf Fehlerzustandswerten, wenn der Text in der Nähe einen Fallback oder einen fehlenden, fehlgeschlagenen oder unmöglichen Zustand erwähnt, sowie Catch-Blöcke, die einen sicheren Standardwert oder ein erfolgsartiges Objekt zurückgeben, ohne den Fehler sichtbar zu machen.

Legitimer Code, der NICHT beanstandet wird

`process.env`-Defaults, String-Defaults, die keine Statuswörter sind, Catch-Blöcke, die den abgefangenen Fehler loggen, werfen oder zurückgeben, und Pfade außerhalb des Produktivcodes werden nicht beanstandet.

Belege

Eingeführt in aislop v0.13.0 für JS/TS und in v0.13.1 kalibriert.