天天看點

代碼審查工具Sonar(一)-- 簡介與安裝

代碼審查是持續內建理論裡重要的一部分。審查軟體和測試軟體之間存在着微妙的差别。測試是動态的,它執行軟體,目的是測試軟體的功能。審查則基于一組預先定義的規則分析代碼。審查也不同于編譯。編譯是從文法的角度來檢查代碼,審查則是從文法以外的角度着手,例如,編碼風格,編碼規範,重碼率,複雜度,代碼注釋率等等。衆所周知,編譯正确的代碼不一定就沒有問題,那麼除了測試人員從運作整個軟體的角度來排查功能點,從源代碼分析的角度找到潛在的問題點也是一項重要的補充工作。Sonar(也叫SonarQube)就是一款優秀的代碼審查工具。其官網位址:http://www.sonarqube.org/

下圖展示的是Sonar的架構。

代碼審查工具Sonar(一)-- 簡介與安裝

最上面一層代表輸入,也就是我們要檢查的源代碼。這些源代碼可以是Java代碼, Cobol代碼,C#代碼等。目前Sonar支援對20多種語言的源代碼的檢查。

中間一層有兩部分,右邊綠色方框标記的"Eclipse"是指Sonar針對Eclipse的插件,友善使用者在Eclipse裡直接進行與Sonar相關的操作。這部分不在本文的讨論範圍之内。

中間層的左邊是Analysers,指的是進行代碼分析的程式,統稱為plugin。這些程式既包括Sonar自己提供的分析程式,也包括第三方的分析程式,例如,針對C++代碼,有Sonar的程式檢查代碼行數,重碼率,注釋率,也有做靜态檢查的第三方工具cppcheck,做運作時記憶體檢測的Valgrind,做風格檢查的Vera++,以及做安全性檢查的RATS等。所有這些工具将檢查結果生成xml格式的report,由sonar程式讀取到資料庫中,也就是第三層左邊的database。

在第三層,Sonar的web應用程式讀取database裡的代碼檢查結果,并以豐富的圖像界面形式呈現在使用者面前。Sonar有相當數量的plugin是與界面效果相關的。

通過Sonar進行一次代碼審查的過程就是從第一層開始,沿着箭頭一直行進到Server呈現部分結束的工作流程。

下面介紹Sonar server的安裝:

1. 安裝database

Sonar自帶一個簡易的database,如果是想真正将Sonar投入項目使用,而不是實驗性的在本地操作一下,最好安裝專門的資料庫。我們選擇的是免費的mysql版本。http://dev.mysql.com/downloads/mysql/

在安裝目錄/bin/windowsxxxxx下運作:mysqld --install 将mysql安裝為windows service,在service清單裡start mysql service。

運作:mysql -u root,進入mysql client

運作下面的指令行建立database sonar并建立使用者sonar,密碼sonar

create user 'sonar'@'localhost' identified by 'sonar';

create database sonar;

grant all privileges on *.* to 'sonar'@'localhost';

2. 安裝Sonar server

需要先安裝JDK6或7

然後下載下傳并解壓Sonar包即可。http://www.sonarqube.org/downloads/ 選擇download最新的SonarQube。

3. 修改配置檔案

<install_directory>/conf/sonar.properties,重點打開注釋(删除行首的#符号)并修改下面幾個部分:

a. web settings->sonar.web.host/port/context

b. sonar.jdbc.url,因為我安裝的是mysql,是以将原本打開的h2行注釋掉,将mysql的部分打開。

<install_directory>/conf/wrapper.conf, 因為安裝的是JDK,将wrapper.java.additional.4=-server行首的注釋符号 # 删掉

4. 運作<install_directory>/bin下的InstallNTService.bat可以将sonar安裝為windows service,如果開啟service有任何問題,應該在指令行視窗中手工運作StartSonar.bat來檢視問題點,并參考<install_directory>/logs裡的日志檔案。

5. 安裝analyser,這個要根據語言來選擇。詳情可參見http://docs.codehaus.org/display/SONAR/Languages

例如:C#代碼推薦sonar runner,而C++代碼推薦maven。因為筆者要分析的是C#代碼,是以下面介紹sonar runner的安裝方法。

a. 登入sonar,預設的管理者賬号是admin/admin,選擇Update Center->Available Plugins->C#和.NET

代碼審查工具Sonar(一)-- 簡介與安裝

b.安裝C#代碼的第三方分析器,安裝清單詳見http://docs.codehaus.org/display/SONAR/C%23+Ecosystem+Installation+Guide

c. 安裝sonar runner。http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.3/sonar-runner-dist-2.3.zip

d. 建立環境變量SONAR_RUNNER_HOME用來指向sonar runner的安裝目錄。把<install_directory>/bin加到環境變量path中去。

e. 修改sonar runner安裝目錄下的配置檔案<install_directory>/conf/sonar-runner.properties,删除對應database行首的#,在本例中是mysql行。打開sonar.host.url行的注釋。

f. 如果能在cmd視窗中正确運作sonar-runner -h則表示sonar-runner安裝配置成功。

繼續閱讀