一支檢查器上線之後如果一直是綠燈,只有兩種可能:東西真的沒壞,或者它根本沒在看。
這兩種在畫面上長得一模一樣。
我們怎麼發現的
那支程式負責掃設計 token 有沒有被裸寫成十六進位色碼。寫完當天跑,綠燈。之後每天跑,綠燈。兩週後有人手動翻到一個明顯的裸寫色碼,才回頭看它為什麼沒抓到 —— 匹配用的正則少了一個字元類別,掃描範圍解析出來是空清單。它每天都在認真地掃零個檔案,然後回報通過。
損失不是那兩週,是那兩週裡我們以為這件事有人在看,所以沒有再用眼睛看。
修法不是把正則修好
修好正則只解決這一次。真正的修法是:每一支檢查器都必須附一個會讓它失敗的輸入。
我們現在的每一支驗證程式都有一個 --selftest:它拿一份刻意做壞的假資料餵進去,如果檢查器沒有報錯,--selftest 自己退出碼 1。
於是綠燈開始有意義了。它現在說的是「我看了,而且我證明過我看得見」。
這件事不限於程式
同一個形狀在別的地方也會出現。
一份設計規範如果沒有「誤用範例」,它就只是一疊建議 —— 沒有人能判斷手上這張圖算不算違反。一個交接文件如果沒有人照著它從零跑過一次,它就只是一份寫得很好的回憶錄。
⛔ 判準很簡單:你能不能指出一個會讓它說「不行」的東西。 指不出來,它就沒有在把關。


