Co to znamená
Některá pravidla strojový výraz skutečně nemají. Původ toho, co bylo napsáno, je jedním z nich: žádný program v tomto stromě nepozná, odkud odstavec zdroje pochází. Zda si mechanismus zaslouží svou cenu, je další: to je úsudek a kontrola, která by jej předstírala, by byla horší než žádná.
Před touto zárukou seděla tato pravidla v rule-proof-baseline.txt, seznamu blokujících pravidel, která nepojmenovávala žádný důkaz — vedle pravidel, na která se jen nedostalo. Obě skupiny byly nerozlišitelné, což je horší selhání z dvojice: seznam šlo číst jen jako práci, která zbývá, a polovina z ní by nikdy nebyla hotova.
Pravidlo nyní může ve vlastním front matter říct, že je nic spustitelného nevyjádří, tím, že nese reviewed_because: s důvodem. To je deklarace, kterou může recenzent auditovat, což řádek v souboru dluhu není.
Princip
Důvod je celá deklarace. Vedle něj záměrně není žádný příznak — příznak lze nastavit, ale důvod nelze nastavit, aniž by se napsal — takže výjimka je vždy věta, kterou musel někdo obhájit. Blok s jedním slovem a bez důvodu není deklarace; propadne na unproven, což je přesně to zjištění, které měl nahradit.
Dvě vlastnosti brání tomu, aby se z toho stala cesta ven:
Spustitelný důkaz vždy vyhrává. Režim určuje to, co blok jmenuje, v tomto pořadí: validátor z něj dělá dispatched, test gated a teprve potom se čte důvod. Pravidlo, které získá případ, přestane být review-enforced, ať je důvod stále přítomen, nebo ne, takže deklarace nemůže přežít vlastní potřebu.
Počítá se odděleně, všude. rule-proof-check vypíše každé jako NOTE při každém běhu, nikdy jako prošlé a nikdy jako selhání, a uvede jejich počet vedle změřeného součtu. Typovaná zpráva je počítá v review_only, nikdy v passing a nikdy v named_proof. Když toto číslo roste, správa slábne, a žádný souhrn v tomto repozitáři je nesčítá do celku, který by to skryl.
Jak to vidět
scripts/ci/rule-proof-check every declared exemption, with the rule that declares it
majordomus rules list review-enforced: <the reason>, in the last columnCo nepokrývá
Zda je důvod dobrý důvod. To nemůže rozhodnout nic a předstírat opak by byla falešná zelená, které tento mechanismus brání. Tvar zajišťuje, že důvod existuje, je připojen k pravidlu, které omlouvá, a čte jej každý, kdo změnu posuzuje — výjimka je viditelná a připsatelná, ne řádek v seznamu.
Také nebrání růstu čísla. Repozitář by mohl deklarovat každé pravidlo jako vynucované revizí a tato kontrola by prošla. Zaručuje, že je to hlasité: počet se vypíše při každém běhu a počítá se zvlášť od každého pravidla, které má kontrolu, takže růst je číslo, na které se někdo musí podívat, ne ticho.
Proč existuje
Protože předchozí mechanismus nedokázal rozlišit dvě různé věci. rule-proof-baseline.txt se označoval za „blokující pravidla, která nejmenují žádný spustitelný důkaz: dnes vynucována revizí“, a u čtyř z deseti položek neexistoval den, kdy by to přestalo platit. Seznam, který míchá tohle nikdo nedokáže zautomatizovat s nikdo se k tomu nedostal, činí druhé neviditelným a první vypadá jako nedbalost.
Co to dokazuje
test/cases/125_rule_proof.sh: pravidlo ve fixture deklaruje důvod a hlásí se jako reviewed, ne jako selhání; totéž pravidlo bez důvodu loader odmítne; pravidlo deklarující validátor i důvod se odmítne jako rozpor; a pravidlo, které získá případ, se hlásí jako hlídané, s důvodem stále na místě.