Форма видит не все ошибки
Issue #349
closed
Originally reported on Google Code with ID 349
При включенном мёржинге.
Пример регекса с ошибкой, которую не видит форма: (a)\b\1 - тут пересечение с обратной
ссылкой. Кросс-тестер видит и пропускает такой тест.
Reported by vostreltsov
on 2015-06-10 18:49:59
Comments (13)
-
repo owner -
reporter Да, но я не очень понимаю какая разница: разбор регекса - в конструкторе хэндлера, построение автомата - в конструкторе матчера, сразу после разбора.
Reported by
vostreltsov
on 2015-06-10 18:52:47 -
Account Deleted Кстати ошибка разрыва автомата создается точно там же, но ее форма видит.
Reported by
eklepilkina
on 2015-06-11 05:31:23 -
repo owner Исправили с Леной. Она там неудачно подобрала логические операции, должна закомиттить.
Reported by
oasychev
on 2015-06-11 10:39:05 -
Account Deleted С accept все равно почему-то не работает. Эту ошибку надо записывать в массив с enginenodename или как предыдущие ошибки?
Reported by
eklepilkina
on 2015-06-11 16:57:27 -
repo owner Поконкретней пожалуйста: что именно с accept не работает?
Reported by
oasychev
on 2015-06-11 21:16:56 -
Account Deleted Я уже поправила. Все работает.
Reported by
eklepilkina
on 2015-06-12 05:30:13 -
repo owner Обратите внимание, это условие на форме - оно для очень специфических ошибок. Таких, которые сама PCRE не может отловить при построении регекса, а делает только при выполнении регекса. Обрыв регекса из-за ассерта как раз из их числа. Что касается аццептинга, то при 100% оценке этого ответа он должен давать на форме фейл вне зависимости от того, прописана ли ошибка в том условии. А при малой оценке - не должен давать вообще. Ибо там хитрость - чтобы те регексы, которые чисто для ошибок - на малую оценку и без подсказки - на них ограничения НКА не распространяются, и если НКА не может их сделать - они делаются PCRE (если та тоже ошибок не находит). Не надо лепить все ошибки в этот if - нарушите логику работы...
Reported by
oasychev
on 2015-06-12 21:07:13 -
Account Deleted У меня не работает, если не добавлять в это условие.
Reported by
eklepilkina
on 2015-06-13 05:14:25 -
repo owner Лена, ошибки делятся на несколько групп а) ошибки, которые замечает и НКА и PCRE - синтаксические в основном - выводятся сообщения от НКА б) проблемы НКА на которых PCRE может сработать - сюда в частности относится необходимость включения аццептинга - они выдаются как ошибки при соблюдении двух условий: оценка за ответ выше 100% и включен хотя бы один хинт(подсказка) - в противном случае молча используется PCRE вместо матчера, ибо подсказки не нужны а с регексом она справится в) ошибки определяемые только НКА, но не PCRE - но именно ошибки. Сюда относится пресловутый случай обрыва автомата. Только такие ошибки должны упоминаться в if в question.php. По мне ошибки аццептинга туда не относятся, и пересечения с обратной ссылкой тоже, ибо PCRE с ними справляется... Вы скорее всего не видите ошибок потому что ни одной подсказки в вопросе не включили (или не выставили 100% оценку ответу). Из чего вопрос понимает что может обойтись и без НКА матчера, так что на ваши ошибки ему все равно. Для ошибок аццептинга и пересечения с обратной ссылкой при включенной подсказке должно работать следующее условие: для регексов оценки 100% они выдаются, а для 50% например - нет.
Reported by
oasychev
on 2015-06-18 15:30:50 -
repo owner Валерий - к вашему первоначальному вопросу - у меня есть такое подозрение, что подсказка выставлена была в "Нет" у вас - вот он и не рапортовал ошибки, а просто перенаправлял в PCRE.
Reported by
oasychev
on 2015-06-18 15:37:32 - Status changed:Fixed
-
repo owner Вытолкнул решение, которое мне кажется правильным - устранен Notice в некоторых случаях. Прошу сверить поведение с описанным в комментарии #10.
Reported by
oasychev
on 2015-06-18 15:40:42 -
reporter Reported by
vostreltsov
on 2015-06-18 19:20:51 - Status changed:Done
- Log in to comment
Reported by
oasychev
on 2015-06-10 18:51:34