jdk的版本需要和Sonar版本一致(32bit或者都是64bit)
[原]代碼審查工具Sonar(一)-- 簡介與安裝
代碼審查是持續集成理論裡重要的一部分。審查軟體和測試軟體之間存在著微妙的差別。測試是動態的,它執行軟體,目的是測試軟體的功能。審查則基於一 組預先定義的規則分析代碼。審查也不同於編譯。編譯是從語法的角度來檢查代碼,審查則是從語法以外的角度著手,例如,編碼風格,編碼規範,重碼率,複雜 度,代碼注釋率等等。眾所周知,編譯正確的代碼不一定就沒有問題,那麼除了測試人員從運行整個軟體的角度來排查功能點,從原始碼分析的角度找到潛在的問題 點也是一項重要的補充工作。Sonar(也叫SonarQube)就是一款優秀的代碼審查工具。其官網地址:http://www.sonarqube.org/
下圖展示的是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
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安裝配置成功。
中文插件
http://jingyan.baidu.com/article/48206aeafc922b216ad6b3cb.html
SonarQube為靜態代碼檢查工具,幫助檢查代碼缺陷,改善代碼質量,提高開發速度,通過系列使用經驗分享給小夥伴們!
我們已經介紹過如何安裝了,現在我們來介紹如何分析,分析和安裝一樣簡單
【三】安裝中文插件
工具/原料
中文語言插件方法/步驟
1.進入插件下載頁面http://docs.codehaus.org/display/SONAR/Plugin+Library
2.找到Localization---chinese 點擊
中文插件下載頁面
注意,選擇插件一定要對應好版本
如4.3的sonar,就選用4.1+的插件版本
點擊Download 開始下載
下載後,放入sonar目錄如下sonarqube-4.3\extensions\plugins
重啟Sonar,打開頁面
END注意事項
插件複製進去後一定要重啟,才能看到效果哦linux版本安裝
http://www.blogjava.net/qileilove/archive/2013/09/25/404405.html
SonarQube代碼質量管理平臺安裝與使用
Sonar簡介
Sonar是一個用於代碼質量管理的開源平臺,用於管理原始碼的質量,可以從七個維度檢測代碼質量
通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種程式語言的代碼質量管理與檢測sonarQube能帶來什麼?
Developers' Seven Deadly Sins
1.糟糕的複雜度分布
文件、類、方法等,如果複雜度過高將難以改變,這會使得開發人員難以理解它們,且如果沒有自動化的單元測試,對於程序中的任何組件的改變都將可能導致需要全面的回歸測試
2.重複
顯然程序中包含大量複製粘貼的代碼是質量低下的sonar可以展示源碼中重複嚴重的地方
3.缺乏單元測試
sonar可以很方便地統計並展示單元測試覆蓋率
4.沒有代碼標準
sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫
5.沒有足夠的或者過多的注釋
沒有注釋將使代碼可讀性變差,特別是當不可避免地出現人員變動時,程序的可讀性將大幅下降
而過多的注釋又會使得開發人員將精力過多地花費在閱讀注釋上,亦違背初衷
6.潛在的bug
sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢測出潛在的bug
7.糟糕的設計(原文Spaghetti Design,義大利麵式設計)
通過sonar可以找出循環,展示包與包、類與類之間的相互依賴關係
可以檢測自定義的架構規則
通過sonar可以管理第三方的jar包
可以利用LCOM4檢測單個任務規則的應用情況
檢測耦合
關於Spaghetti Design:http://docs.codehaus.org/display/SONAR/Spaghetti+Design
通過sonar可以有效檢測以上在程序開發過程中的七大問題
SonarQube安裝
預置條件
1.已安裝JAVA環境
2.已安裝有MySQL資料庫
軟體下載地址:http://www.sonarqube.org/downloads/
下載SonarQube與SonarQube Runner
中文補丁包下載:http://docs.codehaus.org/display/SONAR/Chinese+Pack
1.資料庫配置
進入資料庫命令
2.安裝sonar與sonar-runner
將下載的sonarqube-7.0.zip包解壓至Linux某路徑如/app/export/servers/sonar/
將下載的sonar-runner-2.4zip包解壓某路徑/app/export/servers/sonar/
注意:此版本需要mysql5.6以上版本支持
添加SONAR_HOME、SONAR_RUNNER_HOME環境變量,並將SONAR_RUNNER_HOME加入PATH
修改sonar配置文件
編輯<install_directory>/conf/sonar.properties文件,配置資料庫設置,默認已經提供了各類資料庫的支持
這裡使用mysql,因此取消mysql模塊的注釋
字體: 小 中 大 | 上一篇 下一篇 | 列印 | 我要投稿
修改sonar-runner的配置文件
切換至sonar-runner的安裝目錄下,修改sonar-runner.properties
根據實際使用資料庫情況取消相應注釋
3.添加資料庫驅動
除了Oracle資料庫外,其它資料庫驅動都默認已經提供了,且這些已添加的驅動是sonar唯一支持的,因此不需要修改
如果是Oracle資料庫,需要複製JDBC驅動至<install_directory>/extensions/jdbc-driver/oracle目錄
4.啟動服務
目錄切換至sonar的<install_directory>/bin/linux-x86-64/目錄,啟動服務
#./sonar.sh start 啟動服務
#./sonar.sh stop 停止服務
#./sonar.sh restart 重啟服務
注意:
1、先執行sudo chown -R mysql.mysql /app/export/servers/mysql/
2、用非root用戶(admin)啟動
至此,sonar就安裝好了
訪問http:\\localhost:9000即可
5.sonar中文補丁包安裝
中文包安裝
安裝中文補丁包可以通過訪問http:\\localhost:9000,打開sonar後,進入更新中心安裝Chinese Pack
或者下載中文補丁包後,放到SONARQUBE_HOME/extensions/plugins目錄,然後重啟SonarQube服務 sonar作為Linux服務並開機自啟動
新建文件/etc/init.d/sonar,輸入如下內容:
SonarQube開機自啟動(Ubuntu, 32位):
sudo ln -s $SONAR_HOME/bin/linux-x86-32/sonar.sh /usr/bin/sonar
sudo chmod 755 /etc/init.d/sonar
sudo update-rc.d sonar defaults
SonarQube開機自啟動(RedHat, CentOS, 64位):
sudo ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonar
sudo chmod 755 /etc/init.d/sonar
sudo chkconfig --add sonar
使用SonarQube Runner分析源碼
預置條件
已安裝SonarQube Runner且環境變量已配置,即sonar-runner命令可在任意目錄下執行
1.在項目源碼的根目錄下創建sonar-project.properties配置文件
以android項目為例:
註:要使用Android Lint
規則分析需要先訪問http:\\localhost:9000更新中心添加Android Lint插件,使其可以分析Android Lint規則
2.執行分析
切換到項目源碼根目錄,執行命令
# sonar-runner
分析成功後訪問http:\\localhost:9000即可查看分析結果
不同參數的意思:
http://docs.codehaus.org/display/SONAR/Analysis+Parameters
不同項目的源碼分析示例下載:
https://github.com/SonarSource/sonar-examples/zipball/master