Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

O tom, zda porušení zastaví příkaz, rozhoduje třída doktríny, ne štítek vedle ní

Existují dvě třídy. blocking znamená, že porušení ukončí příkaz nenulovým kódem; advisory znamená, že se porušení ohlásí a příkaz přesto uspěje. Třída se čte v době dispatche a určuje, kam nález směřuje, takže je to mechanismus, ne štítek.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Test změní aktuálnost checkpointu z poradní na blokující v kopii vendorovaného souboru s pravidlem a ověří, že návratový kód kontroly se změní z 0 na 10. Existují dvě třídy a žádná výjimka.

Co to znamená

Existují dvě třídy. blocking znamená, že porušení ukončí příkaz nenulovým exit kódem; advisory znamená, že porušení je nahlášeno a příkaz přesto uspěje. Třída se čte v okamžiku dispatche a určuje, kam nález půjde, takže je to mechanismus, ne štítek.

Princip

Validátor nikdy nevolá mj_fail přímo. Volá mj_doctrine_fail, který čte MJ_DOCTRINE_CLASS — nastavené dispatcherem z registru — a vydává FAIL pro blokující doktrínu a WARN pro poradní. Pouze FAIL a DRIFT zvyšují čítač, který příkaz promění v svůj návratový kód. Neznámá třída není ani jedno: je to chyba konfigurace, hlásí se jako taková a selže uzavřeně, místo aby se výchozně chovala jako poradní.

watch je jediný příkaz, který toto přebíjí, a to záměrně. Nikdy neblokuje práci — hlásí, co se pohnulo, a končí kódem 11, aby řekl, že něco našel — takže pod watch je každá odchylka drift, včetně doporučujících.

Jak to vidět

majordomus check                       # WARN checkpoint  … 40m ago, interval 15m   → exit 0
# change class: advisory to class: blocking for majordomus.checkpoint-freshness
majordomus check                       # FAIL checkpoint  … 40m ago, interval 15m   → exit 10

test/cases/17_doctrine_enforcement.sh provede přesně tuto úpravu v jednorázové kopii nástroje a ověří, že se změní návratový kód.

Co nepokrývá

Třída říká, co porušení stojí, ne jak závažný je podkladový problém. Neexistuje žebříček závažnosti a jeho přidání by znamenalo přidat úroveň, která neblokuje ani nestojí za hlášení.

Proč existuje

Systémy vynucování mají tendenci sklouznout ke střednímu nastavení, kde je pravidlo nominálně vynucováno a nikdy nic neselže. Dvě třídy to znemožňují vyjádřit: pravidlo buď práci zastaví, nebo ne, a registr říká které, jedním slovem, které kód čte.

Detail vykreslený z docs/claims/doctrine-class-decides.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    O tom, zda porušení zastaví příkaz, rozhoduje třída doktríny, ne štítek vedle ní

    Vzniklo na Doktríně, Politice.

  2. 2 · kanonické tvrzení

    doctrine-class-decidesdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/DOCTRINE.md

  3. 3 · implementace

    lib/doctrine.sh · majordomus doctrine

  4. 4 · test a scénáře

    Test: test/cases/17_doctrine_enforcement.sh

    Provedeno v Dokažte, že je pravidlo skutečně vynucováno, nejen zapsáno, Kontrolujte CI samotným nástrojem s návratovým kódem, který je smlouvou.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 17_doctrine_enforcement

Kde se toto tvrzení používá

Související tvrzení stejná implementace

Okamžiky, na které to odpovídá

Prohledává názvy a popisy všech stránek, které tento web publikuje.