簡體   English   中英

用於增量靜態分析代碼的工具?

[英]Tool for incremental static analysis of code?

是否有任何免費的工具允許對代碼進行增量靜態分析(對於SVN,最好是Git)? 目前我們正在使用Sonar(2.12我認為?)但問題是需要分析我們項目中所有代碼的時間是40-60分鍾。 我們需要增加它,因為我們有幾個分支在不同的子項目上工作。

這就是為什么我正在尋找一種工具,可以只從最新的提交(據我所知的Sonar不支持)或僅在過去X小時/天/之內修改的代碼分析代碼。

我已經找到了Sonar的Cutoff插件,據說可以做我想要的(只檢查文件中某個日期后修改過的代碼),但是:

  1. 我仍然需要檢查它是否有效
  2. 檢查它是否支持動態日期更改(因此它只會考慮來自最后一天的代碼而不是我必須每天手動更改排除日期)。
  3. 它似乎沒有得到很好的支持(2010年的最后一次更改,它仍然是版本0.1)

如果它只檢查上次提交的代碼,那將是完美的,但我還沒有看到任何地方。

另外作為一個附帶問題:在每次提交(即使用哈德森聲納插件)之后運行分析是好事還是應該避免? 在我的上一個團隊,我們有聲納這樣運行,如果我們“破壞它”我們會得到一個即時電子郵件(添加了代碼的主要/關鍵)。 這非常方便,因為我們知道誰有錯(基於提交的信息)。 或者我們應該更少地分析它(讓我們說每周一次)? 在那種情況下,我將不得不檢查Sonar是否能夠說出誰犯了有問題的代碼。

很少,特別是因為許多工具/規則依賴於走可能的堆棧以限制誤報的數量。 因此,一個組件的更改也需要重新評估調用組件,它不像從外部看起來那么簡單。

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

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

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

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

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

  1. PMD
  2. Checkstyle的
  3. FindBugs的

很有可能你會發現它是聲納的有用替代品。

您沒有提到是否使用持續集成工具。 可能您需要它並運行才能使用這些工具運行檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM