技術債務與Sonar
技術債務相關文章推薦連結(不重複造輪子)
Android開發債務檢查工具實戰
專案的債務檢查可以通過第三發Sonar完成,首先我們需要到http://www.sonarqube.org/官網下載SonarQube 5.5,雖然最新的版本是5.6,但是window10上面我一直沒發運行成功
解壓到目錄後根據自己系統的型別和位數選擇目錄,配置到Path環境變數
配置好path後切換到命令列如下執行命令啟動服務
開啟網頁http://localhost:9000/可以圖形操作,預設賬號密碼admin登陸,然而你看到的只是管理分析介面,你需要把你要分析的專案部署到服務裡面,才能開始分析技術債務。這裡呢已Eclipse專案為例,AndroidStudio專案這樣配置太麻煩了,還有跟簡單的做法。部署Eclipse專案需要用到sonar-runner-2.4(百度csdn可以下載),同樣下載解壓後配置path,修改sonar-runner2.4/conf/sonar-runner.properties
#Configure here general information about the environment, such as SonarQube DB details for example
#No information about specific project should appear here
#----- Default SonarQube server
#sonar.host.url=http://localhost:9000
#----- PostgreSQL
#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
#----- MySQL
#sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
#----- Oracle
#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
#----- Microsoft SQLServer
#sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
#----- Global database settings
#sonar.jdbc.username=sonar
#sonar.jdbc.password=sonar
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
sonar.scm.disabled=true//這句是我在部署遇到問題新增的
#----- Security (when 'sonar.forceAuthentication' is set to 'true')
#sonar.login=admin
#sonar.password=admin
來到需要部署專案新增配置檔案
具體內容如下(下面註釋只為說明,實際檔案內容註釋採用#方式)
# Required metadata
sonar.projectKey=TestSimple//專案名字
sonar.projectName=TestSimple//專案名字
sonar.projectVersion=1.1
# Comma-separated paths to directories with sources (required)
sonar.sources=src//分析原始碼目錄
#sonar.binaries=bin\classes
sonar.binaries=bin//如果bin目錄下不止classes就用bin
# Language
sonar.language=java
# Encoding of the source files
sonar.sourceEncoding=UTF-8
在專案根目錄下執行:sonar-runner,訪問:http://localhost:9000/,選擇相應的專案,檢視分析結果(下面是一個我在以前同事的專案的基礎上修改了部分程式碼的一個專案的分析結果圖)
如果你看不懂英文自己漢化吧,個人感覺上述這種技術債務檢查對我們來說是非常有用的,但是呢,目前android開發流行Android Studio開發,專案按照上例方法配置不一定能成功的,目錄都不一樣了,專案還有module,配置起來相對比較繁瑣,怎麼辦呢?Sonar對Android Studio開發的外掛也出來了
安裝完成後需要重新配置,設定服務代理 ,我這裡是已本地啟動服務,所以配置如下
安裝下圖操作開始分析專案
分析結果如下
Sonar從各個方面進行了程式碼分析
1.變數賦值問題
2.類結構
3.程式碼成熟度問題
4.程式碼風格問題
5.控制流的問題
6.資料流的問題
7.宣告冗餘
8.效能問題
9.可能的錯誤
10.拼寫
11.冗長的或冗餘的程式碼結構
12.res下面的XML問題
………………..
具體專案自己具體分析哈,這裡只提幾個示例作為演示。
① 開源專案SwipeMenu專案採用了過時方法
上例drawable的獲取方法在Api21就過時了,具體做法應該走版本分之,不同版本採用不同的獲取方法,當然過時方法任然可用。針對上述程式碼ContextCompat一幫我們做了版本分之,一鍵呼叫即可
public static final Drawable getDrawable(Context context, int id) {
final int version = Build.VERSION.SDK_INT;
if (version >= 21) {
return ContextCompatApi21.getDrawable(context, id);
} else {
return context.getResources().getDrawable(id);
}
}
②程式碼風格問題例項
public boolean isEnable() {
if (!isCanUseBluetooth) {
return false;
}
return blueAdapter.isEnabled();
}
上面這程式碼塊是沒問題的,但是看上去總覺得彆扭,具體彆扭在哪又說不出來,這下好了,通過Sonar債務檢查發現了它,並給出了最佳解決方案
更多問題自己實戰吧,這裡不再逼逼叨叨了,個人感覺Sonar比Jenkins使用跟方便