2013-08-22 77 views
1

我已經在Sonar中獲得了一個質量配置文件,如果自上次分析以來違規數量增加「如果先前分析的關鍵問題大於0,則發出警報」。聲吶差異警報

這樣做的問題是,當您在沒有任何代碼更改(或者可能無害的代碼更改)的情況下運行後續構建時,警報將被清除。

有沒有辦法讓Sonar比較其結果與上一次沒有包含警報的分析結果?

編輯:我應該說清楚,「以前版本以來的差異」選項不適用於我們的設置,因爲我們正在採用持續交付策略,每個構建都是潛在候選版本,具有自己的獨特版本(我們使用日期/時間戳作爲版本)。編輯#2:我也嘗試將值sonar.timemachine.period4設置爲我想比較的硬編碼版本;但是,配置警報時,此值無法訪問,並且在實際分析過程中肯定會被忽略。

回答

1

在Sonar的消息來源中,一位同事和我想出了一個解決方法。

使用「先前版本」比較來設置您的質量配置文件,無論您實際想要與最後一個良好構建進行比較。

對於每個版本:

  • 查詢與構建版本的最後VCS標籤,並將其分配給一個變量名爲$ {} LAST_GOOD_BUILD或您的構建過程中使用的其他類似。
  • 運行聲納與-Dsonar.timemachine.period3=${LAST_GOOD_BUILD}(也確保了BuildBreaker插件被激活)
  • 如果你沒有提醒,未來構建步驟需要記錄在VCS標籤的新版本;

這是可行的,因爲sonar.timemachine.period3與您的質量配置文件中的「先前版本」設置相同,但您現在將其替換爲您選擇的硬指定版本。每次構建時,您只標記通過質量檢查的構建,並且在運行Sonar時,只能比較這些良好的版本。

很可怕,但它讓我們的構建管道再次運行起來。如果對上述內容有任何不清楚的地方,請告訴我,我會更新這個「解決方案」。

提示:您的版本編號不能是整數 - Sonar會將此解釋爲您當前分析與您想要比較的分析之間的天數!此外,它不能採用可能與yyyy-MM-DD(例如1000-01-01)混淆的格式,就好像這也發生爲解析爲真實日期一樣,那麼您無意中指定了日期範圍的開始。我還沒有看到任何人指定版本號,但你永遠不知道。

0

不,但您可以將SonarQube配置爲將您的差異視圖基於previous_version或日期。請參閱http://docs.codehaus.org/display/SONAR/Differential+Views#DifferentialViews-DifferentialViewsSettings

+0

我知道這些選項,但不幸的是,它們不能在CD生成管道中工作 - 我已經相應地更新了我的原始問題。如果Sonar可以追蹤最後的「好」分析(一個沒有任何警報),並將其作爲比較的基礎,這將使我可以使用任何我希望的構建/版本策略。現在,似乎我將不得不修改我的構建管道,以便Sonar能夠工作。 – RCross