2012-01-10 100 views
5

是否有任何免費的工具可以對代碼進行增量靜態分析(對於SVN,最好是Git)?目前我們正在使用Sonar(2.12我認爲?),但問題是需要分析我們項目中40-60分鐘的所有代碼。由於我們有幾個分支在不同的子項目上工作,因此我們需要將其擴大。代碼增量靜態分析工具?

這就是爲什麼我正在尋找一種工具,可以分析僅來自最新提交(這對我的知識Sonar不支持)代碼,或者只有最後X小時/天/隨你。

我已經找到了截止插件聲納,這理應做什麼,我想(只檢查從已經在某個日期之後被修改的文件中的代碼),但:

  1. 我還需要檢查它的工作原理
  2. 檢查它是否支持動態日期更改(所以它只會考慮代碼從最後一天,而不是我必須每天手動更改排除日期)。
  3. 它似乎並沒有得到很好的支持(最後的改變在2010年,它仍然是0.1版本)

這將是完美的,如果只檢查從上次的代碼提交,但還沒在任何地方都看不到。

另外作爲一個側面的問題:在每次提交後(即使用哈德森聲納插件)運行分析是好事還是應該避免?在我的最後一支團隊中,我們的聲吶就是這樣運行的,如果我們「破壞了它」(添加了一個主要/關鍵代碼),我們會收到即時電子郵件。這很方便,因爲我們知道誰是錯誤的(基於提交的信息)。或者我們應該減少分析它(每週可以說一次)?在這種情況下,我將不得不檢查Sonar是否能夠說出誰犯了有問題的代碼。

+0

您是否正在尋找免費工具? – kosa 2012-01-10 16:13:27

+0

啊是的,我忘了提及:它必須是免費的。不一定非常完美,但必須是免費的。 – 2012-01-10 16:38:11

回答

3

有很少,特別是因爲許多工具/規則依賴走可能的堆棧來限制誤報的數量。因此,一個程序集中的更改也需要對調用程序集進行重新評估,這不像從外部看起來那麼簡單。

要加速靜態分析,請考慮投資內存磁盤或SSD以存儲源和二進制文件。使用多核機器,有足夠的內存並儘可能運行這些工具的x64版本。這些工具中的很多都是第一個I/O,然後是CPU限制。通過減少系統的延遲和吞吐量以及所需的交換量(通過擁有足夠的內存)來進一步減少I/O,可以找到大部分改進。

您還可以使用夥伴構建/驗證擱置集在構建服務器上構建,以將構建時間卸載到可在開發人員之間共享的其他計算機。

+0

希望我能得到你所說的所有/任何裝備:)現在,我必須滿足每天使用cutoff插件製作的內容。我猜想比沒有好。 – 2012-01-19 13:04:51

+0

嘗試通過不投資於這些東西來總結您失去的東西您會驚訝地發現,您可以節省多少時間進行改進。 – jessehouwing 2012-01-22 11:25:18

0

也有這樣的工具進行靜態分析:

  1. PMD
  2. Checkstyle
  3. FindBugs

高的機會,你會發現在它的聲納有用的替代。

您沒有提及是否使用Continuous Integration工具。可能你會需要它運行,以便使用這些工具運行檢查。

+0

是的,我們之前使用過所有3個,但切換到現在完成所有工作的聲納。同樣作爲CI我們使用哈德森。 – 2012-01-19 15:00:09

+0

那麼也許你只需要減少運行檢查的次數? – altern 2012-01-19 15:23:45

+0

是的,我已經做了2個改進:首先我不在哈德森運行一個單獨的聲納工作,它將首先構建整個應用CI風格,然後再爲聲納做它,但是我開始建立一個聲納後,獨聯體國家。然後我不必運行測試,我只分析最新的變化。整個事情現在在10分鐘左右,我認爲生病會得到更好的結果。 – 2012-01-19 15:44:34

0

我意識到我遲到了,但還有另一種工具,可能與您無關:Teamscale

Teamscale連接到你的資料庫(例如的Git或SVN),並逐步分析你的代碼,之後每次提交。有了這些,您幾乎可以立即獲得有關新/固定代碼問題的反饋。您還可以查看代碼的完整歷史記錄,黑名單誤報等等。 (完全披露:我是一個Teamscale開發人員)