【问题标题】:SonarLint synchronization with SonarQubeSonarLint 与 SonarQube 同步
【发布时间】:2018-01-31 03:21:59
【问题描述】:

我已经阅读了所有关于 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)
  • sonar-maven-plugin 3.0.2
  • maven 3.3.9(嵌入在eclipse中的那个)
  • SonarLint 3.2.0.201706271328
  • SonarQube 6.3(内部版本 19869)

这里有截图作为证据。

【问题讨论】:

    标签: sonarqube sonarlint sonarlint-eclipse


    【解决方案1】:

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

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

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

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

    你应该看到这样的输出:

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

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

    【讨论】:

    • 是的。就是这样。不幸的是,这可能是一个糟糕的示例选择,因为问题仍然存在于一些非测试类上。不过,我不会继续这个问题。感谢您的帮助!
    猜你喜欢
    • 2018-03-29
    • 2018-03-02
    • 2017-10-07
    • 1970-01-01
    • 2018-01-23
    • 2017-04-19
    • 2016-02-07
    • 2017-06-09
    • 2016-03-26
    相关资源
    最近更新 更多