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.

Pravidlo vynucované hookem, který nikdy neběží

Existuje každý artefakt vynucování — pravidlo, skript, test — a žádná cesta je nespojuje, takže kontrola je fikce.

→ našlo pravidlo, o kterém všichni věřili, že se vynucuje, a které nikdy nic nevyvolalo

cena, když k tomu dojde
vysoká
jak často
běžné

Okamžik

Repozitář tvrdí, že pravidlo je vynucováno. Pravidlo je zapsáno, skript, který je kontroluje, existuje, dokonce je i test pro skript. Nic jej nevolá. Nikdy nic neodmítl a nikdo si nevšiml, protože existuje všechno, co by vynucování předvedlo, kromě samotného vynucování.

Proč k tomu dochází

Vynucování je řetězec — pravidlo, validátor, dispatch, návratový kód, test, CI — a může být přítomen každý článek kromě jednoho. Každý článek přidává jiná změna v jinou dobu a žádný jediný artefakt celý řetězec nepředstavuje, takže nelze nic zkontrolovat a chybějící článek najít. V materiálu, z něhož byl tento nástroj vydestilován, bylo nalezeno sedmnáct takových případů.

Proč to lepší model nevyřeší

V tomto selhání není žádný model vůbec. Je to strukturální mezera mezi věcmi, které lidé napsali, a je viditelná jen pro něco, co prochází řetězec z obou konců.

Co to stojí

Nezasloužená jistota, která je horší než vědět, že kontrolu nemáte: tým přestane porušení hlídat, protože je „řeší“ kontrola, a porušení se hromadí nepozorovaně, dokud něco nevynutí audit.

Co Majordomus dělá

Pravidlo, které nástroj vynucuje, deklaruje svůj validátor, příkazy, které ho rozesílají, návratový kód, který porušení vyvolá, tvrzení, za nimiž stojí, a testy, které ho dokazují. Nic nevybírá kontroly ručně: dispatcher čte deklarovaná pravidla, takže pravidlo tam přidané běží od té chvíle, a pravidlo, jehož validátor neexistuje, je hlášené selhání, nikoli tiché přeskočení. doctor prochází řetězec v obou směrech — selže i validátor, který nedeklaruje žádné pravidlo — a sesouhlasí seznam vynucování v politice s hooky, které ho jmenují, včetně toho, zda návratový kód přežije.

Před a po

before   rule: "enforced by pre-commit"    hook: absent     result: green, always

after    $ majordomus doctor
         FAIL wiring  doctor-on-commit — declared in policy, no pre-commit hook invokes it
                      [reproduce: majordomus doctrine status]

Co nedělá

Srovnává, co tento repozitář deklaruje, s tím, co tento repozitář provozuje. Nemůže vědět, že pravidlo má existovat, a pravidlo, které poctivě říká, že ho nikdo nevynucuje, je stav úspěchu, ne selhání.

Jak to vypadá

Konkrétní situace, jedna pro každé publikum. Každá je deklarována v záhlaví okamžiku, takže stav před a po jsou data, ne próza, od které by se stránka mohla odchýlit.

  1. Hook, který nikdo nenainstaloval platform-team

    před
    Kontrola před commitem je zdokumentována, commitnuta a nikdy nenainstalována v ničím klonu, takže zastavila přesně nic.
    po
    `doctor` porovnává deklarované vynucování s hookem, který jej pojmenovává, a selže, když cesta chybí, není spustitelná nebo není volána.
  2. Kontrola, jejíž výsledek byl zahozen enterprise

    před
    CI spouští kontrolu uvnitř shellové roury, která spolkne její návratový kód; roura je zelená, ať kontrola říká cokoli.
    po
    Smíření kontroluje, že se návratový kód předává dál, nejen že se příkaz vyskytuje.
  3. Konvence, kterou vynucuje jen review open-source-maintainer

    před
    Konvence se nazývá pravidlem a její vynucování je to, že si maintainer všimne.
    po
    Pravidlo deklaruje, zda jej nástroj vynucuje, nebo nikdo, takže čestně poradní pravidlo je takto označeno.

Jak to poznáte

Pozorovatelné příznaky, které tento okamžik deklaruje. Jsou dotazníkem na indexu a vstupem pro majordomus why diagnose; nic jiného je nedefinuje.

  • Pravidlo je popsáno jako vynucené a nikdo nikdy neviděl, že by cokoli zastavilo. believed-enforced
  • Kontrolní skript existuje na disku a nic o něm není známo, že by jej volalo. hook-exists-unwired
  • Kontrola běží a její exit kód zahodí to, co ji spouští. exit-code-swallowed

Kde to v nástroji najdete

Vše níže je načteno z vlastního záhlaví tohoto okamžiku a ověřeno proti repozitáři. Neexistující název by neprošel validací.

příkazy, které na to odpovídají

schopnosti spustitelného souboru, které na to odpovídají

co dohlíží — odvozeno z tvrzení níže

tvrzení, která tuto stránku podpírají, a důkazy za každým z nich

pravidla, která jej řídí

  • majordomus.enforcement-wiring
  • majordomus.doctrine-wiring-integrity
  • project.rule-is-a-doctrine
  • majordomus.command-surface

případy užití, které ukazují cestu ven

Pokud vám tohle zní povědomě, další také

Co tento okamžik pojmenovává, co pojmenovává jeho a co sdílí jeho oblast, publikum nebo štítky. Druhé a třetí je odvozeno; zapsáno je jen první.

Všech 38 a jak souvisejí s nástrojem →

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