3

我已经阅读了所有关于 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。

编辑:我处于连接模式。

有谁知道为什么?

我在用:

  • Eclipse Neon.3 发布 (4.6.3)
  • 声纳 Maven 插件 3.0.2
  • maven 3.3.9(嵌入在eclipse中的那个)
  • SonarLint 3.2.0.201706271328
  • SonarQube 6.3(内部版本 19869)

以下是截图作为证据。

SonarLint 屏幕截图

SonarQube 截图

4

1 回答 1

0

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

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

通过检查SonarLint 控制台来验证我的关于 SonarLint 将文件视为测试而不是源的理论是否正确也很好:

  • 控制台视图中,单击打开控制台下拉菜单,选择SonarLint 控制台
  • 配置日志下拉菜单中启用详细输出
  • 触发对测试文件的分析(进行更改并保存文件)

你应该看到这样的输出:

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

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

于 2017-08-23T12:04:39.133 回答