Исправление ошибки Sonarqube относительно HttpResponseMessage в c # - PullRequest
0 голосов
/ 19 октября 2019

У меня есть что-то вроде этого:

HttpResponseMessage response = new HttpResponseMessage();
try
{
    string url = ConfigurationManager.AppSettings["url"];
    using (HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, url))
    {
        requestMessage.Headers.Add("Accept", "application/json");                                
        response = await SendHttpRequest(requestMessage).ConfigureAwait(false);                                
    }
    if (response != null && response.IsSuccessStatusCode)
    {
        // do other things
    }
    else
    {
        log.Error("Http response failure with Status Code : " + response.StatusCode"); // sonarqube showing a bug here
    }
}
catch (Exception ex2)
{
    // log the exception                        
}


public virtual async Task<HttpResponseMessage> SendHttpRequest(HttpRequestMessage httpRequest)
{
    HttpResponseMessage response = null;
    using (HttpClient client = new HttpClient())
    {
        response = await client.SendAsync(httpRequest).ConfigureAwait(false);
    }
    return response;
}

Когда я запускаю анализ Sonarqube для этого кода, он выдает ошибку в закомментированной строке в коде, говоря «ответ» равен нулю припо крайней мере один путь выполнения "Как я могу заставить это уйти. Я инициализировал HttpResponseMessage, но все же это вызывает ошибку.
Любая помощь в этом отношении будет полезна.

1 Ответ

1 голос
/ 19 октября 2019

Пожалуйста, проверьте код ниже

 if (response != null && response.IsSuccessStatusCode)
{
    // do other things
}
else
{
    log.Error("Http response failure with Status Code : " + response.StatusCode"); // sonarqube showing a bug here
}

В вашем коде SonarQube думает, что есть вероятность исключения нулевой ссылки в response.StatusCode, потому что в случае, если вы проверили его для ненулевого. Если это значение равно null, то оно перейдет в другое место, к которому вы обращаетесь к свойству нулевого объекта.

Просто, чтобы устранить ошибку SonarQube, обновите вашу строку следующим образом:

log.Error("Http response failure with Status Code : " + response?.StatusCode"); // sonarqube showing a bug here

Надеюсь, это будет работать

...