Zum Hauptinhalt springen
ai-slop/hardcoded-idmanuelle Behebung

Hartcodierte ID.

Eine Provider-, Tenant- oder Projekt-ID, die als String-Literal in den Quellcode kopiert wurde: eine Stripe-Price-ID, eine Org-ID, ein API-Key. Sie zementiert eine einzige Umgebung im Code.

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.

hardcoded-id.ts
✗ Beanstandet
const PRO_PLAN_PRICE_ID = 'price_1PqR8sKx2Lm9TzQa'

export async function startCheckout(customerId: string) {
  return stripe.checkout.sessions.create({
    customer: customerId,
    line_items: [{ price: PRO_PLAN_PRICE_ID, quantity: 1 }],
  })
}
Warum das anschlägt

Deterministischer Zeilenabgleich: beanstandet in Zeilen mit einem ID-artigen Schlüssel (`api_key`, `client_id`, `price_id`, `tenant_id`, `token`, `secret` und ähnliche) quotierte Literale in Form von Provider-IDs (`price_…`, `cus_…`, `sk_…`), UUIDs oder langen alphanumerischen Strings mit gemischter Groß-/Kleinschreibung.

hardcoded-id.ts
✓ Sauber
const PRO_PLAN_PRICE_ID = config.stripe.proPlanPriceId

export async function startCheckout(customerId: string) {
  return stripe.checkout.sessions.create({
    customer: customerId,
    line_items: [{ price: PRO_PLAN_PRICE_ID, quantity: 1 }],
  })
}
Was sich geändert hat

Verlagere Provider-IDs, Tenant-IDs, Price-IDs und Keys in Umgebungsvariablen oder ein typisiertes Konfigurationsmodul.

Agenten kopieren IDs aus dem Prompt, einem Dashboard oder einem Log direkt in den Code, um ein funktionierendes Beispiel zu bekommen. Das Literal geht dann in jede Umgebung.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/hardcoded-id

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: beanstandet in Zeilen mit einem ID-artigen Schlüssel (`api_key`, `client_id`, `price_id`, `tenant_id`, `token`, `secret` und ähnliche) quotierte Literale in Form von Provider-IDs (`price_…`, `cus_…`, `sk_…`), UUIDs oder langen alphanumerischen Strings mit gemischter Groß-/Kleinschreibung.

Legitimer Code, der NICHT beanstandet wird

Zeilen, die aus der Umgebung lesen (`process.env`, `os.environ`, `getenv`), Platzhalter wie `changeme` oder `your_…`, Namen von Umgebungsvariablen, lesbare Slugs, Dokumentationskontexte, Kommentare, Migrationen und Pfade außerhalb des Produktivcodes werden nicht beanstandet.

Belege

Eingeführt in aislop v0.9.5 zusammen mit hardcoded-url; seit v0.9.6 werden Namen von Umgebungsvariablen, lesbare Slugs und Migrationsdateien nicht mehr beanstandet.