華夏公益教科書:編輯過濾器/說明
外觀
| 編輯過濾器管理 文件 · 討論 · 如何建立過濾器 · 請求的編輯過濾器 · 報告誤報 · 標籤 |
| 編輯過濾器 非常強大 - 不要低估錯誤可能造成的損害。如果您不熟悉此操作,請確保從更瞭解編輯過濾器的編輯者那裡獲得適當的輸入。 |
建立過濾器
本節解釋如何建立過濾器並進行一些初步測試,這樣您就不會淹沒 歷史頁面。
- 閱讀 mw:Extension:AbuseFilter/RulesFormat 的文件
- 在 除錯工具 中測試一些表示式
- 例如,評估
'some string' rlike 'myregexp'來測試您的正則表示式; - true 表示式評估為1,false 不顯示任何內容
- 例如,評估
- 在 批次測試 頁面手動測試您的程式碼
- 找到最近進行了您要針對的編輯的人,
- 將該使用者名稱放在“使用者更改”欄位中,然後單擊“測試”按鈕;
- 如果您沒有看到正向觸發器
- 選中“顯示與過濾器不匹配的更改”,然後再次單擊“測試”
- 找到您要針對的編輯,然後單擊“(詳細資訊)”
- 檢查變數,然後可能返回到 除錯工具
- 建立 空閒(僅記錄)過濾器
- 在備註欄位中新增類似“測試階段,將新增警告”的內容
- 讓空閒過濾器執行一段時間以測試誤報和漏報
- 在 華夏公益教科書討論:編輯過濾器 上釋出一條訊息,以便其他管理員有機會修復您的程式碼或改進警告
- 最後,完全啟用您的過濾器,例如新增警告、阻止、標記等
控制效率
因為這些過濾器在每次編輯時都會執行,所以措辭不當的過濾器極有可能嚴重降低編輯速度,甚至導致一些較大的頁面超時。但是,對條件排序方式進行一些非常小的更改,可以大大減少過濾器的執行時間。以這種方式利用操作順序,可以使過濾器變得良好,而不會因效能原因而必須停用。
操作順序
操作通常從左到右執行,但它們解析的順序有所不同。一旦過濾器未能滿足其中一個條件,它將停止檢查其餘條件(由於 短路評估)並繼續執行下一個過濾器。評估順序是
- 任何用括號括起來的內容 ((和)) 被評估為一個單元。
- 將變數/文字轉換為它們各自的資料。(即,article_namespace到 0)
- 函式呼叫(norm, lcase等)
- 一元 + 和 - (即-1234, +1234)
- 關鍵字
- 布林反轉(!x)
- 指數運算(2**3 → 8)
- 乘法相關(乘法、除法、模數)
- 比較。(<, >, ==)
- 布林運算。(&, |, ^, in)
使昂貴的操作更便宜
當使用關鍵字時,例如rlike, in,或contains,過濾器必須遍歷整個字串變數才能查詢您要搜尋的字串。變數如old_wikitext往往非常大。有時,您可以使用更小的變數來近似這些變數,例如added_lines或removed_lines,過濾器可以更快地處理這些變數。此外,使用對old_size的檢查也可以幫助確保您不會嘗試檢查一大塊維基文字。
您應該始終對過濾器進行排序,以便會剔除最多編輯的條件排在最前面。通常,這是使用者組或使用者編輯次數檢查;通常,最後一個條件應該是實際查詢您要針對的破壞行為的正則表示式。