维基百科:机器人/申请/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)[回复]