Sonarqube “;等待&x201D;不应在bot框架中重复使用

Sonarqube “;等待&x201D;不应在bot框架中重复使用,sonarqube,azure-bot-service,Sonarqube,Azure Bot Service,我们使用Azure bot框架开发了一个聊天机器人。作为CI-CD管道的一部分,我们使用Sonar Qube进行静态代码分析 Sonar将代码气味的多个实例显示为“重复使用等待返回值”。Sonar建议不要使用WAIT,因为异步方法应该使用承诺 但是,此方法取自Microsoft()提供的BOT框架示例 您能否确认Microsoft的建议是否已更改,或者这似乎是SonarQube发出的假阳性警报?首先,这条Sonar规则是大约2年前在此中添加的 然后我发现这些文章回答了类似的问题:,但我仍然不清楚

我们使用Azure bot框架开发了一个聊天机器人。作为CI-CD管道的一部分,我们使用Sonar Qube进行静态代码分析

Sonar将代码气味的多个实例显示为“重复使用等待返回值”。Sonar建议不要使用WAIT,因为异步方法应该使用承诺

但是,此方法取自Microsoft()提供的BOT框架示例


您能否确认Microsoft的建议是否已更改,或者这似乎是SonarQube发出的假阳性警报?

首先,这条
Sonar
规则是大约2年前在此中添加的

然后我发现这些文章回答了类似的问题:,但我仍然不清楚,所以我继续寻找

最后,我回顾了这一点,并在最后一个示例中找到了我想要的答案

在上面的示例中,请注意,在
return
关键字之后没有
wait
语句,尽管这也是有效的:
异步函数
的返回值隐式包装在
Promise.resolve
-如果它本身不是一个承诺(如本例中所示)

注意:
promiseValue.resolve中返回值的隐式包装并不意味着
return wait promiseValue
在功能上等同于
return promiseValue

我在项目中尝试了使用和不使用
await
的错误处理,最后删除了触发警告的
await
。到目前为止,我还没有看到任何不同。我还注意到,如果您将相同的代码包装在一个
try/catch
中,声纳警告将不再发出


从现在起,我将遵循Sonar的建议,但如果遇到问题,我将更新此线程。

当您说“Sonar的建议不使用Wait,因为异步方法预期使用承诺”时,您是什么意思?听起来你在说“等待”和“承诺”是两种不同的做事方式,但这没有意义,因为它们是一样的。承诺是你等待的。你在等待承诺。@KyleDelaney:SonarQube将此显示为一种代码气味“在返回值上重复使用
wait
”是的,我在你的问题中已经看到了。你明白我的意思吗?