Visual Studio regex для соответствия проглоченным исключениям - PullRequest
0 голосов
/ 16 августа 2010

Мне нужно регулярное выражение Visual Studio для сопоставления с проглоченными исключениями.

Насколько я понял, это все равно соответствует действительному коду:

catch (ArgumentNullException)
{
  //...
  throw;
}


catch:Wh*\(:Wh*.*Exception.*\):Wh*\{[:Wh*.*]*[^(throw:Wh*.*;)].*

Как я могу это исправить?

Редактировать: Должен ли я считать, что проверка на отсутствие шаблона в регулярном выражении в Visual Studio невозможна? - Это суть моего вопроса. Я хотел бы отложить в сторону вопросы обоснованности подхода (я полностью осведомлен о FxCop и др., Lexing и синтаксическом анализе, и об этом оригинальном сообщении . Я также знаю, что глотание исключений иногда нормально). *

1 Ответ

2 голосов
/ 18 августа 2010

Я собираюсь ответить на свой вопрос здесь.Это академический вопрос, потому что, или, конечно, есть принципиальная разница в возможностях контекстно-свободной грамматики и регулярного выражения, как с нетерпением указывали предыдущие комментаторы, плюс существует множество существующих не основанных на регулярных выражениях инструментов, которые будутвыполнить эту функцию для меня.

Я хотел бы изучить негативные возможности Visual Studio.Согласно сообщениям в комментариях здесь и здесь , поведение Visual Studio с негативным прогнозом не ведет себя так, как вы могли бы ожидать при некоторых обстоятельствах (вплоть до того, что некоторые называют его ошибочным).

Я не эксперт по регулярным выражениям, но я ожидаю, что регулярное выражение (throw) будет соответствовать строке, содержащей только throw - и это действительно так.Я также ожидал бы, что ~(throw) (это синтаксис для отрицательного взгляда в Visual Studio) не , чтобы соответствовать той же строке - но в Visual Studio это делает .

Поиграв с уточнением моего исходного регулярного выражения, в том числе с упрощением тестового шаблона, я пришел к выводу, что выполнение негативных предупреждений с использованием текущей реализации поиска по регулярным выражениям в Visual Studio сложно, почти невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...