Fånga upp genvägar som agenter tar innan arbetet når dig.
Ett test hoppas över för att få grönt, ett fel döljs, en stub lämnas kvar eller en typkontroll tystas. Anti-slop kontrollerar varje ändring som en agent gör och skickar tillbaka den till utvecklaragenten med alla upptäckta problem.
- Testet hoppades översrc/checkout/coupon.test.ts:88
it.skip('rejects an expired coupon', …) - Felet fångades upp utan att visassrc/checkout/apply-coupon.ts:41
} catch {}
- ÅtgärdatTestet hoppades överAnti-slop
- ÅtgärdatFelet fångades upp utan att visasAnti-slop
Uppgiftsvyn är en återskapning av Coroid-portalen. Uppgiften, filerna och fynden i den är illustrativa.
- Regler
- 106
- Regelfamiljer
- 13
- Regler som blockerar som standard
- 44
- Befintliga fynd som blockerar en ändring
- 0
Det här letar funktionen efter
Reglerna är indelade i familjer. Varje regel blockerar, ger råd eller registrerar bara ett fynd. En ansvarig kan ändra detta för hela organisationen eller för ett enskilt projekt.
- Tester
- Tester som fokuseras eller hoppas över, borttagna tester, påståenden som tas bort eller försvagas, tester som inte kan misslyckas och omförsök som döljer instabila tester.
.only.skipexpect(true).toBe(true)
- Undertryckningar
- Nya avstängningar av lint, ignorerade typfel, typkonverteringar till any och kod som undantas från täckningsmätningen.
@ts-ignoreas anyeslint-disable
- Bygge och CI
- Teststeg som tas bort eller tillåts misslyckas, sänkta täckningsgränser, testkörningar som godkänns utan att några tester körs, överhoppade commit-krokar och byggresultat som checkas in.
continue-on-error: true--passWithNoTests
- Testunderlag
- En testkörning där inget kördes, färre tester än vid den senaste godkända körningen, en delvis genomförd körning som rapporteras som klar och cachade resultat som framställs som en ny körning.
Tests: 0 total--onlyChanged
- Produktionskod
- Platshållarimplementationer, felsökningskod, kommentarer som ”i en riktig implementation”, instruktioner avsedda för en person, testdata och produktionskod som importerar testkod.
throw new Error('Not implemented')debugger;
- Felhantering
- Fel som sväljs eller döljs bakom ett standardvärde, behörighetskontroller som ger åtkomst när de misslyckas och omförsök utan begränsning.
except: pass.catch(() => {})
- Säkerhet
- Hårdkodade hemligheter, inaktiverad TLS-verifiering, borttagna autentiseringsskydd, CORS med jokertecken och autentiseringsuppgifter samt SQL som sätts ihop av strängar.
rejectUnauthorized: falseverify=False
- Arkitektur
- Nya importcykler, importer över deklarerade gränser, duplicerade kodblock, kod som ändringen lämnat oanvänd och nya kopior av mönster som fasats ut.
- Beroenden
- En ändring i manifestet utan motsvarande låsfil, ett extra bibliotek för något ett befintligt bibliotek redan gör, versioner utan fast angivelse och uppgraderingar som specifikationen inte efterfrågar.
"latest"
- Cachelagring
- Cache-nycklar utan tenant, minnescachar som aldrig upphör att gälla och värden som anges vid byggtillfället men borde läsas när koden körs.
- Kommentarer
- Kommentarer som upprepar nästa rad, beskriver ändringen, uttrycker tvekan eller motsäger koden intill.
// Updated to// should work
- Ändringens omfattning
- Filer som ligger utanför det specifikationen berör, ändringar som bara gäller formatering och namnbyten som uppgiften inte kräver.
- Agentens arbetsförlopp
- Vad agenten gjorde under arbetets gång, till exempel att ta bort testet som misslyckades eller ändra ett förväntat värde till det som den misslyckade körningen skrev ut.
Bara sådant som ändringen tillför blockerar
De flesta repositories innehåller redan vissa av de här mönstren. Anti-slop sorterar varje fynd efter var det uppstod, så befintlig teknisk skuld inte fördröjer orelaterat arbete.
- Tillkommet
- Nytt i den här ändringen. Ett fynd från en blockerande regel skickar tillbaka ändringen till utvecklaragenten.
- Berört
- Fanns redan på en rad eller i en funktion som ändringen berör. Det registreras och åtgärdas när ändringsdisciplinen kräver det.
- Befintligt
- På andra ställen i repositoryt. Det registreras som teknisk skuld i Factory, där du kan skapa en uppgift för att åtgärda fynd från en viss regel.
Att flytta kod räknas inte som att tillföra den. Att kopiera kod gör det.
Du bestämmer hur långt en ändring får gå
Ändringsdisciplinen talar om för utvecklaragenten vad den får städa upp medan den arbetar.
- AvgränsadBara det som specifikationen kräver. Andra problem rapporteras, men åtgärdas inte.
- BalanseradStandardÅtgärdar också mindre problem på rader som ändringen ändå berör.
- ÅterställandeStädar också upp fynd i funktioner som ändringen redigerar.
Utvecklaragenten följer samma regler
Anti-slop är mer än ett omdöme i slutet. Agenten får reglerna medan den skriver ändringen och kan inte åsidosätta dem.
- Agenten börjar med din ändringsdisciplin och de mönster du har satt i karantän, vart och ett med en ersättning som ska användas i stället.
- Efter varje redigering får agenten se de snabba reglerna och en chans att åtgärda blockerande fynd innan QA körs.
- Agenter kan inte godkänna sina egna fynd. Om en agent säger att ett test är fel och ändrar det måste en granskare godkänna ändringen.
- En fil i repot,
.coroid/anti-slop.yml, kan lägga till regler och undanta genererade sökvägar. Filen läses från ändringens bas, så ändringen kan inte göra sina egna regler mindre strikta.
Se till att även agenterna du redan kör följer samma regler
Ingenjörer som använder egna kodningsagenter kan också använda organisationens regler.
- AGENTS.md-utdrag
- Ladda ner ett avsnitt till agenternas instruktioner med projektets ändringsdisciplin, mönster i karantän och viktigaste regler.
- Coroid MCP-server
anti_slop_rulesbeskriver den publicerade policyn ochanti_slop_scansöker igenom en branch i ett synkroniserat projekt. Båda är skrivskyddade.- Coroid Check för pull requests
- När pull request-kontroller är aktiverade körs samma kontroll på pull requests som utvecklarna öppnar i GitHub, och varje fynd markeras på den rad där det finns.
Testat på vår egen kod först
Coroid byggs av en person och hundra agenter. Därför kördes anti-slop på Coroids eget repo innan det kördes på någon annans.
En genomsökning av alla källkodsfiler
Vi skannade alla 11 536 källkodsfiler i Coroids repo som om en agent just hade skrivit dem. Skanningen hittade 6 mönster som reglerna felaktigt flaggade. Vi rättade till dem, och antalet blockerande fynd minskade från 5 366 till 2 253.
Det som fortfarande blockerar är sådant reglerna är avsedda att hitta, till exempel en kommentar i vår notifieringskod: ”I en riktig implementation skulle du hämta användarens FCM-token.”
Regler som bedöms av en modell
Två regler ber en modell bedöma en rad i taget: en defensiv kontroll av något som koden redan utesluter och en kommentar som motsäger koden intill. De ger bara råd. Av 600 kandidatrader från verkliga ändringar som har mergats flaggade de inga felaktigt, och de kostar högst 0,0015 US$ per skanning.
Aktivera det i kvalitetskontrollen
Ägare och administratörer kan aktivera anti-slop som standard för organisationen eller för ett enskilt projekt. Funktionen ingår från och med projektets nästa körning.
- Öppna Quality Control och välj standardinställningen för organisationen eller ett projekt.
- Aktivera anti-slop. Det lägger till fem förväntningar i policyn.
- Välj ändringsdisciplin och vilka grupper som ska blockera. Om du stänger av funktionen sparas inställningarna till nästa gång.
De fem förväntningar som läggs till
- Tester visar fortfarande att ändringen fungerar
- Inget ofärdigt eller enbart avsett för tester levereras
- Ingen ny strukturell skuld
- Ändringen håller sig inom ramarna och följer kodbasens stil
- Nya beroenden är verkliga och kommer från välrenommerade källor
- Organisationens standardinställning3 projekt följer den2 av 5
- WebbutikEgna inställningar4 av 5
- DokumentationswebbplatsFöljer standardinställningen2 av 5
- Fakturering APIFöljer standardinställningen2 av 5
- MobilappFöljer standardinställningen2 av 5
- Mot slarvSkickar tillbaka en ändring om den försämrar tester, döljer fel, skickar med platshållare eller ökar den strukturella tekniska skulden.
- EnhetstesterHittar och kör repots enhetstester vid varje ändring.
- Webbläsartester2 av 3Avviker från standardinställningenKör dina användarflöden i webbläsaren mot ändringen.
- ÖversättningarAvviker från standardinställningenKontrollerar att ändrade strängar är översatta och att platshållare och pluralformer stämmer överens.
- Kontroller av repositoryKör dina egna kommandon, till exempel för formatering, filstorlek, migreringar, integrationstester och säkerhetsskanningar.
- Noggrann QANoggrannQA samlar in underlag i realtid och skärmbilder utifrån specifikationen. När funktionen är av får arbetet ordinarie QA.