在React项目里跑Sonar扫描时,总提示JSX element 'div' is not closed properly,但代码明明是自闭合的呀。比如这个组件:
function Button() {
return <button className="primary">Click me</button>;
}
我已经检查过所有标签闭合了,还重启了Sonar服务,问题还是存在。配置文件里sonar.javascript.jsx=false这个参数要不要改?或者是不是需要安装额外插件?
首先看看是不是版本问题,升级Sonar和相关插件到最新版常常能解决问题。如果还不行,修改sonar-project.properties文件,添加或修改这个配置:
这能让Sonar更好地识别JSX语法。
如果还是提示错误,可以在代码里显式关闭标签,虽然麻烦但通常有效。比如你那个例子改成这样:
变成这样:
说实话,有时候就得迁就工具。要是实在不想改代码,考虑用eslint-plugin-react来替代Sonar做JSX检查,它的规则更贴近实际开发。
另外别忘了清理缓存再重跑一次扫描,Sonar有时候就是这么任性。
sonar.javascript.jsx设定成true就行了,这参数本来就应该开。你那代码写法是标准的 JSX,关着当然扫不干净。