我已经阅读了有关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)
以下是屏幕截图作为证明。
最佳答案
看来您的测试文件没有被视为测试文件,而是被视为源文件。我说这是基于报告的错误类型(删除未使用的变量)和未报告的错误类型(没有断言)。
如您所知,不同的规则应用于源和测试。
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/