維基百科:機械人/申請/Antigng-bot/32

  • 狀態 撤銷許可
  • 操作者: Antigng留言
  • 提請時間: 2019年6月4日 (二) 15:20 (UTC)
  • 自動化程度:自動
  • 程式語言C
  • 用途:清理調用重複模板參數的頁面
  • 原始碼連結:
  • 編輯時段及頻率:不限,先清存檔,然後轉入長期運行
  • 受影響頁面:存量1680,另每個月大致新產生~50個
  • 遵守機械人規範不相關
  • 已有機械人權限:
  • 框架與前兩個申請完全相同。第二部分修改為:
    • 遍歷所有模板,模板損壞,不處理;模板沒參數,不處理。然後打開一個表存放(參數名,參數值的地址),並開始檢查參數,對每個參數,如果參數名處引出模板,跳過,如果沒有參數值(注:指|date|之類的),跳過;如果參數值處引出模板,跳過。然後在表中查詢參數名,
      • 如果命中,檢查當前的參數值。
        • 若其實質為空(定義為僅有空格,註釋和常見控制符),釋放本參數。
        • 否則檢查舊參數值是否實質為空
          • 若是,將當前參數複製到舊參數值的地址,釋放本參數。
          • 否,則檢查新舊參數值是否實質上相同,若是,釋放本參數,否則跳過。
      • 如果未命中,將(參數名,參數值的地址)加入表中。
    • 釋放表格。若模板或任意子模板被清理過,返回1,否則返回0。
  • 修正了解析模板的部分的很多bug。修好之後,在整個主名字空間空運行結果表明,有1680個可處理的頁面,其中僅4個不在追蹤分類裏邊。經檢查,假陽性的原因在於待處理的問題發生在不存在的模板之中。但是即使清理不存在的模板也沒有害處,所以沒什麼可進一步修的。
  • 在功能上可以完全替代Wikipedia:機械人/申請/Liangent-bot/15。--Antigng留言2019年6月4日 (二) 16:30 (UTC)[回覆]
  • 測試編輯,全部符合設計要求。--Antigng留言2019年6月16日 (日) 01:48 (UTC)[回覆]
    1. @AntigngSpecial:Diff/54836579:動到「監製」前面的換行了。
    2. Special:Diff/54836557:為什麼保留的值是前面出現的小寫?
    3. {{1x|1=a|1=}}在機械人處理後結果為?
    4. 上述步驟中的「釋放本參數」是什麼意思?--Xiplus#Talk 2019年7月8日 (一) 12:28 (UTC)[回覆]
    • @Xiplus
      1. 「動到「監製」前面的換行」:是因為那個參數值是從最底下的老參數值複製上去的,而後者並不存在換行。
      2. 「為什麼保留的值是前面出現的小寫?」:「檢查是否實質上相同」一步做了大小寫轉換,導致程序以為兩個參數的參數值實質相同,於是只留了前一個。為避免問題已刪除轉換相關的邏輯。
      3. {{1x|1=a}}
      4. 「上述步驟中的「釋放本參數」是什麼意思」:C並不自帶垃圾回收,一塊內存區域不用就必須人工釋放掉。--Antigng留言2019年7月8日 (一) 14:40 (UTC)[回覆]