2012-09-08 20 views
3

前段時間,我設置Sonar來掃描開發項目。掃描每晚使用cronjob調用。有一次,我遇到了運行cronjob的機器的問題,幾次夜間掃描都錯過了。我從錯過的某一天下載了源代碼,並使用Sonar Runner完成了新的Sonar掃描。正如我預期的那樣,Sonar的數據顯示爲最新的掃描,這不是我想要的。我想將該掃描注入特定的日期,這樣我就可以填寫掃描未運行的日子。我沒有看到在sonar-project.properties文件中執行此操作的選項。在現有設備之前注入聲納分析

有沒有一種方法可以運行聲吶掃描,但是數據是在我選擇的日期而不是當前日期輸入的,因此它顯示在我的聲吶時間軸上的適當位置上?

回答

5

我沒有使用它們,但Sonar documentation描述了可啓用歷史分析的附加屬性。具體來說,它是您需要設置的「sonar.projectDate」屬性。

您尚未指定您正在使用的Java構建技術。我在下面列出了一些例子。

最後,你有沒有考慮過設立Jenkins來發射Sonar,而不是cron?運行Jenkins的很多理由,但如果您使用Maven作爲構建工具,Jenkins Sonar plugin使Sonar集成變得非常簡單。

Maven的例子

mvn clean install -DskipTests=true 
mvn -Dsonar.projectDate=2012-09-01 sonar:sonar 

ANT例如

ant -Dsonar.projectDate=2012-09-01 clean sonar 

注:

  • 這裏假設你有一個名爲 「聲納」 設定的目標進行編譯,測試和運行聲納。
+0

我使用sonar-project.properties文件的sonar-runner。我會看看是否可以使用這些文件的projectDate參數。 – TERACytE

+0

@TERACytE應該以相同的方式工作。由於您將問題標記爲「java」,因此我假設您使用Maven或ANT構建代碼。 –

+0

Maven實際上。 – TERACytE

1

你不能這樣做。雖然有文檔顯示如何設置掃描日期,但這僅適用於回顧性掃描,只能按照時間順序進行。您不能將掃描插入比最近時間更早的時間點。我認爲你可以刪除最近的掃描,直到你的追溯日期適合,但是你想在提交之前測試一下。

我的建議是不要擔心它。 Sonar是一個近似的工具,你應該能夠處理奇怪的異常。

+0

你說得對。但有了這個技術和一些腳本,就可以重放每個聲納分析。 – Thibault

+0

我用我們代碼的一個分支反轉到了早期點,將sonar配置添加到構建腳本中,在構建服務器上運行分析,在稍後的時間點進行合併,再次完成,直到有歷史記錄爲止。我認爲Sonar刪除了過去的細節,因此每個月你只需要舉一個例子就可以得到一個體面的趨勢。 –