2017-08-22 52 views
0

我已經從Sonar 5.3升級到6.2,項目X在jenkins工作的聲納階段給我一些奇怪的錯誤(儘管建造完成後穩定)。Sonar拒絕分析多模塊項目

該項目是一個標準的multimodule maven java項目。

進入項目儀表盤屏幕上出現一條消息:

「沒有分析已經創立以來進行的唯一可用 節的配置。」

但在右上角顯示紅色的「FAILED」標籤。這導致了項目的背景任務,且有失敗的任務與此錯誤日誌:

項目「com.foo:bar-submodule-1」在SonarQube 已定義,但不是作爲一個模塊項目「com.foo:bar」。如果你真的想 停止直接分析項目「com.foo:bar-submodule-1」,請 首先從SonarQube刪除,然後重新啓動 項目的分析「com.foo:bar」

我不想刪除該項目並丟失歷史數據。

所以問題是:如何將項目Y(即項目X的子模塊,但Sonar無法識別它)添加爲項目X的子模塊?

編輯1

父項目是已通過詹金斯工作分析的只有一個。

+0

您可以將新名稱添加到sonar-project.properties文件中的模塊和子模塊中,然後重新運行分析。 – lakshman

+0

您是否確認自己作爲獨立項目一直在分析_com.foo:bar-submodule-1_? (儘管它是一個更大項目的子模塊)。輸出_api/components/show?key = com.foo:bar-submodule-1_可以幫助提供更多的上下文。 –

+0

輸出api/components/show?key =:{「component」:{「id」:「AVXZ1QXRLUlRa7_XO26T」,「key」:「com.foo::bar-submodule-1","name":":Bar子模塊1「,」限定符「:」TRK「},」祖先「:[]} –

回答

1

您的問題不是Sonar無法找出您的子模塊,但根本問題是有另一個項目/模塊與您正在分析的項目衝突的名稱相同。例如,當您將子模塊作爲獨立庫提取並將其作爲根項目移動並嘗試分析新項目時,會發生這種情況。由於它是一個新項目,但過去某個時間您有另一個名稱完全相同的項目/模塊,因此無法完成該過程。我發現三種方式來解決這個問題:

  1. 刪除舊的項目,如果有可能 這是我用的時候我已經分析了錯誤的新項目(例如錯誤的參數),或者當我一個選項我正在遷移服務器,並且仍然存在一些錯誤的配置。您可以在項目的配置/管理菜單'Delete project'中執行此操作。

  2. 重命名舊項目鍵
    這是我的默認選項,因爲通常我想要的只是保持舊的,我們正在向其他項目或促進根系模塊舊子模塊分析數據。您可以在項目的配置/管理菜單'Update key' option中執行此操作。

  3. 更新您的當前項目的鍵
    這個選項我使用時與其他有效的子模塊的子模塊衝突(可當你有不同的團隊創建的小庫,碰巧有相同的鍵發生)。你可以分兩步做到這一點。首先,您需要按照選項2更新項目密鑰。下一步是使用密鑰sonar.moduleKey轉到您的項目並更新模塊和子模塊名稱。默認值爲:類似於sonar.projectKey,爲especified here。遵循這些步驟,您不會失去所有記錄和舊分析。

我希望它有幫助。

+0

選項2做到了這一點。我已將錯誤頁面中列出的子模塊重命名爲* _old。但是,我不希望因爲我剛剛結束了2個具有相同代碼但具有不同密鑰的項目。如果有人以我想的方式找到解決方案,然後接受您的答案爲正確答案,我會等待。 –

+0

@JoseJuanCalderonViedma您可以轉到「度量」菜單並搜索包含鍵「com.foo:bar-submodule-1」的項目和子模塊。它應該返回包含這個鍵的所有模塊,在這種情況下可能不止一個,在項目中有一個模塊的鍵名不同於「com.foo:bar」。之後,您可以應用我之前提到的一些選項。 –

+0

@JoseJuanCalderonViedma您可以嘗試的其他事情是在Configuration> Projects(Sonar 5.6)中搜索可能包含重複子模塊的潛在項目,如果您發現它,您將可以重命名或刪除它。這很難做到,但我之前在這裏找到了'失落'的項目,並解決了與您一樣的問題。 –