【发布时间】:2020-08-12 15:34:56
【问题描述】:
我正在使用 SonarQube 分析我的 .NET Core 应用程序,它现在报告以下两个控制器操作的重复块:从查询字符串获得的三个参数和
ParametersHelper.ProcessAndSanitizeSee2InputParams 的调用,如图所示。
静态方法调用会清理每个参数 - 空值检查、修剪和自定义逻辑 - 并将它们分组到字典中。
关于如何重构这些操作以避免触发 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);
}
【问题讨论】:
标签: c# .net-core sonarqube asp.net-core-webapi code-analysis