1. 程式人生 > 實用技巧 >Sonar搭建以及前端程式碼掃描

Sonar搭建以及前端程式碼掃描

原文連結:https://developer.ibm.com/zh/articles/j-lo-sonar/

Sonar伺服器搭建

Sonar概述

Sonar 是一個用於程式碼質量管理的開放平臺。通過外掛機制,Sonar 可以整合不同的測試工具,程式碼分析工具,以及持續整合工具。與持續整合工具(例如 Hudson/Jenkins 等)不同,Sonar 並不是簡單地把不同的程式碼檢查工具結果(例如 FindBugs,PMD 等)直接顯示在 Web 頁面上,而是通過不同的外掛對這些結果進行再加工處理,通過量化的方式度量程式碼質量的變化,從而可以方便地對不同規模和種類的工程進行程式碼質量管理。

在對其他工具的支援方面,Sonar 不僅提供了對 IDE 的支援,可以在 Eclipse 和 IntelliJ IDEA 這些工具裡聯機檢視結果;同時 Sonar 還對大量的持續整合工具提供了介面支援,可以很方便地在持續整合中使用 Sonar。

此外,Sonar 的外掛還可以對 Java 以外的其他程式語言提供支援,對國際化以及報告文件化也有良好的支援。

——摘抄自:http://www.ibm.com/developerworks/cn/java/j-lo-sonar/

安裝JDK

為了保證穩定還是選擇使用JDK7

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

下載到伺服器後,按如下命名執行:

 1 cd /opt
 2 mkdir java
 3 mv ~/jdk-7u71-linux-x64.tar.gz /opt/java
 4 cd /opt/java
 5 tar zxvf jdk-7u71-linux-x64.tar.gz
 6 ln -s jdk1.7.0_71/ jdk   #做軟鏈,方便之後升級
 7 ls -lht    #檢視軟鏈
 8 vim ~/.bash_profile
 9 #新增如下內容:
10 #!/bin/bash
11 export JAVA_HOME=/opt/java/jdk
12 export PATH=/opt/java/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
13  
14 source ~/.bash_profile
15 cp ~/.bash_profile /etc/profile.d/java.sh

執行完後,使用

java -version驗證是否配置成功;

客戶端安裝配置Maven

過程很簡單,與JDK類似,具體如下:

download:http://maven.apache.org/download.cgi

 1 mkdir /opt/maven
 2 mv ~/apache-maven-3.2.5-bin.tar.gz /opt/maven
 3 cd /opt/maven
 4 tar zxvf apache-maven-3.2.5-bin.tar.gz
 5 ln -s apache-maven-3.2.5 apache-maven
 6 vim ~/.bash_profile
 7 #新增如下內容:
 8 export M2_HOME=/opt/maven/apache-maven-3.2.5
 9 export PATH=$M2_HOME/bin:$PATH
10  
11 source ~/.bash_profile

執行完畢後,使用mvn -version驗證是否配置成功;

安裝Sonar

download:http://www.sonarqube.org/downloads/

下載到安裝包後,使用unzip將其解壓到/opt/sonar目錄下,到/opt/sonar/sonarqube-4.5.2/bin/linux-x86-64目錄下,

執行:shsonar.sh start

啟動sonar,訪問:192.168.11.234:9000

可出現如下畫面,說明sonar已安裝成功,

配置MySQL

Sonar雖然自帶了資料庫,但不推薦生產環境使用,我們還是使用MySQL,MySQL伺服器在遠端(假設IP為192.168.11.212),與Sonar伺服器分離,具體配置如下所示:

1 CREATE USER sonar@'192.168.11.234';
2 CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 
3 GRANT ALL PRIVILEGES ON  sonar.* TO 'sonar'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
4 FLUSH PRIVILEGES;

配置Sonar

配置完MySQL後,需要修改Sonar的配置檔案,具體操作如下:

1 cd /opt/sonar/sonarqube-4.5.2/conf
2 vim sonar.properties
3 # 只需修改username,password和url即可
4 sonar.jdbc.username=sonar
5 sonar.jdbc.password=password
6 sonar.jdbc.url=
7 jdbc:mysql://192.168.11.212:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

配置完成後,到bin目錄下執行 sh sonar.sh restart,重啟Sonar,再次開啟介面,即可看到資料庫已配置成功;

客戶端Maven執行Sonar掃描

在自己開發環境下Maven的配置檔案settings.xml檔案中,新增如下內容:

 1 <profile>
 2   <id>sonar</id>
 3   <activation>
 4     <activeByDefault>true</activeByDefault>
 5   </activation>
 6   <properties>
 7     <sonar.jdbc.url>jdbc:mysql://192.168.11.212:3306/sonar?useUnicode=true&amp;characterEncoding=utf8&amp;rewriteBatchedStatements=true&amp;useConfigs=maxPerformance</sonar.jdbc.url>
 8     <sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName>
 9     <sonar.jdbc.username>sonar</sonar.jdbc.username>
10     <sonar.jdbc.password>password</sonar.jdbc.password>
11     <sonar.host.url>http://192.168.11.234</sonar.host.url>
12   </properties>
13 </profile>

之後cd到自己的專案根目錄,執行:mvn sonar:sonar,就可以完成sonar的掃描了,它會自動把結果掃描儲存到mysql,執行完成之後,登陸sonar的頁面,即可看到我們剛剛生成的報告;

TODO

生產環境將Sonar部署到Tomcat中;

前端程式碼掃描(mac

在環境變數配置中新增sonar執行快捷命令

  1. 開啟配置檔案 控制檯輸入: open -e .bash_profile
  2. 貼上以下內容
export SONAR_BIN=/Applications/sonar-scanner-4.3.0.2102-macosx
export PATH=$PATH:$SONAR_BIN/bin
  1. 關閉即可儲存
  2. 更新配置檔案 控制檯輸入 : source .bash_profile
  3. 控制檯輸入 : echo $PATH // 檢視是否更新成功

在專案目錄下新增sonar-scanner配置檔案(附上我的脫敏配置檔案)

檔名: sonar-project.properties

sonar.projectKey=name // 自己的sonar伺服器上註冊的專案名稱
sonar.projectName=name // 自己的sonar伺服器上註冊的專案名稱
sonar.projectVersion=1.0
sonar.sources=src // 檢查的程式碼範圍
sonar.exclusions=node_modules\**\* // 忽略檔案
sonar.host.url= localhost // 自己的sonar伺服器地址包括埠名
sonar.login=username // 自己的sonar伺服器使用者名稱
sonar.password=password // 自己的sonar伺服器密碼
sonar.sourceEncoding=UTF-8

在自己的sonar伺服器建立一個測試的新專案(搭建過程省略,一般使用sonar工具的公司本身會搭建好)

最後在專案根目錄執行 sonar-scanner

執行結果展示: