2015-09-14 59 views
0
  • 蝕: 「露娜」 第2版(4.4.2)[20150219-0600]
  • 聲納:5.1(下的Java 1.7.0_76)
  • 聲納Eclipse插件:3.5.0.20150804-1512-RELEASE

我們有一個大的企業系統中的許多項目,以及我們在當地創造我們的Eclipse項目的各種不可轉讓的原因工作空間目錄,但使用Eclipse鏈接指向另一個目錄中的源。SonarQube Eclipse插件不跟隨的Eclipse鏈接,而 「sonar.sources」 必須是相對路徑

例如,假設我美孚項目是基於在「C:/ EclipseWorkspace /富」,有一個「SRC」鏈接在最頂層是這樣的:

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

我想有以下該插件非常簡單的設置:

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

的問題是,聲納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 ... 

注意,最後一行:

文件夾「C:/ CodeRepository /美孚/ src目錄」不爲'存在富」(基地 目錄= C:\ EclipseWorkspace \富)

由於Eclipse插件不允許我覆蓋projectBaseDir,我怎麼讓它明白塔t sonar.sources實際上在該樹之外的另一個目錄中?這看起來像一個插件錯誤:如果我需要指向源目錄的列表,插件應該讓我指定絕對路徑,如果需要的話。

由於提前,

Eryq

回答

0

這是不特定於SonarQube Eclipse和不相關的絕對路徑:任何SonarQube分析需要有位於項目的基本目錄下的源文件夾。

允許您覆蓋sonar.projectBaseDir是一個簡單的修復方法。但是我不確定以後在問題映射到Eclipse資源時不會導致其他問題...隨意測試並提交拉取請求。

+0

Julien,你是插件開發者嗎?我從來沒有在Eclipse插件上工作過,而且我也沒有時間去調查這些。如果這是一個簡單的解決方案,你可以幫我們一個忙,只是允許它嗎?另外,我不明白爲什麼Sonar會以這種方式限制「源」目錄列表:這看起來像Sonar「爲了自己的利益而太聰明」。 :-)如果用戶經歷了指定「源」目錄列表的麻煩,它應該假定他們這樣做是出於某種原因。 –

+0

是的,我是這個插件的主要開發人員。關於源的限制,有一些很好的理由:在DB中,文件的標識符是來自項目baseDir的相對路徑。此外,UI還將項目內容作爲從basedir開始的樹顯示。擁有這個basedir以外的文件將不適合這個模型。 –

+0

我完全理解需要通過相對路徑唯一地識別Sonar組件。在我們的例子中,相對路徑是完全相同的。只是現在,我們的大部分企業仍在使用ClearCase進行源代碼控制,出於各種原因,我們不希望Eclipse項目的頂級目錄成爲ClearCase目錄。 Eclipse鏈接使這種配置成爲可能,但他們打破了Sonar的插件。當我們遷移到Git時,這個問題應該消失,但這需要時間。 :-( –