sonarqube學習總結

1.SonarQube

Sonar的功能:是一個用于代碼質量管理的開源平臺,用于管理源代碼的質量,可以從七個維度檢測代碼質量

sonarQube能帶來什么?

Developers' Seven Deadly Sins

1.糟糕的復雜度分布

文件、類、方法等,如果復雜度過高將難以改變,這會使得開發人員難以理解它們,且如果沒有自動化的單元測試,對于程序中的任何組件的改變都將可能導致需要全面的回歸測試

image.png

2.重復

顯然程序中包含大量復制粘貼的代碼是質量低下的, sonar可以展示源碼中重復嚴重的地方

image.jpeg

3.缺乏單元測試

sonar可以很方便地統計并展示單元測試覆蓋率

image.png

4.沒有代碼標準

sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規范代碼編寫

5.沒有足夠的或者過多的注釋

沒有注釋將使代碼可讀性變差,特別是當不可避免地出現人員變動時,程序的可讀性將大幅下降

而過多的注釋又會使得開發人員將精力過多地花費在閱讀注釋上,亦違背初衷

6.潛在的bug

sonar可以通過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢測出潛在的bug

image.jpeg

7.糟糕的設計(原文Spaghetti Design,意大利面式設計)

通過sonar可以找出循環,展示包與包、類與類之間的相互依賴關系

可以檢測自定義的架構規則

通過sonar可以管理第三方的jar包

可以利用LCOM4檢測單個任務規則的應用情況

檢測耦合

2.centos7 Sonarqube安裝流程

安裝包unzip解壓分別放在 /usr/local/sonarqube-和 /usr/local/sonar-scanner-

yum install -y unzip

-d表示指定目錄

unzip sonarqube-6.7.1.zip -d /usr/local/

安裝目錄

/usr/local/sonarqube-6.7.1

/usr/local/sonar-scanner-3.0.3.778-linux

設置sonar-scanner環境變量 vim /etc/profile

SONAR_SCANNER_HOME=/usr/local/sonar-scanner-3.0.3.778-linux

export PATH=$SONAR_SCANNER_HOME/bin

cd /usr/local/sonar-scanner-3.0.3.778-linux/conf

sonar.host.url=http://localhost:9010

數據庫配置修改

sonarqube 啟動(兩種方式)

/usr/local/sonarqube-6.5/bin/linux-x86-64/sonar.sh console

/usr/local/sonarqube-6.5/bin/linux-x86-64/sonar.sh start

image.png

配置sonar

配置sonar.properties文件 /usr/local/sonarqube-6.5/conf/sonar.properties

a.配置啟動的http端口:

image.png

sonar.web.host: localhost(或者你的IP)

sonar.web.port: 9000(默認是9000,你可以修改,不然會和Jenkins的端口號沖突)

sonar.web.context: /

b.MYSQL

----- MySQL 5.x

Comment the embedded database and uncomment the following line to use MySQL

sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true

:mysql是指你要連接的事Mysql數據庫,這里我給Sonar的權限是管理員所以可以用localhost,否則你要使用的你的IP地址,3306是你使用的端口號,sonar是創建的數據庫。

create database sonar;

Optional properties

sonar.jdbc.driverClassName: com.mysql.jdbc.Driver

sonar.jdbc.validationQuery: select 1

c.重新運行sonar

/usr/local/sonarqube-6.5/bin/linux-x86-64/sonar.sh restart

/usr/local/sonarqube-6.5/logs/web.log

后來沖突了,port設置為9010 訪問http://120.79.72.250:9010/about admin admin,可以看到管理頁面了

image.png

broom: 97667722e1e9cdcdaee0c766199f007b9ab256c0

image.png

mvn sonar:sonar \

-Dsonar.host.url=http://120.79.72.250:9010 \

-Dsonar.login=97667722e1e9cdcdaee0c766199f007b9ab256c0

d.安裝插件

把jar 文件放到/usr/local/sonarqube-6.5/extensions/plugins里,重啟 Sonar,該插件就在 Sonar 的平臺上運行并開始工作。

啟動失敗多看日志

插件不要隨便倒進來,用到再用

Web server startup failed: Found two files for the same plugin [javascript]: sonar-javascript-plugin-3.0.0.4962.jar and sonar-javascript-plugin-3.1.1.5128.jar

6.7之后有這個問題還沒解決,暫時用6.5------------------------------------------啟動不了可以看日志/usr/local/sonarqube-6.7.1/logs

image.png

說的是運行不能用root用戶

新建用戶組和用戶

groupadd sonarqube

useradd sonarqube -g sonarqube -p sonarqube

在 google上搜索到:https://stackoverflow.com/questions/47731102/cant-run-sonar-server-caused-by-elasticsearch-cannot-running-as-root

