Sonar扫描显示JSX元素未正确闭合但代码实际没问题怎么办?

Prog.康佳 阅读 52

在React项目里跑Sonar扫描时,总提示JSX element 'div' is not closed properly,但代码明明是自闭合的呀。比如这个组件:

function Button() {
  return <button className="primary">Click me</button>;
}

我已经检查过所有标签闭合了,还重启了Sonar服务,问题还是存在。配置文件里sonar.javascript.jsx=false这个参数要不要改?或者是不是需要安装额外插件?

我来解答 赞 9 收藏
二维码
手机扫码查看
2 条解答
轩辕鑫玉
Sonar对JSX的扫描有时候确实会误报,特别是在自闭合标签上。这里有几个解决办法可以试试。

首先看看是不是版本问题,升级Sonar和相关插件到最新版常常能解决问题。如果还不行,修改sonar-project.properties文件,添加或修改这个配置:

sonar.javascript.jsx=true


这能让Sonar更好地识别JSX语法。

如果还是提示错误,可以在代码里显式关闭标签,虽然麻烦但通常有效。比如你那个例子改成这样:

function Button() {
return <button className="primary">Click me</button>;
}


变成这样:

function Button() {
return (
<button className="primary">
Click me
</button>
);
}


说实话,有时候就得迁就工具。要是实在不想改代码,考虑用eslint-plugin-react来替代Sonar做JSX检查,它的规则更贴近实际开发。

另外别忘了清理缓存再重跑一次扫描,Sonar有时候就是这么任性。
点赞
2026-03-31 16:23
爱学习的新艳
sonar.javascript.jsx 设定成 true 就行了,这参数本来就应该开。你那代码写法是标准的 JSX,关着当然扫不干净。
点赞 12
2026-02-03 23:10