Я анализирую свое. NET Базовое приложение, использующее SonarQube, и теперь оно сообщает о дублирующих блоках для обоих описанных ниже действий контроллера: три параметра, полученные из строки запроса, и вызов ParametersHelper.ProcessAndSanitizeSee2InputParams
, как вы можете видеть на изображении.
Вызов метода stati c очищает каждый параметр - проверку нуля, обрезку и пользовательские логи c - и группы их в словаре.
Какие-либо советы о том, как реорганизовать эти действия, чтобы избежать запуска обнаружения дублированного кода SonarQube?
// comments omitted
[HttpGet("{seasonKey}")]
[ProducesResponseType(typeof(See2Season), 200)]
public async Task<IActionResult> GetSeasonByKeyAsync(
string seasonKey,
[FromQuery(Name = "provider")] string providers,
[FromQuery(Name = "lang")] string languages,
[FromQuery(Name = "priority")] string priority)
{
var sanitizedSee2Params = ParametersHelper.ProcessAndSanitizeSee2InputParams(
this._logger,
true,
new KeyValuePair<string, string>(InputParameterNames.PROVIDERS, providers),
new KeyValuePair<string, string>(InputParameterNames.LANGUAGE, languages),
new KeyValuePair<string, string>(InputParameterNames.PRIORITY, priority));
var result = await this._seasonManager.GetSeasonByKeyAsync(
seasonKey,
sanitizedSee2Params).ConfigureAwait(false);
return this.Ok(result);
}
// comments omitted
[HttpGet("{seasonKey}/children")]
[ProducesResponseType(typeof(IEnumerable<See2Content>), 200)]
public async Task<IActionResult> GetSeasonChildrenByKeyAsync(
string seasonKey,
[FromQuery(Name = "overrideDefaultDirection")] bool overrideDefaultDirection,
[FromQuery(Name = "provider")] string providers,
[FromQuery(Name = "lang")] string languages,
[FromQuery(Name = "priority")] string priority)
{
var sanitizedSee2Params = ParametersHelper.ProcessAndSanitizeSee2InputParams(
this._logger,
true,
new KeyValuePair<string, string>(InputParameterNames.PROVIDERS, providers),
new KeyValuePair<string, string>(InputParameterNames.LANGUAGE, languages),
new KeyValuePair<string, string>(InputParameterNames.PRIORITY, priority));
var result = await this._seasonManager.GetSeasonChildrenByKeyAsync(
seasonKey,
overrideDefaultDirection,
sanitizedSee2Params).ConfigureAwait(false);
return this.Ok(result);
}