首頁>技術>

SonarQube介紹

SonarQube是一種自動程式碼審查工具,用於檢測程式碼中的錯誤、漏洞和程式碼氣味。它可以與您現有的工作流程整合,以支援跨專案分支和拉取請求的連續程式碼檢查。

Sonar(SonarQube)是一個開源平臺,用於管理原始碼的質量。Sonar 不只是一個質量資料報告工具,更是程式碼質量管理平臺。支援的語言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。主要特點:程式碼覆蓋:透過單元測試,將會顯示哪行程式碼被選中改善編碼規則搜尋編碼規則:按照名字,外掛,啟用級別和類別進行查詢專案搜尋:按照專案的名字進行查詢對比資料:比較同一張表中的任何測量的趨勢

sonar安裝

1,下載sonar

sonar支援跨平臺,如linux,windows等,下載地址:

https://www.sonarqube.org/downloads/

我下載的是6.6的版本,新版本好象不再支援mysql。下載後解壓可以看到如下目錄:

bin目錄放的是啟動檔案,conf放的是配置檔案,extensions/plugins放的是外掛。

2,下載sonar-scanner

下載地址:

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

根據你作業系統選擇下載,我下載的是2.8版本,如果上面網址找不到2.8版本,可以試下這個下載地址:

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli

注意:sonerScanner對JDK版本也會有要求的,2.8支援java8

3,配置資料庫

新建一個空庫,資料庫名自己取,比如取sonar,

配置sonar:

開啟conf/sonar.properties檔案,可以看到配置檔案中預設寫了各種資料鏈接的例子,在mysql那塊,加入我們自己的資料庫連線即可,如

sonar.jdbc.username=test

sonar.jdbc.password=test

sonar.jdbc.url=jdbc:mysql://192.168.1.104:13314/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

配置sonar-scanner:

開啟conf/sonar-scanner.properties檔案,同樣加入上面的資料庫連線即可。

4,漢化包(此過程可跳過)

https://github.com/xuhuisheng/sonar-l10n-zh/releases

根據sonar的版本下載對應的漢化包,因為我下載的sonar是6.6版本,所以下載

sonar-l10n-zh-plugin-1.18.jar

將下載jar包放到/extensions/plugins目錄中

5,設定環境變數

為了方便使用sonar-scanner命令,需要為其設定環境變數

將配置好的sonar和sonar-scanner上傳到linux伺服器上,我的是存放路徑是/sterson。

編輯/etc/profile檔案,追加sonar-scanner路徑:

export PATH=$PATH:/sterson/sonar-scanner-4.5.0.2216-linux/bin

然後執行 source /etc/profile 使環境變數配置生效。

使用sonar和sonar-scanner

1,啟動sonar

進入sonar目錄,比如我的路徑是 /sterson/sonarqube-6.6/bin/linux-x86-64

啟動命令: ./sonar.sh start

重啟命令:./sonar.sh restart

停止命令:./sonar.sh stop

在瀏覽器訪問http://192.168.41.164:9000/,看到正在啟動,等啟動完後,

注意:啟動時不能用root使用者,不然會報錯,因為wrapper不能以root來啟動,所以需要建立一個普通使用者來啟動。

2,編輯sonar-project.properties

在需要掃描的原始碼專案的根目錄,建立sonar-project.properties檔案,內容如下:

sonar.projectKey=my:project

sonar.projectName=THCompanyService

sonar.projectVersion=1.0

sonar.sources=/sterson/resource/THCompanyService/trunk/dev/src/main/java

sonar.java.binaries=/sterson/resource/THCompanyService/trunk/dev/target/classes

projectName:專案名稱,自定義即可

projectVersion:專案版本

Sources:原始碼路徑

Binaries:專案編譯後的class檔案的目錄

3,掃描

進入原始碼所在根目錄,執行sonar-scanner,可看到開始掃描。

注意:如果報/bin/sh: sonar-scanner: 未找到命令,則嘗試建立連線,命令如下:

ln -sv /sterson/sonar-scanner-4.5.0.2216-linux/bin/sonar-scanner /usr/local/bin/sonar-scanner

/sterson/sonar-scanner-4.5.0.2216-linux/bin/sonar-scanner,這個是我的路徑,需要改成你實際的路徑

掃描結束後,返回到瀏覽器sonar檢視結果:

安裝sonar-pdf-plugin

到此網址下載

https://gitee.com/zzulj/sonar-pdf-plugin

注意:這裡只提供原始碼,下載後需要用maven編譯生成jar包,所以如果你還沒安裝maven,要先安裝maven,然後執行命令:

mvn clean package -Dmaven.test.skip=true

編譯後會生成sonar-pdfreport-plugin-3.0.3.jar

將jar包放到sonar的extensions/plugins目裡,重啟sonar。

然後在sonar的配置中就可以看到pdf了。

注意:需要每個配置項都設定並儲存。Username和Password我設定的是與sonar的一樣。

否則掃描過程會報如下錯誤:

INFO: Can't get Compute Engine task status.Retry.........

ERROR: Problem generating PDF file.

org.sonar.report.pdf.entity.exception.ReportException: Can't get Compute Engine task status

設定sonar web 記憶體

修改/conf/sonar.properties檔案,在文中搜索這兩項,去掉前面的#號。

注間:javaOpts的設定的值不能大於ce的值,否則啟動報錯。

sonar.web.javaOpts=-Xmx1024m -Xms512m -XX:+HeapDumpOnOutOfMemoryError

sonar.ce.javaOpts=-Xmx1024m -Xms128m -XX:+HeapDumpOnOutOfMemoryError

設定sonara-scanner記憶體

修改/etc/profile檔案,追加如下配置:

export SONAR_SCANNER_OPTS="-Xms256m -Xmx2048m -XX:MaxPermSize=1024m -XX:ReservedCodeCacheSize=256m"

28
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Redis叢集版(主從、哨兵、叢集)