【问题标题】:SonarQube Eclipse plugin doesn't follow Eclipse links, and "sonar.sources" must be relative pathSonarQube Eclipse 插件不跟随 Eclipse 链接,“sonar.sources”必须是相对路径
【发布时间】:2015-12-11 00:16:41
【问题描述】:
  • Eclipse:“Luna”版本 2 (4.4.2) [20150219-0600]
  • 声纳:5.1(在 Java 1.7.0_76 下)
  • Sonar Eclipse 插件:3.5.0.20150804-1512-RELEASE

我们有一个包含许多项目的大型企业系统,出于各种不可协商的原因,我们在本地工作区目录中创建 Eclipse 项目,但使用 Eclipse 链接指向另一个目录中的源代码。

例如,假设我的 Foo 项目基于“C:/EclipseWorkspace/Foo”,并且在顶层有一个“src”链接,如下所示:

 C:/EclipseWorkspace/Foo/src -> C:/CodeRepository/Foo/src

我想对插件进行以下非常简单的设置:

 sonar.sources = C:/CodeRepository/Foo/src

问题是,Sonar Eclipse 插件似乎不支持使用绝对路径。当我运行分析时,我在控制台上收到以下错误:

Retrieve remote issues of project Foo...
Start SonarQube analysis on Foo...
INFO: SonarQube Server 5.1
17:16:18.565 INFO  - Incremental mode
17:16:18.609 INFO  - Load global repositories
17:16:18.862 INFO  - Load global repositories (done) | time=253ms
17:16:18.863 INFO  - Server id: 20150910100331
17:16:18.865 INFO  - User cache: C:\Users\eryq\.sonar\cache
17:16:18.870 INFO  - Install plugins
17:16:18.894 INFO  - Include plugins: 
17:16:18.894 INFO  - Exclude plugins: devcockpit, buildstability, pdfreport, report, buildbreaker, views, jira
17:16:19.375 ERROR - Invalid value of sonar.sources for Foo
Exception in thread "main" org.sonar.runner.impl.RunnerException: Unable to execute Sonar 
    ...
Caused by: java.lang.IllegalStateException: The folder 'C:/CodeRepository/Foo/src' does not exist for 'Foo' (base directory = C:\EclipseWorkspace\Foo)
    at org.sonar.batch.scan.ProjectReactorBuilder.checkExistenceOfPaths(ProjectReactorBuilder.java:427)
    at ...

注意最后一行:

'Foo' 的文件夹 'C:/CodeRepository/Foo/src' 不存在(base 目录 = C:\EclipseWorkspace\Foo)

由于 Eclipse 插件不允许我覆盖 projectBaseDir,我如何理解 sonar.sources 实际上位于该树之外的另一个目录中?这似乎是一个插件错误:如果我需要指向 sources 目录列表,插件应该让我在需要时指定绝对路径。

提前致谢,

艾瑞克

【问题讨论】:

    标签: eclipse plugins sonarqube analysis


    【解决方案1】:

    这不是 SonarQube Eclipse 特有的,也与绝对路径无关:任何 SonarQube 分析都需要有位于项目 baseDir 下的源文件夹。

    允许您覆盖sonar.projectBaseDir 是一个简单的解决方法。但是我不确定这会不会在以后将问题映射到 Eclipse 资源时导致其他问题...随意测试并提交拉取请求。

    【讨论】:

    • Julien,你是插件开发者吗?我以前从未研究过 Eclipse 插件,而且我也没有时间研究这个问题。如果这很容易解决,您能帮我们一个忙并允许它吗?另外,我不明白为什么 Sonar 会以这种方式限制“源”目录列表:这似乎是 Sonar “太聪明了,不利于自己的利益”。 :-) 如果用户在指定“源”目录列表时遇到麻烦,它应该假设他们这样做是有原因的。
    • 是的,我是这个插件的主要开发者。关于源的限制有一些很好的理由:在 DB 中,文件的标识符是项目 baseDir 的相对路径。 UI 还将项目内容公开为从 basedir 开始的树。拥有此 basedir 之外的文件不适合此模型。
    • 我完全理解通过相对路径唯一识别 Sonar 组件的必要性。在我们的例子中,相对路径是完全一样的。只是现在我们大部分企业还在使用 ClearCase 进行源代码控制,出于各种原因,我们不希望 Eclipse 项目的顶级目录成为 ClearCase 目录。 Eclipse 链接使这种配置成为可能,但它们破坏了 Sonar 的插件。当我们迁移到 Git 时,这个问题应该会消失,但这需要时间。 :-(
    猜你喜欢
    • 2016-02-17
    • 2015-09-21
    • 1970-01-01
    • 2012-06-19
    • 2017-06-11
    • 1970-01-01
    • 2013-05-05
    • 2017-02-08
    • 1970-01-01
    相关资源
    最近更新 更多