一 概述
本文主要介紹jenkins,sonarQube的安裝與整合,程式碼分析有sonarQUbe和sonar-runner構建,或者在maven項目情況下可以sonarQbude和maven的構建。介紹jenkins的編譯打包部署,代碼檢查。最後整合jenkins 二 預裝軟體
軟體名稱 平台 備忘 jdk1.8.0_60 Win10 作業系統 apache-tomcat-8.0.20 Win10 Tomcat容器 Jenkins Win10 連接埠 8088 sonarqube-6.2 Win10 連接埠 9090 sonar-runner-2.6.1 Win10 mysql 5.6 Win10 nexus-3.2.0-01 Linux Maven私人服務 三 配置環境變數
配置各軟體的環境變數方法不展開描述。除nexus外,其餘都在安裝在本地。
四 sonarQube安裝
4.1 將sonaeQbude解壓到本地。
修改sonar.properties檔案.資料庫使用本地的mysql,建立一個名為sonar的庫。
當sonarQube啟動時候會自動建立表。
建庫語句 Js代碼 CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 添加如下內容,sonar預設內建mysql驅動。 Js代碼 sonar.jdbc.username=root sonar.jdbc.password=11111 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
新的sonarQbude的表相對舊版來說有了新的改動,升級時候需要把舊的表刪除。否則會報以下錯。 Js代碼 exception caught on transport layer [[id: 0xc7fbf08e, /127.0.0.1:55381 => /127.0.0.1:9001]], closing connection java.io.IOException: 遠程主機強迫關閉了一個現有的串連。
4.2 啟動sonarQube
運行“StartSonar.bat”, 訪問9000連接埠,sonar預設內建了jetty伺服器。
預設使用者名密碼 admin、admin。一些設定和菜單只有在登陸之後才能看到。
因個人9000連接埠有其他用途,將連接埠改為9090. Java代碼 sonar.web.port=9090
4.3漢化sonarQube
官網地址 http://docs.sonarqube.org/display/PLUG/Plugin+Library
將sonar-l10n-zh-plugin-1.13.jar放置於sonarqube-6.2\extensions\plugins下。重啟sonarQube。 soanrQube有一些需要到的外掛程式,用於程式碼分析。 外掛程式介紹
外掛程式的下載地址為:http://docs.codehaus.org/display/SONAR/Plugin+Library
將下載後的外掛程式上傳到${SONAR_HOME}extensions\plugins目錄下,重新啟動sonar。
sonar預設整合了Java Ecosystem外掛程式,該外掛程式是一組外掛程式的合集
(1)Java [sonar-java-plugin]:java原始碼解析,計算指標等
(2)Squid [sonar-squid-java-plugin]:檢查違反Sonar定義規則的代碼
(3)Checkstyle [sonar-checkstyle-plugin]:使用CheckStyle檢查違反統一代碼編寫風格的代碼
(4)FindBugs [sonar-findbugs-plugin]:使用FindBugs檢查違反規則的缺陷代碼
(5)PMD [sonar-pmd-plugin]:使用pmd檢查違反規則的代碼
(6)Surefire [sonar-surefire-plugin]:使用Surefire執行單元測試
(7)Cobertura [sonar-cobertura-plugin]:使用Cobertura擷取程式碼涵蓋範圍
(8)JaCoCo [sonar-jacoco-plugin]:使用JaCOCO擷取程式碼涵蓋範圍
常用的外掛程式:
(1)JavaScript代碼檢查:http://docs.codehaus.org/display/SONAR/JavaScript+Plugin
(2)Python代碼檢查:http://docs.codehaus.org/display/SONAR/Python+Plugin
(3)Web頁面檢查(HTML、JSP、JSF、Ruby、PHP等):http://docs.codehaus.org/display/SONAR/Web+Plugin
(4)xml檔案檢查:http://docs.codehaus.org/display/SONAR/XML+Plugin
(5)scm源碼庫統計分析:http://docs.codehaus.org/display/SONAR/SCM+Stats+Plugin
(6)檔案度量:http://docs.codehaus.org/display/SONAR/Tab+Metrics+Plugin
(7)中文語言套件:http://docs.codehaus.org/display/SONAR/Chinese+Pack
(8)時間表顯示度量結果:http://docs.codehaus.org/display/SONAR/Timeline+Plugin
(9)度量結果演化圖:http://docs.codehaus.org/display/SONAR/Motion+Chart+Plugin
(b)外掛程式配置樣本(本段內容來自http://www.ibm.com/developerworks/cn/java/j-lo-sonar/
五 sonar-runner安裝
5.1 修改sonar-runnerc下的conf的sonar-scanner.properties設定檔
Java代碼 sonar.host.url=http://localhost:9090 sonar.jdbc.username=root sonar.jdbc.password=11111 sonar.jdbc.url=jdbc:mysql://10.10.5.64:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
5.2 在項目的根目錄下添加檔案sonar-project.properties
1 單一個項目 Java代碼 sonar.projectKey=pljj sonar.projectName=pljj sonar.projectVersion=1.0-SNAPSHOT sonar.sources=src/main/java sonar.tests=src/test/java sonar.binaries=target/classes sonar.language=java
2 maven多模組 Java代碼 sonar.projectKey=pljj sonar.projectName=pljj sonar.projectVersion=1.0 sonar.sources=. sonar.language=java sonar.sourceEncoding=UTF-8
或者 Java代碼 sonar.projectKey=com.pljj-job sonar.projectName=elastic-job sonar.projectVersion=1.1.0 # Set modules IDs sonar.modules=pljj-core,pljj-console,pljj-spring # Modules inherit properties set at parent level sonar.sources=src/main/java sonar.tests=src/test/java sonar.java.binaries=target sonar.language=java