SonarLint 与 SonarQube 同步

SonarLint synchronization with SonarQube

我已经阅读了所有关于 SonarLint 与 SonarQube 不同步的帖子,但它只是没有点击。

我创建了一个简单的 Maven 项目来测试 SonarLint 和 SonarQube。我将 sonar-maven-plugin 添加到项目中,然后 运行 mvn sonar:sonar.

项目已上传到 SonarQube。当我查看 SonarQube 时,我看到它显示 squid:S2699(junit 测试没有断言)作为阻止程序。

然而,在eclipse中,SonarLint并没有出现这样的问题。

我特意选择了这个,因为它不是 PMD/FindBugs/Checkstyle 问题。

我已确认 squid:S2699 在服务器上处于活动状态。显然是的,因为 SonarQube 显示了它。

只有 1 个质量配置文件:SonarWay。

编辑:我处于连接模式。

有人知道为什么吗?

我正在使用:

这里有截图为证。

您的测试文件似乎没有被视为测试文件,而是被视为源文件。我说这是基于报告的错误类型(删除未使用的变量)和 not 报告的错误类型(无断言)。 您可能知道,不同的规则适用于源和测试。

SonarLint 根据测试文件正则表达式 首选项决定文件是否为测试文件,您可以在Window 中找到该首选项/首选项/SonarLint。默认值为 **/*Test.*,**/test/**/*, 这似乎适用于各种情况,并且查看您的屏幕截图,它也应该适用于您的情况。 所以首先验证这个设置。 如果该值与默认值不同, 我建议将其更改回默认值作为完整性检查。 然后你可以根据你的需要调整这个值。

通过检查 SonarLint 控制台:

,验证我关于 SonarLint 将文件视为测试而不是源文件的理论是否正确也很好
  • Console 视图中,单击 Open Console 下拉菜单,select SonarLint Console
  • 配置日志下拉菜单中启用详细输出
  • 触发测试文件的分析(进行更改并保存文件)

您应该看到这样的输出:

[
  baseDir: ...
  workDir: ...
  extraProperties: ...
  inputFiles: [
    /path/to/your/test/SonarProofTest.java [test]
  ]
]

文件名末尾的[test]表示该文件被视为测试文件。如果不存在,则该文件将被视为源文件。