jenkins學習系列之PMD靜態程式碼檢測
一、jenkins整合PMD流程
實際生產中,上線的程式碼往往要經過檢測,滿足一些規則才行,這些規則可以是直接使用官方的規則,也可以是自己寫的。
因為目前的工作和java有關,所以這裡以java程式碼靜態檢測 PMD為例子來進行講解。這裡PMD是通過maven命令來啟動的。
jenkins整合pmd流程大致如下:
- 使用者上傳程式碼到程式碼庫,程式碼庫有程式碼變更
- jenkins抓取到這次變更,開始下載程式碼庫
- jenkins開始解析maven pom檔案,並下載相應的依賴
- jenkins開始pmd檢測,檢測通過就構建成功,檢測失敗就傳送失敗郵件
本篇文章是以gitlab當做程式碼的存放地址,具體配置可以檢視上一篇文章。關於實時抓取程式碼變更,jenkins中有gitlab的merge request操作以及“Build when a change is pushed to GitLab”選項
二、jenkins配置
2.1 郵件配置
試想這樣一種情景:程式碼修改很頻繁的情況下,專案負責人需要一直跟進jenkins的工作狀態,對其來說,也是一件很痛苦的事情。所以在實際專案中,我們需要使用郵件的功能,當構建失敗的時候傳送郵件給專案負責人。
這個外掛的作用是自己製作郵件的模板,取代jenkins的原生郵件,本篇文章使用的是jenkins原生的郵件,點選 系統管理-->管理外掛-->可選外掛-->下載
2. 郵件配置
點選系統管理--->系統設定
3.job中關於郵件的配置
2.2 job配置
因為pmd是用maven來啟動的,所以在配置的時候需要先配置好maven環境,具體配置見
汪康:jenkins學習系列之jenkins基本配置- 新建一個maven專案
2.job配置如下
- 原始碼管理部分選擇git
- build配置如下所示(一般Goals and options填寫pmd:pmd,不需要再另外配置pom):
- 構建設定如下圖所示:
3.pom檔案部分配置如下所示:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
- 1.6指的是jdk的版本
- 如果對於maven的pom檔案不太熟悉,請自行百度(因為我也不熟悉^_^)
- 如果在jenkins上出現pom.xml找不到,可能是你配置的地址不對,請自行核查pom檔案是否在你的根目錄下
- 如果在構建的時候因為有錯誤導致jenkins一直在執行中,點選叉叉依然停止不了,請自行使用命令列jenkins restart來重啟jenkins,然後重新整理頁面
2.3專案執行以及檢視
配置完了以後點選立即構建:
左下角紅色代表構建失敗,說明有錯誤需要解決,藍色代表構建成功。點最近的一次構建:
失敗以後會收到相應的郵件,這裡我以163郵箱截圖為例子:
郵件裡面是jenkins的log日誌,可以自己去配置郵件模板來解決顯示內容的問題。
以上就是jenkins整合PMD的全部過程了。PMD主要是java程式碼的掃描,還有的是findbugs、checkstyle以及jacoco覆蓋率等都可以使用jenkins整合起來,如果你是用的php、C++、C等程式語言,那推薦可以使用sonarqube來做程式碼檢測,sonarqube的程式碼檢查的廣度和深度都更高,這個以後用到了再說如何配置。
如果對文章有疑問或者哪裡不懂的請聯絡我,在力所能及的範圍內幫助解答;如果文章有錯誤,也歡迎指出;也希望jenkins的大牛來一起互相交流學習。
微訊號:crazy_boy-smile
知乎連結:https://zhuanlan.zhihu.com/p/37378204