【问题标题】:Fixing a Sonarqube bug regarding HttpResponseMessage in c#修复 C# 中有关 HttpResponseMessage 的 Sonarqube 错误
【发布时间】:2020-02-16 01:57:06
【问题描述】:

我有这样的代码:

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 分析时,它会在代码中的注释行抛出一个错误,说“'response' 在至少一个执行路径上为空” 我怎样才能让它消失。我已经初始化了 HttpResponseMessage ,但这仍然是一个错误。
这方面的任何帮助都会有所帮助。

【问题讨论】:

    标签: c# httpresponsemessage


    【解决方案1】:

    请检查以下代码

     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 有可能出现空引用异常,因为在 if 条件下您检查了它是否为非空。如果它为空,那么它将转到您正在访问空对象属性的其他位置。

    只是为了解决 SonarQube 错误,请使用以下内容更新您的行

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

    希望这会奏效

    【讨论】:

    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 2013-09-26
    • 2019-03-31
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多