1. 程式人生 > >jenkins學習系列之PMD靜態程式碼檢測

jenkins學習系列之PMD靜態程式碼檢測

一、jenkins整合PMD流程

實際生產中,上線的程式碼往往要經過檢測,滿足一些規則才行,這些規則可以是直接使用官方的規則,也可以是自己寫的。

因為目前的工作和java有關,所以這裡以java程式碼靜態檢測 PMD為例子來進行講解。這裡PMD是通過maven命令來啟動的。

jenkins整合pmd流程大致如下:

  1. 使用者上傳程式碼到程式碼庫,程式碼庫有程式碼變更
  2. jenkins抓取到這次變更,開始下載程式碼庫
  3. jenkins開始解析maven pom檔案,並下載相應的依賴
  4. jenkins開始pmd檢測,檢測通過就構建成功,檢測失敗就傳送失敗郵件

本篇文章是以gitlab當做程式碼的存放地址,具體配置可以檢視上一篇文章。關於實時抓取程式碼變更,jenkins中有gitlab的merge request操作以及“Build when a change is pushed to GitLab”選項

,但是因為我是用的本地jenkins,而gitlab中web-hook不允許使用localhost,所以第三個選項和第六個選項都勾選不了,這兩個選項具體的區別之後用到的時候再講,這裡我採取的其他辦法(scm poll、手動構建),如下圖所示:

二、jenkins配置

2.1 郵件配置

試想這樣一種情景:程式碼修改很頻繁的情況下,專案負責人需要一直跟進jenkins的工作狀態,對其來說,也是一件很痛苦的事情。所以在實際專案中,我們需要使用郵件的功能,當構建失敗的時候傳送郵件給專案負責人。

這個外掛的作用是自己製作郵件的模板,取代jenkins的原生郵件,本篇文章使用的是jenkins原生的郵件,點選 系統管理-->管理外掛-->可選外掛-->下載

2. 郵件配置

點選系統管理--->系統設定

3.job中關於郵件的配置

2.2 job配置

因為pmd是用maven來啟動的,所以在配置的時候需要先配置好maven環境,具體配置見

汪康:jenkins學習系列之jenkins基本配置zhuanlan.zhihu.com圖示
  1. 新建一個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