Я хочу ошибочно использовать логирование в нашем проекте. Есть блоки кода, которые должны быть зарегистрированы на уровне отладки, зарегистрированы на уровне ошибки. Используя Roslyn, я хочу обнаружить эти проблемы. Все log.Error использования вне блока catch должны быть обнаружены. Используя ExpressionStatementSyntax, я нашел все случаи использования log.Error. Но когда я попытался определить, есть ли в предложении catch некоторые сложные случаи. В предложении catch будет метод, и в нем должен использоваться log.Error.
public void TestMethod() {
log.Error("Test1"); // wrong usage
try {
log.Info("test");
log.Error("Test2"); // wrong usage
}
catch (Exception) {
log.Error("Test");
throw;
}
}
Есть два неправильных использования выше. Но для приведенного ниже кода я не смог найти способ обнаружить использование. Когда я нахожу log.Error в методе, мне нужно найти все ссылки на этот метод. Затем я должен проверить местоположения, которые вызвал метод, в предложении catch или нет. Я не мог найти подходящее решение. Есть предложения?
public void TestMethod() {
log.Error("Test"); // wrong usage
try {
log.Info("test");
}
catch (Exception) {
LogMethod();
throw;
}
}
public void LogMethod() {
log.Error("Test"); // my current algorithm says wrong usage for this line. It's wrong!!!.
}