2012-05-30 19 views
3

我正在配置一個多模塊maven項目,強制執行聲納:聲納驗證階段。maven-sonar-plugin可以進行本地分析嗎?

我還使用聲納的build-breaker-plugin來避免在聲納引發某些警報時部署模塊。

這種方法的問題是開發人員應該去聲納服務器檢查警報。這並沒有那麼糟糕,但是如果有多個用戶試圖同時分析同一模塊,則不可能知道最近/當前分析是否有警報。

背景:我們有一個CI系統,每小時構建所有模塊。因此有時這種碰撞與一些開發者部署(即強制分析)

恕我直言,只有CI系統應提交分析,聲納服務器,因爲CI有持續承諾和部署的代碼。但是開發者應該只在本地檢查他的變化。

那麼,爲什麼我們強迫開發人員構建分析?爲了避免部署不符合代碼質量閾值的模塊(聲納的build-breaker插件對此有所幫助)。

有一種方法可以配置maven-sonar-plugin來做到這一點?

  • 開發人員構建中的本地分析。在CI
  • 解析服務器建立
+0

目前尚不清楚爲什麼開發者被允許「部署模塊」而不僅僅是CI。也許你想要的是開發人員不應該「檢入」代碼可能打破聲納? – Raghuram

+0

我同意你的看法,但最後是同樣的問題:我需要在scm:checkin之前運行本地分析。上下文:開發人員對一些模塊負責,因此他們被允許部署SNAPSHOTS。 CI旨在驗證所有已部署的模塊是否已正確集成(構建和執行集成測試)。 – ggarciao

+0

你能達到你想要的水平嗎?你有沒有機會面對這個問題? http://stackoverflow.com/questions/29099614/how-to-make-sonar-module-analyze-the-project-only-once-when-sonar-analysis-is-bo – Ievgen

回答

1

據我瞭解,你應該有聲納的第一個實例,它在生成過程中只是用來打破它,如果你的質量不符合要求,以及第二一個由您的CI系統使用,這是您的產品的參考。如果你真的想強制你的過程,並確保破壞這些需求的代碼不會被推入你的SCM系統,那麼你可以在一個預先提交的鉤子上綁定一個Sonar分析。但是,這對我來說似乎有點極端...

在SonarSource,我們沒有選擇「因爲違規而阻止提交」的方法。事實上,我們認爲只要您管理它,就可以擁有一些技術債務(=違規)。管理技術債務意味着審查Sonar中的每一個違規行爲,並將其修改到代碼中,或者將這些違規行爲影響到行動計劃,主要想法是技術債務在發展衝刺結束時不應增加。這就是Sonar的評論功能。 Sonar還提供小部件,用於監控評論的發展和新的違規行爲,而無需審查。

+0

我同意你的意見,但我認爲某些閾值很重要!例如:我們不允許沒有評論的公共API(並且這是不可協商的)。預先提交鉤子是一個好主意,但我們認爲即使代碼「不好」也可以將代碼簽入SCM,但我們不能允許的是「共享」該代碼。這是我們不允許部署SNAPSHOT或不尊重代碼質量策略的RELEASE。我喜歡你對兩個SONAR實例的想法......有一種方法可以保持它們之間的規則同步? – ggarciao

+0

@ggarciao。你可以通過阻止'SNAPSHOTS'的'deploy'來阻止共享二進制文件,但是一旦'commit'源文件被「共享」。 – Raghuram

+0

@ggarciao不幸的是(對於規則同步),你必須「手動」處理(通過使用導出功能)。 –

相關問題