Обнаружение использования уровня журнала с Roslyn - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу ошибочно использовать логирование в нашем проекте. Есть блоки кода, которые должны быть зарегистрированы на уровне отладки, зарегистрированы на уровне ошибки. Используя 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!!!.
    }
...