從回答中找到:https://stackoverflow.com/questions/47731102/cant-run-sonar-server-caused-by-elasticsearch-cannot-running-as-root

編輯usr/local/sonarqube-6.7.1/bin/linux-x86-64/sonar.sh - 找到RUN_AS_USER條目,取消注釋并設定為剛剛創建的用戶、

image.png

運行,又出問題

image.png

不能解決的時候,可以把/usr/local/sonarqube-6.7.1/conf/wrapper.conf 日志等級開高DEBUG

————————以下是當時做的一些嘗試--------------------------

切換回root su root

su sonarqube

又有問題。。

image.png

sudo chmod -R 777 /usr/local/sonarqube-6.7.1

root用戶下,運行passwd <username>來重設<username>的密碼。修改密碼broomqwer

修改用戶組嗎

sudo chown -R sonarqube:sonarqube /usr/local/sonarqube-6.7.1

sudo chown -R sonarqube:sonarqube /root/java/

sudo chmod -R 777 /root/java/

sudo chown -R root:root /root/java

3.centos7 mysql安裝流程

在數據庫中創建新用戶sonar 密碼為sonar 并給用戶賦權

CREATE USER 'sonar'@'%' IDENTIFIED BY 'sonar';

說明:username - 你將創建的用戶名, host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost, 如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%. password - 該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器.

GRANT ALL ON . TO 'sonar'@'%';

4.安裝maven

5.安裝Jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

yum install jenkins

sudo service jenkins start //啟動jenkins服務

安裝會出現三個問題

1.說沒有某個目錄,mkdir就行

2.Starting jenkins (via systemctl): Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details. [FAILED]

檢查自己的JDK是否安裝,如果已經安裝,檢查 /etc/init.d/Jenkins 文件(可通過vi編輯器修改)中JDK路徑是否與本地路徑一致,不一致則將Java的正確路徑加入

[root@izwz9dbnlmwmv1co13jzbqz init.d]# whereis java

java: /root/java/jdk1.8.0_151/bin/java

image.png

jenkins端口要配置一下(默認是8080)

vi /etc/sysconfig/jenkins

JENKINS_PORT=“9005”

3.Starting Jenkins bash: /home/renrui/java/jdk1.7/bin/java: Permission denied

vi /etc/sysconfig/jenkins

啟動用戶改為root

image.png

http://120.79.72.250:9005/可以訪問 admin 123456

配置sonar插件

去這個url下載phi文件: http://updates.jenkins-ci.org/latest/sonar.hpi

進入jenkins:jenkins -》插件管理-》高級

image.png

點擊上傳,又是小等待后,重啟。

進入jenkins-》系統管理-》系統配置后,就可以出現配置sonarqube server的地方

image.png

全局工具配置-sonar scanner 沒找到

安裝git plugin (安裝插件)全局工具配置

image.png

新建工程

image.png
image.png

6.sonar-scanner

配置 /usr/local/sonar-scanner-3.0.3.778-linux/conf

----- Default SonarQube server

sonar.host.url=http://localhost:9010

----- Default source code encoding

sonar.sourceEncoding=UTF-8

sonar.jdbc.username=root

sonar.jdbc.password=123456

sonar.jdbc.url=jdbc:mysql://39.107.103.173:3306/sonar?useUnicode=true&characterEncoding=utf8

image.png

在需要分析的工程下新建sonar-project.properties

must be unique in a given SonarQube instance

sonar.projectKey=my:smart-classroom-web-backend

this is the name displayed in the SonarQube UI

sonar.projectName=smart-classroom-web-backend

sonar.projectVersion=1.0

sonar.language=java

Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.

Since SonarQube 4.2, this property is optional if sonar.modules is set.

If not set, SonarQube starts looking for source code from the directory containing

the sonar-project.properties file.

sonar.sources=src

Encoding of the source code. Default is default system encoding

sonar.sourceEncoding=UTF-8

其中:

sonar.projectKey必須在整個SonarQube中全局唯一;

sonar.projectName用于在網頁中顯示的項目名稱;

sonar.projectVersion用于標識源代碼版本;

sonar.language用于標識項目源代碼所使用的開發語言;

sonar.sources用于指定源代碼在整個文件中的起始路徑;在Java Maven項目中默認都會有個src目錄存放源代碼,因此這里的值為“src”,當然如果不存在類似目錄結構,也可以用“.”標識當前路徑。

sonar.sourceEncoding:項目中源代碼文件的編碼,用Visual Studio創建的項目默認都是UTF-8編碼,用Eclipse作為IDE的需要在IDE中進行設置,當然如果難以轉碼也可以用實際編碼

運行sonar-scanner

出現錯誤Please provide compiled classes of your project with sonar.java.binaries property

先不管吧,配置Jenkins

遺留問題

Jenkins配置失敗

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容