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