修复有关 C# 中 HttpResponseMessage 的 Sonarqube 错误
Fixing a Sonarqube bug regarding HttpResponseMessage in c#
我有这样的代码:
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 ,但这仍然是一个错误。
在这方面的任何帮助都会有所帮助。
请检查下面的代码
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
希望这会奏效
我有这样的代码:
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 ,但这仍然是一个错误。
在这方面的任何帮助都会有所帮助。
请检查下面的代码
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
希望这会奏效