[SonarQube]Scanners(MSBuild)執行掃描時出現記憶體不足SonarQube java.lang.OutOfMemoryError: GC overhead limit exceeded

最近在新的專案CI流程內開始加入聲納(SonarQube)來進行程式碼分析,希望能獲得海面下更多有關程式碼品質度量的指標。從Jenkins以Command Line執行大型程式庫掃描時,卻出現了記憶體不足的異常,不過小型程式庫則可以正常完成掃描。

進入疑難排解階段,我們先確認伺服器記憶體是充足無虞的,不過觀察掃描程式在大型程式庫執行時,只吃到1G多一點就出現記憶體不足的異常。筆記解題方法。

...繼續閱讀 »

[Jenkins]持續整合之路(十一)Jenkins加入Slave作自動佈署(Copy Artifact plugin)

.NET專案完成建置、掃描及測試等等等的持續整合程序後,下一步就到了過版到QA環境的佈署階段了,要佈署到IIS的Web專案可以靠Web Deploy單鍵佈署建立的發行組態與Jenkins直接整合,透過web deploy(8172)直接佈署到WEB Server的IIS。但遇到Windows Service或是其他執行檔專案時,就稍微麻煩一點。這次我們在Jenkins Master作建置並且產生發行成品,但佈署時,直接從測試機連回Jenkins Master取得封裝成品來作版本更新。

...繼續閱讀 »

[Jenkins]持續整合之路(九)程式碼度量(SourceMonitor)

上一篇,我們用cloc.exe 自動計算程式碼行數作為程式碼開發進度的概觀,但如果想調查專案中的程式有沒有波動拳的情形(很深的巢狀邏輯),觀察程式碼複雜度、可維護性指數都是找出快打旋風Ryu與Ken的方法。

在時間還是充裕的時候,也許我們人工Review時可以用上Visual Studio擴充套件的CodeMaid或是Visual Studio 內建的程式碼度量(Code Metrics)功能來識別出潛在的技術債,不過,在自動化持續整合階段,如果沒用SonarQube,要找一個設定方便,資訊又完整的就令人傷腦筋。

 

...繼續閱讀 »

[Jenkins]持續整合之路(七)程式碼檢查(SonarQube)

在第四個關卡中(Test and Scan),除了自動測試,另一個需要持續整合的就是程式碼檢查了。除了常用的程式碼風格(StypeCop)、收集程式碼警告(Warnings) 到程式碼度量(SourceMonitor)、程式碼行數(SLOCCount)及未完成工作的plugin(Task Scanner)外,通常可能會加上源碼檢測工具(Fortify SCA、Checkmarx),不過最近被老闆交代看好進行中專案的技術債(Technical debt),試用了一陣子SonarQube來把關程式碼品質,透過量化的技術債指標來盯緊品質,來筆記安裝及搭配Jenkins組態過程。

 

...繼續閱讀 »

[Jenkins]持續整合之路(六)使用MSTest framework建立單元測試(MSTest and VSTest Runner Plugin)

走過前幾天持續整合之路,每天我們可以確保專案擁有能編譯正確的程式版本,完成了最基本的版控和Daily Build要求。不過,我們開發的log程式沒經過測試,執行整合後,如果直接佈署上SIT/QA測試機,一定有被開單和罰站的風險,雖然面對可怕的使用者,我們心無雜念,更練就老僧入定的技巧,但還是要讓自己能免於老闆的關心,來補簡單的單元測試,讓CI Server幫我們持續整合,未來收到千變萬化的使用者需求,我們也能既快速又自動的執行基本測試。

...繼續閱讀 »

[Jenkins]持續整合之路(二)準備編譯.NET程式的環境(安裝MSBuild及NuGet Plugin)

支援的專案都是以.NET(C#)開發為主,走進CI持續整合之前,得先幫Jenkins Server準備好可以編譯.NET程式的環境並且完成Jenkins的MSBuild組態工作。在建置過程中,專案也可能需要還原NuGet 上的套件,同時library專案建置完成後,也希望將編譯並且測試好的套件發佈到公司內的Private NuGet Server,好,來完成準備工作。

...繼續閱讀 »