2012-11-03 82 views
3

我打算逐步在我的項目上運行檢查樣式。目前我的CI服務器正在進行增量構建,即只對已修改的文件和依賴項運行單元測試。但是對於檢查風格,PMD,Findbugs我們在整個項目上運行,而不是僅在修改過的文件上運行。增量構建檢查樣式,PMD,FindBugs

我需要在整個項目上運行這些靜態分析工具進行第一次構建,然後在每個增量構建上只運行修改過的一組文件。併合並修改後的文件的結果以完成結果,以便了解工具驗證是否包含在內。

是否有任何ant任務可用於上述要求?

回答

0

我不確定是否有簡單的選項可以解決您的問題。 工具無法動態識別修改的文件,而不是針對配置中給定的完整路徑(例如:源路徑/二進制路徑)執行工具。既然你想保留以前的結果,這有點複雜。

首先,您需要確定在增量構建執行時是否有辦法獲取修改文件的列表。如果可以的話,那麼你可以修改螞蟻目標,只將修改後的文件複製到臨時目錄中。位置並將其指向工具。

然後與之前的報告合併, 首先,您必須在執行上述ant-target之前備份現有報告。然後編寫一個xsl,用新報告中包含的信息替換現有報告中的信息。通過執行xsl using ant來創建單獨的報告。因此該報告將包含您需要的結果。

0

如果您的CI系統可以創建它認爲已更改的文件列表(我認爲它可以,因爲它使用了這樣的列表進行編譯),那麼您應該能夠至少部分地實現結果。

對於CheckStyle和PMD,它們的ant任務使用文件集,該文件集提供運行分析的文件。只給他們更改的文件。

FindBugs,至少according to the documentation,不能這樣做。這很有道理,因爲有許多FindBugs檢測器可以讀取除檢查的文件以外的其他文件以完成其工作。因此,根據可用於分析的其他文件,FindBugs分析可以爲同一文件生成不同的結果。

最終您不會得到綜合報告。相反,來自這些工具的報告將只包含有關實際檢查的文件的信息。這可能足以決定是否失敗構建。

【如果你想在更大規模上做到這一點,追蹤規則合規性,技術債務等的發展,我推薦免費的SonarQube工具。 SonarQube還與您的CI系統集成。不過,它不會執行增量運行。 更新:由於SonarQube 4.0版本,增量分析是可能的。見「增量分析」下的here。]