SonarQube报RSPEC-3800代码异味:3个分支2个含this返回被忽略,求解决方案
解决方案
你可以根据项目场景选择以下任意一种方案解决:
- 优先排查
this.getItem方法的实现,如果该方法当前是返回this的链式调用写法,直接修改为返回需要渲染的React节点即可,这是最优解,从根源上匹配规则要求,不会产生额外的兼容代码。 - 给当前方法标注返回值类型,消除静态检测工具的误判:
TS环境直接给方法添加返回值类型React.ReactNode,JS环境可以添加JSDoc注释说明返回值:/** * @returns {import('react').ReactNode} */ - 统一所有返回分支的结构,避免检测工具对不同返回类型的误判:
把数组返回的分支用React.Fragment包裹,让三个分支都返回单个React节点:if (row.constructor === Array) { return ( <React.Fragment key={i}> {row.map((item, index) => ( <Grid key={index}> {this.getItem(item, formProps)} </Grid> ))} </React.Fragment> ) } - 确认代码逻辑没有问题的前提下,可以添加规则忽略标记跳过检测:
对应行上方添加// NOSONAR即可跳过Sonar规则检测,如果用的是eslint的sonar插件,添加// eslint-disable-next-line sonarjs/no-ignored-return即可。
内容的提问来源于stack exchange,提问作者atp
相关产品推荐
相关产品推荐

