Runtime-fel av typen ”name not defined” har en särskild sorts grymhet. Appen kör fint i ett flöde, fallerar i ett annat, och stacktracen pekar någonstans som inte hjälper. Du fixar ett stavfel, och plötsligt dyker en annan odefinierad identifierare upp två filer bort.
Den här AI-prompten för runtime name errors är byggd för mjukvaruingenjörer som stirrar på ett intermittent NameError/ReferenceError, QA-ansvariga som kan reproducera ett fel men inte kan ringa in den felmatchade identifieraren, och konsulter som kliver in mitt under en incident för att snabbt stabilisera en skör kodbas. Resultatet är en forensisk defektlista kopplad till exakta rader/användningar, ett korrigerat kodutdrag (baserat enbart på det du har skickat in) och förebyggande steg du kan tillämpa direkt.
Vad gör den här AI-prompten och när ska du använda den?
| Vad den här prompten gör | När du ska använda den här prompten | Det här får du |
|---|---|---|
|
|
|
Hela AI-prompten: forensisk fixare för runtime-namnfel
Fyll i fälten nedan för att anpassa prompten efter dina behov.
| Variabel | Vad du ska ange | Anpassa prompten |
|---|---|---|
[PROGRAMMERINGSSPRAK] |
Ange vilket programmeringsspråk som används i kodsnutten. Det gör att analysen kan anpassas efter språkets syntax och körningsbeteende. Till exempel: "Python"
|
|
[FELMEDDELANDEN] |
Ange de exakta felmeddelanden som uppstår vid körning eller kompilering. Ta med all relevant information som kan hjälpa till att felsöka problemet. Till exempel: "NameError: name 'variableName' is not defined"
|
|
[KODSNUTT] |
Klistra in kodsnutten där felet eller det oväntade beteendet uppstår. Se till att alla relevanta rader finns med för att ge sammanhang. Till exempel: "def calculate_sum(a, b):
return a + b
result = calculate_summ(5, 10)"
|
|
[KONTEXT] |
Beskriv hur koden körs, inklusive startpunkt (entry point), körmiljö, versioner och eventuella relevanta inställningar. Till exempel: "Kör skriptet med Python 3.9.7 på en Windows 10-dator via kommandoraden."
|
|
[TIDSRAM] |
Ange hur brådskande det är eller vilken deadline som gäller för att lösa problemet. Det hjälper att prioritera analysen. Till exempel: "Inom de närmaste 24 timmarna för en åtgärd i produktion."
|
|
[VERSALER_MED_UNDERSCORE] |
Ange en konstant eller identifierare i versaler med understreck, enligt kodens namngivningskonventioner. Till exempel: "MAX_CONNECTIONS"
|
Proffstips för bättre resultat från AI-prompten
- Klistra in den fallerande stacktracen och det minsta körbara utdraget. Ta med feltexten, filnamnet och några rader ovanför och under den refererade raden. Om du kan, lägg även till den direkta anroparen. Ett tajt utdrag hjälper prompten att göra exakta korskontroller i stället för att gissa om saknad kontext.
- Ange språk och runtime-detaljer. Lägg till en rad som: ”Språk: Python 3.11” eller ”Node.js 18, TypeScript kompileras till JS.” Följ sedan upp med: ”Anta att dynamiskt runtime-beteende spelar roll; prioritera odefinierade namn, saknade attribut och skuggvariabler.” Det styr utredningen mot det felmönster du faktiskt ser.
- Inkludera fullständiga identifierarstavningar, inte omskrivningar. Sammanfatta inte med ”den kan inte hitta user-variabeln”. Klistra in exakta token: userId vs userid, user_ids vs userIds, Customer vs Customers. Ofta är ett extra underscore hela incidenten.
- Efter första svaret, tvinga fram en andra diff-pass. Fråga: ”Skapa nu en sida-vid-sida-lista över varje identifierare och dess varianter du hittade, grupperade efter likhet, och markera den mest sannolika kanoniska stavningen.” Det är extra effektivt när du misstänker camelCase/snake_case-drift mellan moduler.
- Använd avsnittet om förebyggande som åtgärdslista för ditt repo. När du har det korrigerade utdraget, följ upp med: ”Gör om förebyggande stegen till 5 konkreta förändringar jag kan implementera den här veckan (linter-regler, typkontroller, testfall), och säg vilka som hade fångat exakt det här stavfelet.” Då får du förbättringar som är kopplade till incidenten, inte generiska best practices.
Vanliga frågor
Backendutvecklare använder den här för att snabbt isolera den exakta identifierarmismatchen bakom NameError/undefined-variable-fel i dynamiska kodvägar. Fullstackutvecklare har nytta av den när en frontend-ReferenceError orsakas av en felstavad import, prop eller destrukturerad variabel som bara dyker upp i vissa UI-tillstånd. QA-ansvariga använder den när de kan reproducera en intermittent krasch och behöver en konkret lista med ”stavningar som inte matchar” att skicka tillbaka till utveckling. Incident responders och SRE-nära ingenjörer använder den i triage eftersom den fokuserar på sannolikt orsakande stavfel, inte generella refaktoreringar.
SaaS-bolag får värde när en liten namnglidning slår sönder ett faktureringsflöde, en webhook-handler eller ett bakgrundsjobb som inte körs ofta, och därför passerar vanlig testning. E-handelsbolag använder den när produktflöden, rabattlogik eller checkout-skript fallerar intermittent på grund av felmatchade fältnamn som cartTotal vs cardTotal. Byråer och utvecklingsstudios har nytta av den när de tar över kundkod med inkonsekventa namnkonventioner, där ”fungerar på min maskin” egentligen betyder ”fungerar i ett flöde”. Fintech- och betalningsteam använder den när runtime-attributfel dyker upp i integrationskod, där ett fel property-namn kan ändra beteendet tyst tills en specifik payload kommer in.
En typisk prompt som ”skriv en fix för det här kodfelet” fallerar eftersom den: saknar en systematisk identifierarinventering (så den missar nästan-lika stavningar), gör ingen korskontroll av definitioner mot användningar, ignorerar felmoder i dynamiska språk som skuggvariabler och saknade attribut, producerar spekulativ ”avsedd logik” i stället för ett minimalt korrigerat utdrag, och saknar gränsdragningar så modellen kan skriva om orelaterade delar av koden. Den här prompten är starkare eftersom den behandlar namngivning som bevis med exakt matchning och bara föreslår ändringar som rimligen förklarar de rapporterade runtime-symptomen.
Ja, anpassa den genom att lägga till ditt språk/runtime (”Python 3.12”, ”Node 20”, ”Ruby 3.3”), det exakta felmeddelandet och det minsta utdraget som innehåller den fallerande raden plus platsen där den definieras. Om felet är intermittent, ta med villkoren (”bara när featureFlagX är true” eller ”bara när payload-fält Y saknas”). Be sedan om en riktad följdfråga som: ”Lista varje identifierarvariant du hittade och rangordna de 3 mest sannolika stavfelen efter orsakspåverkan.” Du kan också be om en ”pausa och ställ frågor först”-pass om du misstänker att du saknar en viktig fil eller import.
Det största misstaget är att bara klistra in felraden utan platsen där den definieras; i stället för ”rad 84 kraschar”, inkludera var variabeln/funktionen/klassen deklareras och var den importeras. Ett annat vanligt fel är att ”korrigera” namn i beskrivningen men inte i den inklistrade koden (dåligt: ”det ska vara userId”, medan utdraget fortfarande visar userid och userID på olika ställen). Många utelämnar också runtime-kontexten (dåligt: ”JS-fel”, bra: ”Next.js, Node 18, server action anropad från edge runtime”), vilket ändrar vilka identifierare som finns i runtime. Slutligen gör avsaknaden av den exakta stacktrace-texten det svårare att prioritera vilken mismatch som faktiskt triggar kraschen.
Den här prompten är inte idealisk för breda refaktoreringar där du vill ha stilistisk konsekvens över hela kodbasen, eftersom den medvetet undviker formaterings- eller arkitekturdebatten. Den passar också dåligt om du inte kan dela något meningsfullt kodutdrag eller feloutput, eftersom den bara arbetar utifrån det du tillhandahåller och inte hittar på omgivande kod. Och om ditt problem främst är logiskt (fel algoritm, fel krav) behöver du en annan prompt som fokuserar på beteende, inte identifierarforensik.
Runtime-namnbuggar slösar timmar eftersom de gömmer sig mitt framför ögonen. Klistra in ditt utdrag i prompt-visaren, kör den forensiska skanningen och leverera den minsta säkra korrigeringen i stället för att jaga spöken.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.