我已经阅读了有关SonarLint与SonarQube不同步的所有线程,但这只是没有单击。

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

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

但是,在月食中,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)


以下是屏幕截图作为证明。

sonarqube - SonarLint与SonarQube同步-LMLPHP

sonarqube - SonarLint与SonarQube同步-LMLPHP

最佳答案

看来您的测试文件没有被视为测试文件,而是被视为源文件。我说这是基于报告的错误类型(删除未使用的变量)和未报告的错误类型(没有断言)。
如您所知,不同的规则应用于源和测试。

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

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


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


您应该看到如下输出:

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


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

关于sonarqube - SonarLint与SonarQube同步,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45824414/

10-09 03:45