Sonarqube “;等待&x201D;不应在bot框架中重复使用
我们使用Azure bot框架开发了一个聊天机器人。作为CI-CD管道的一部分,我们使用Sonar Qube进行静态代码分析 Sonar将代码气味的多个实例显示为“重复使用等待返回值”。Sonar建议不要使用WAIT,因为异步方法应该使用承诺 但是,此方法取自Microsoft()提供的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年前在此中添加的 然后我发现这些文章回答了类似的问题:,但我仍然不清楚
您能否确认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
”是的,我在你的问题中已经看到了。你明白我的意思吗?