
BUG OF THE MONTH | Erroneous postfix
private async Task<HttpResponseMessage> CallFreshdeskApiAsync(
HttpRequestMessage request,
int retriedCount = 0)
{
try
{
request.Headers.Add("Authorization", _freshdeskAuthkey);
var response = await _httpClient.SendAsync(request);
if ( response.StatusCode != System.Net.HttpStatusCode.TooManyRequests
|| retriedCount > 3)
{
return response;
}
}
catch
{
if (retriedCount > 3)
{
throw;
}
}
await Task.Delay(30000 * (retriedCount + 1));
return await CallFreshdeskApiAsync(request, retriedCount++); // <=
}
PVS-Studio warning: V3159 Modified value of the ‘retriedCount’ operand is not used after the postfix increment operation. FreshdeskController.cs 167
Look at the incrementation of the retriedCount variable. Weird — the postfix notation is used here. The current value of the variable is returned first, and only then this value is increased. Maybe the developer should replace postfix notation with the prefix one:
return await CallFreshdeskApiAsync(request, ++retriedCount)
For more clarity, you can use the following notation:
return await CallFreshdeskApiAsync(request, retriedCount + 1)