因爲平臺的多樣化,在不一樣環境的安裝方式可能也不同,爲了不環境不一致帶來的差別,特記一筆容器安裝:java
1、Sonar能夠從如下七個維度檢測代碼質量,而做爲開發人員至少須要處理前5種代碼質量問題。sql
1. 不遵循代碼標準(Coding Standards Breach)docker
sonar能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫。數據庫
2. 潛在的缺陷(Bugs and Potential Bugs)編程
sonar能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢 測出潛在的缺陷。架構
3. 糟糕的複雜度分佈(Bad Distribution of Complexity)maven
文件、類、方法等,若是複雜度太高將難以改變,這會使得開發人員 難以理解它們, 且若是沒有自動化的單元測試,對於程序中的任何組件的改變都將可能致使須要全面的迴歸測試。編程語言
4. 重複(Duplications)工具
顯然程序中包含大量複製粘貼的代碼是質量低下的,sonar能夠展現 源碼中重複嚴重的地方。post
5. 註釋不足或者過多(Not Enough or Too Many Comments)
沒有註釋將使代碼可讀性變差,特別是當不可避免地出現人員變更 時,程序的可讀性將大幅降低 而過多的註釋又會使得開發人員將精力過多地花費在閱讀註釋上,亦違背初衷。
6. 缺少單元測試(Lack of Unit Tests)
sonar能夠很方便地統計並展現單元測試覆蓋率。
7. 糟糕的設計
經過sonar能夠找出循環,展現包與包、類與類之間的相互依賴關係,能夠檢測自定義的架構規則 經過sonar能夠管理第三方的jar包,能夠利用LCOM4檢測單個任務規則的應用狀況, 檢測藕合。
下面經過如下介紹SonarQube的安裝、使用說明。
2、爲何要選擇sonarQube?
我的使用以後認爲 : sonarQube的優點以下(相比於阿里編碼規約這種市面上常見的相似軟件):
1. 更加優秀的圖形化界面
基本上經過界面就能夠對本身項目的代碼情況一目瞭然
2. 能夠查詢出其它軟件難以定位到的問題
好比 : 可能致使空指針異常的問題 (對象在進行使用前沒有加空的判斷)
可能致使內存泄漏的問題, 在try catch 塊裏面,直接使用e.printStackTrace()將堆棧信息打印到內存的
可能致使的漏洞 : 成員變量使用public定義的
還有諸如 : 流等未關閉或者是非正常關閉都可以檢測出來!
功能很是強大!!
3、如何使用?
SonarQube是一款開源的代碼質量管理平臺,已支持20+ 種編程語言。
拉取鏡像,默認都是從 DockerHub 拉取
1 docker pull postgres 拉取數據庫
2 docker pull sonarqube 拉取sonarqube
4、安裝完畢後,啓動運行
1 啓動postgresql
$ docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
2 啓動 sonarqube
$ docker run --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -p 9000:9000 -d sonarqube
3 打開 http://localhost:9000/ , 點擊 "Log in"
登陸帳號:admin 密碼:admin
5、使用
接下來有兩種處理方案
方案一: 根據頁面提示,會讓你建立用戶名密碼.而後選擇編程語言,版本控制工具,生成一個maven命令
mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.username=admin -Dsonar.username=admin -Dsonar.java.binaries=./ or mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.java.binaries=./ mvn sonar:sonar -Dsonar.host.url=https://localhost:9000 -Dsonar.login=b291bdf9ef56800ccdb826fe75fbde66165819a3
獲取 -Dsonar.login的值
方案二: 修改maven的setting文件
# pom文件添加以下內容(注意,jdk版本必須是jdk1.8)
# <profiles>標籤下添加以下內容 <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- 配置 Sonar Host地址,默認:http://localhost:9000 --> <sonar.host.url> http://10.100.28.186:9000 </sonar.host.url> </properties> </profile> # pom文件添加以下內容(注意,jdk版本必須是jdk1.8) <build> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.1.1</version> </plugin> </plugins> </build>
執行以下命令測試
mvn clean install sonar:sonar