Викиновости:Фильтр правок/Руководство

Материал из Викиновостей, свободного источника новостей

Руководство по созданию фильтров с предварительным тестированием.

  • Читаем документацию mw:Extension:AbuseFilter/Rules format (англ.)
  • Тестируем кусочки кода на странице Средства отладки
    К примеру, если нужен фильтр, реагирующий на слова «кролика», «кролику», пишем
    'кролика' rlike 'кролик[ау]'
    и нажимаем «опробовать». Если результат «1», то выражение верное, и позже в коде фильтра мы можем использовать что-то вроде
    lcase(added_lines) rlike 'кролик[ау]'
  • Переходим на страницу Пакетное тестирование
    Здесь сверху вставляем нужный кусок кода, в поле «изменения сделаны участником» добавляем участника, который недавно (в своих последних 100 правках, сделанных не позже месяца назад) совершал действия, под которые пишется фильтр, и нажимаем кнопку «проверить».
    Смотрим на результаты и проверяем, что фильтр действительно поймал нужные действия.
    Если срабатываний нет, то включаем галочку «показывать изменения, не попадающие под фильтр», снова нажимаем «проверить», находим нужную правку и открываем (в новом окне браузера) ссылку «просмотреть», попадая на страницу «Просмотр отдельных изменений».
    Здесь можно изучить переменные сделанной правки и понять каким образом нужно изменить код фильтра для получения корректного срабатывания, при необходимости возвращаясь к странице «средства отладки» для проверки отдельных выражений.
    Если неясно, что именно не сработало, то можно поочерёдно оставлять в окне кода только нужное выражение и нажимать кнопку «проверить фильтр».
  • Проверяем код на свежих правках
    Добавляем код на страницу пакетное тестирование, временно убрав условия, ограничивающие участников (вида 'autoconfirmed' in user_groups), и на этот раз оставив остальные поля пустыми
    Нажимаем кнопку «проверить» каждые несколько минут, таким образом тестируя фильтр на 100 последних правках в проекте.
    При нахождении ложных срабатываний дорабатываем код фильтра.
    Этот шаг в принципе необязателен, но помогает уменьшить количество последующих изменений фильтра.
  • Создание фильтра
    Со страницы списка фильтров нажимаем «создать новый фильтр» и создаём пока бездействующий (без предупреждений или запретов) фильтр. В поле описания кратко описываем назначение фильтра и тот факт, что фильтр пока тестируется.
    После отсутствия ложных срабатываний в течение нескольких дней добавляем (по необходимости) нужное предупреждение и/ли запрет.


Для уменьшения времени, необходимого системе для проверки всех фильтров, каждый фильтр должен начинаться с более «лёгких» условий (проверка пространства, группы участника), которые отсеют многие правки, не переходя к более сложным (проверке добавленного текста и т.п.).