Я использую regex с PowerGrep для поиска через кучу файлов. Я работаю с java-файлами, и моя цель - найти все catch blocks, которые не содержат слова log
внутри блока, чтобы я мог добавлять журналы. Есть много файлов, поэтому прохождение их вручную не реально.Regex найти блоки catch без журнала
Примеры того, что должны быть найдены
catch (Exception e) {
//comment#
int math = 1 +2 * (3);
String email = "[email protected]";
anothermethod.call();
//no logging
}
и
catch(AnotherException e) {} //no logging
Примеры того, что НЕ должны быть найдены
catch(AnotherException e) {
//some code
log.error("Error message");
//some more code
}
и
catch(BadE_xception e) { log.error(e); }
Я не очень опытный с регулярным выражением, но это то, что я до сих пор:
начало поймать блока: catch\s*\(\s*\w*\s+\w*\s*\)\s*\{.*?
, но тогда я не знаю, куда идти оттуда укажите не содержать log
. Если у вас есть идеи о том, как это сделать без регулярного выражения, это отлично работает и для меня. Спасибо
Возможно, в блоках 'catch' могут находиться вложенные фигурные скобки, верно? Ядро PowerGREP не может обрабатывать рекурсию (пока). –
Да, есть такие случаи. Поскольку регистрация не является абсолютно необходимой, я готов упустить их прямо сейчас и просто получить не-вложенные случаи. – jlars62