Форма видит не все ошибки

Issue #349 closed
Valeriy Streltsov created an issue

Originally reported on Google Code with ID 349

При включенном мёржинге.

Пример регекса с ошибкой, которую не видит форма: (a)\b\1 - тут пересечение с обратной
ссылкой. Кросс-тестер видит и пропускает такой тест.

Reported by vostreltsov on 2015-06-10 18:49:59

Comments (13)

  1. Oleg Sychev repo owner
    Я так понимаю ошибка генерируется на момент создания автомата, а не разбора регекса...
    

    Reported by oasychev on 2015-06-10 18:51:34

  2. Valeriy Streltsov reporter
    Да, но я не очень понимаю какая разница: разбор регекса - в конструкторе хэндлера, построение
    автомата - в конструкторе матчера, сразу после разбора.
    

    Reported by vostreltsov on 2015-06-10 18:52:47

  3. Former user Account Deleted
    Кстати ошибка разрыва автомата создается точно там же, но ее форма видит.
    

    Reported by eklepilkina on 2015-06-11 05:31:23

  4. Oleg Sychev repo owner
    Исправили с Леной. Она там неудачно подобрала логические операции, должна закомиттить.
    

    Reported by oasychev on 2015-06-11 10:39:05

  5. Former user Account Deleted
    С accept все равно почему-то не работает. Эту ошибку надо записывать в массив с enginenodename
    или как предыдущие ошибки?
    

    Reported by eklepilkina on 2015-06-11 16:57:27

  6. Oleg Sychev repo owner
    Поконкретней пожалуйста: что именно с accept не работает?
    

    Reported by oasychev on 2015-06-11 21:16:56

  7. Former user Account Deleted
    Я уже поправила. Все работает.
    

    Reported by eklepilkina on 2015-06-12 05:30:13

  8. Oleg Sychev repo owner
    Обратите внимание, это условие на форме - оно для очень специфических ошибок. Таких,
    которые сама PCRE не может отловить при построении регекса, а делает только при выполнении
    регекса. Обрыв регекса из-за ассерта как раз из их числа.
    
    Что касается аццептинга, то при 100% оценке этого ответа он должен давать на форме
    фейл вне зависимости от того, прописана ли ошибка в том условии. А при малой оценке
    - не должен давать вообще. Ибо там хитрость - чтобы те регексы, которые чисто для ошибок
    - на малую оценку и без подсказки - на них ограничения НКА не распространяются, и если
    НКА не может их сделать - они делаются PCRE (если та тоже ошибок не находит). Не надо
    лепить все ошибки в этот if - нарушите логику работы...
    

    Reported by oasychev on 2015-06-12 21:07:13

  9. Former user Account Deleted
    У меня не работает, если не добавлять в это условие.
    

    Reported by eklepilkina on 2015-06-13 05:14:25

  10. Oleg Sychev repo owner
    Лена, ошибки делятся на несколько групп
    а) ошибки, которые замечает и НКА и PCRE - синтаксические в основном - выводятся сообщения
    от НКА
    б) проблемы НКА на которых PCRE может сработать - сюда в частности относится необходимость
    включения аццептинга - они выдаются как ошибки при соблюдении двух условий: оценка
    за ответ выше 100% и включен хотя бы один хинт(подсказка) - в противном случае молча
    используется PCRE вместо матчера, ибо подсказки не нужны а с регексом она справится
    в) ошибки определяемые только НКА, но не PCRE - но именно ошибки. Сюда относится пресловутый
    случай обрыва автомата. Только такие ошибки должны упоминаться в if в question.php.
    По мне ошибки аццептинга туда не относятся, и пересечения с обратной ссылкой тоже,
    ибо PCRE с ними справляется...
    
    Вы скорее всего не видите ошибок потому что ни одной подсказки в вопросе не включили
    (или не выставили 100% оценку ответу). Из чего вопрос понимает что может обойтись и
    без НКА матчера, так что на ваши ошибки ему все равно. Для ошибок аццептинга и пересечения
    с обратной ссылкой при включенной подсказке должно работать следующее условие: для
    регексов оценки 100% они выдаются, а для 50% например - нет.
    

    Reported by oasychev on 2015-06-18 15:30:50

  11. Oleg Sychev repo owner
    Валерий - к вашему первоначальному вопросу - у меня есть такое подозрение, что подсказка
    выставлена была в "Нет" у вас - вот он и не рапортовал ошибки, а просто перенаправлял
    в PCRE. 
    

    Reported by oasychev on 2015-06-18 15:37:32 - Status changed: Fixed

  12. Oleg Sychev repo owner
    Вытолкнул решение, которое мне кажется правильным - устранен Notice в некоторых случаях.
    Прошу сверить поведение с описанным в комментарии #10.
    

    Reported by oasychev on 2015-06-18 15:40:42

  13. Log in to comment