Below you will find pages that utilize the taxonomy term “SonarQube”
Posts
SonarCloud - Project badges
要使用 SonarCloud 的 Project badges,可以到 SonarCloud 的 Project 頁面,點選右下角的 Get project badges 按鈕。
選取要使用的 Project badges 與 Metric。
按下 Copy 按鈕複製 Project badges 的位置。
在要放置 Project badges 的位置上將之視為圖檔放置。
放置完後續我們就可以透過該 Project badges 知道目前專案的狀況。
read morePosts
SonarCloud - Use SonarQube as a Service
SonarQube 除了自行架設外,也提供了線上的版本可供使用,開源專案可以免費使用。
透過點擊 SonarQube 網站上的 USE ONLINE 按鈕可直接連結過去。
選擇要使用的登入帳號。
登入後會看到 SonarQube 的介面,點選 Analyze new project 開啟一個新的專案。
選取專案所屬的組織。
產生後續認證要用的 Token 或是直接使用已經存在的 Token。
選取專案的主要開發語言。
選取所使用的作業系統。
設定專案的 Project key。
右側會帶出 Sonar scanner 的下載位置以及所屬作業系統下的指令下法,這邊可以按下 Copy 按鈕先將指令複製下來。
點選 Finish this tutorial 結束設定。
設定完會看到對應的專案已被建立在 SonarQube 上。
在專案程式目錄下實際調用剛剛所複製的命令,SonarQuber Scanner 即會開始分析專案程式,並將分析的結果送至 SonarQube。
分析完就可以在 SonarQube 的專案頁面看到分析的結果。
Link Continuous Inspection | SonarQube
read morePosts
sonar-tsql-plugin - Repository for T-SQL language plugin for Sonar
sonar-tsql-plugin 是用來分析 T-SQL 的 SonarQube 套件,支援 14 的微軟內建的 analysis rules,以及 120 個 SQL Code Guard analysis rule。
套件可在 GitHub - gretard/sonar-tsql-plugin: Repository for T-SQL language plugin for Sonar 這邊下載,並透過手動的方式安裝套件。
套件安裝完後因為該套件無實作設定頁面,因此要到 Rules 頁面確認套件的安裝狀態,安裝成功的話應該可以在左側看到 T-SQL。Rule 預設是未啟用的,這邊也可以順帶啟用。
除了 Rule 的設定外,因為該套件只是簡單的將他跟 Visual Studio 的資料庫專案與 SQL Code Guard 整合,所以用 MSBuild建置時需加帶 /p:RunSqlCodeAnalysis=true 參數,且在 SonarQube 設定檔中加設定 sonar.tsql.cg.path,將該設定值指到 SQL Code Guard 運行檔的位置。
最後一提,如同上面所述,該套件並未實作設定頁面,所以一切設定都設在設定檔,要查閱該套件可做的設定的話,可參閱Configuration · gretard/sonar-tsql-plugin Wiki · GitHub這邊。
Link GitHub - gretard/sonar-tsql-plugin: Repository for T-SQL language plugin for Sonar
read morePosts
SonarQube - Integrate with GitLab
要將 SonarQube 與 GitLab 整合,讓 GitLab 簽入或是發送 MergeRequest 時可透過 SonqrQube 進行分析,即早發現程式的問題,SonarQube 需先透過 Update Center 安裝 GitLab 套件。
SonarQube 的 GitLab 套件安裝好後進行 SonarQube 的重啟。
重啟完後進入 Administration 的 General Settings 頁面,切至 GitLab 頁籤進行相關的設定。
最主要的設定有兩個,一個是 GitLab url,需填入 GitLab 服務的位置。
另外一個是 GitLab User Token,讓 SonarQube 可以存取 GitLab 用。這樣當 GitLab 觸發 SonarQube 分析完,SonarQube 才可以將分析的結果放至 GitLab 上。
這邊輸入的 GitLab User Token 是 GitLab 的 Access Token,可在 GitLab 的 [UserSettings | Access Tokens] 取得。
SonarQube 的 GitLab 套件安裝並設定好後,接著要進行 GitLab CI 的設定。只要在 GitLab CI 的設定檔中像下面這樣調用 SonarScanner 觸發 SonarQube 分析即可。
read morePosts
>-
運行 SonarQubeAnalyze 後如果看到 ERROR: JAVA_HOME exists but does not point to a valid java home folder 這樣的錯誤訊息。
我們可能會查閱系統中的 JAVA_HOME 環境變數,且查驗該環境變量所指定的位置是否存在,及是否指到正確的目錄。。。等。
查驗過後你可能會發現一切都是正常的卻運行不起來。這是因為在 SonarQubeAnalyze 檔中有去設定 JAVA_HOME 的位置,該位置並非環境變量所指定的位置,而是指到 sonar-scanner 下的 jre 目錄。
所以問題發生的話,可以檢查一下 sonar-scanner 下的 jre 目錄看看。像是筆者碰到的狀況就是因為沒將檔案加入並上傳到 git,從 git 拉下來的 jre 目錄在有少檔的狀況下就無法正常的運作。
read morePosts
SonarQube - Downgrade database
若 SonarQube DB 升級過後想要使用回舊版本的 SonarQube,會發現資料庫已經不相容於舊版本的 SonarQube DB。
這時將 SonarQube DB 刪除後重建。
DROP DATABASE sonar; CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; 舊版本的 SonarQube 服務就可以正常運作了。
read morePosts
SonarQube - Analyzing with SonarQube Scanner
要使用 SonarQube 進行程式碼分析,並將分析結果送至 SonarQube Server,最簡單的就是使用 SonarQube Scanner。
先至官網將 SonarQube Scanner 下載下來。
下載下來後直接解壓即可使用,其命令使用方式如下:
usage: sonar-scanner [options] Options: -D,--define <arg> Define property -e,--errors Produce execution error messages -h,--help Display help information -v,--version Display version information -X,--debug Produce execution debug output 其中比較常用的就是參數 -D,–define,可用來定義 SonarQube 分析所需要的屬性,像是 sonar.host.url 屬性用來指定 SonarQube 的位置、sonar.projectName 用來指定 SonarQube 的 Project name、sonar.projectVersion 用來指定 SonqrQube 的 Project version、sonar.projectKey 用來指定 Sonarqube 的 Project key、sonar.log.level 用來指定分析運行時的 log 層級…等。
除了透過 -D,–define 將這些屬性用參數帶入設定外,也可以使用設定檔,只要將屬性的設定寫在名為 sonar-project.properties 檔案。
這樣運行分析時也只需要直接調用 sonar-scanner。
read morePosts
SonarQube - System upgrades
要進行 SonarQube 的系統升級,目前 Update Center 只支援查閱更新以及告知升級的步驟,尚未支援自動升級,需要自行手動升級。
可以先下載新版的 SonarQube 程式。
將舊的 SonarQube 服務停止。
停止後將舊的服務移除。
將舊的 SonarQube 設定與套件放到新的 SonarQube。
再將新的 SonarQube 服務安裝。
將安裝好的服務啟動。
即完成 SonarQube 的系統升級。
read morePosts
SonarQube - Project management
要將程式送到 SonarQube 進行分析,首先必須要在 SonarQube 建立 Project。
可點擊 [Administration | Projects | Management] 選單選項開啟 Project management 頁面。
點選 Project management 頁面右上方的 Create Project 按鈕。
設定 Project 的 Name 與 Key 後按下 Create 按鈕。
Project 即建立完成。
接著點選 Project 名稱進入 Project 管理頁面,這邊的 Administration 下有些設定可適需要做些調整。
像是可能要調整要分析的副檔名,就可以到 General Settings 頁面做對應的設定。
要指定專案所使用的 Quality Profile,可到 Quality Profiles 頁面設定。
要指定專案所使用的 Quality Gate,可到 Quality Gate 頁面設定。
read morePosts
SonarQube - Quality Gates
Quality Gate 是產品要上到正式環境所要滿足的條件,可在 SonarQube 的 Quality Gates 頁面管理,可以點選 Create 按鈕新增,或是點選 Quality Gate 的名稱進一步的管理。
點選 Quality Gate 名稱後,可以在導到的頁面調整 Quality Gate 所要滿足的條件。可以設定新的程式碼要小於多少分才後會是 Warning 或是 Error。
若有需要該頁面也可以針對 Quality Gate 的名稱進行修改,或是 Quality Gate 的複製、設定/取消預設使用、以及 Quality Gate 的刪除。
read morePosts
SonarQube - Quality Profiles
SonarQube 的 Quality Profiles 頁面提供我們查詢可供分析的 Profile。
Profile 為分析 Rule 的集合,多半會造著語言或是套件下去區分。透過 Quality Profiles 頁面我們可以新增 Profile、查看 Profile 的 Rule 數、查看上次使用的時間…等。
點選 Profile 的名稱可進一步進入 Profile 管理頁面。在這頁面我們可以看到 Profile 所使用的 Rule、與設定 Profile 的繼承關係。
在進行程式碼分析之前可先透過該頁面確認 Profile 的 Rule 啟用狀態,因為有時套件安裝的 Profile 其 Rule 預設是未啟用的狀態,或是某些想要分析的 Rule 並未被啟用,這時可以按下 Active More 按鈕切到 Rules 頁面,透過 Rules 頁面將之啟用。
read morePosts
SonarQube - Rules
SonarQube 的 Rules 頁面提供我們查詢可供分析的 Rule。
可以依照語言、類行、Repository…等條件下去過濾 Rule。
可透過該頁面啟用/停用 Rule、查閱 Rule 的細部說明、以及查看程式中是否有相關的 Issue。
read morePosts
Jenkins - Quality Gates Plugin
Jenkins 安裝 SonarQube Plugin 後,雖然能用 Jenkins 分析程式並將分析結果送至 SonarQube,但是不論分析的結果是否有通過 SonarQube Quality Gate, Jenkins 的 job 都是會過。
若要讓 Jenkins job 依照 SonarQube Quality Gate 通過與否去決定建置的成功狀態,可以為 Jenkins 安裝 Quality Gate Plugin。
安裝完後進入 Jenkins 的 設定系統 頁面。
在 Quality Gates 這邊按下 ADD SONAR INSTANCE。
設定 SonarQube 的名稱與位置。
接著到 Job 組態這邊設定建置後動作,使用 Quality Gates 套件,帶入 Project Key。
這樣 Job 在運行時最後就會開始運行 Quality Gates 套件。
Job 的建置狀態就會依 Quality Gates 通過與否去決定。
read morePosts
Jenkins - SonarQube Plugin
如果要將 SonarQube 整合 Jenkins,讓 Jenkins 幫我們運行並將分析送到 SonarQube,可以使用 Jenkins 的 SonarQube Plugin。
先將 Jenkins 安裝 SonarQube Plugin。
安裝完後開啟 Jenkins 的組態設定,設定 SonarQube Server 的資訊。
接著開啟 Jenkins 的 Global Tool Configuration,讓 Jenkins 進行 SonarQube Scanner 的安裝。
安裝與設定都好了後,就可以在 job 的建置這邊使用 Execute SonarQube Scanner 做 SonarQube 分析的設定,語法可參閱 SonarQube Scanner 的設定方式(主要的設定就是 projectKey、projectName、與 sources)。
read morePosts
SonarQube - Manual setup plugins
SonarQube 有些套件未放置在 Update Center,無法透過 Update Center 進行安裝,必須自行手動安裝。
這邊以 PL/SQL Cop 的 SonarQube 套件為例做個示範,先將套件下載下來。
將下載的套件放置於 extensions\plugins 下(不用解壓縮)。
接著將 SonarQube 的服務重啟。
重啟後安裝的套件即會生效。因為多半的套件會有設定頁面,像是這邊示範的 PL/SQL Cop 套件就有,所以可以先從設定頁面這邊做個初步的確認。
read morePosts
SonarQube - Setup/update/remove plugins with Update Center
SonarQube 提供 Update Center 可以讓我們很容易的控管 SonarQube 外掛套件。要使用 Update Center,可點選 [Administrator | System | Update Center]。
Update Center 中的 Installed 頁面會列出所有已安裝的套件,Updates Only 頁面會列出所有可更新的套件,Available 頁面會列出所有可安裝的套件。
套件列表後方的按鈕可供我們安裝、更新、或是移除套件。
按下後會將對應的動作 Queue 起來等待運行,當確定要運行時可按下上方的 Restart 按鈕。
再次按下 Restart 按鈕確認。
就會開始運行對應的動作並將服務重啟。
重啟後對應的設定即會生效。
read morePosts
SonarQube - Setup MySQL database
要讓 SonarQube 使用 MySQL 資料庫,需先在伺服器中安裝 MySQL 資料庫。
接著要設定 MySQL 資料庫,可先將下列 SQL 語法存放至副檔名為 SQL 的檔案 (這邊筆者選用 create_database.sql)。
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER sonar@localhost IDENTIFIED BY 'password'; CREATE USER sonar@'%' IDENTIFIED BY 'password'; GRANT ALL ON sonar.* TO sonar@localhost; GRANT ALL ON sonar.* TO sonar@'%'; 接著使用 mysql -u -root -p < create_database.sql 將 SQL 送到 MySQL 運行。
然後要設定 SonarQube 的設定檔 sonar.properties,sonar.jdbc.username 與 sonar.jdbc.password 這邊要設定 MySQL 的帳密,sonar.jdbc.url 設定這邊要將註解拿掉。
read morePosts
SonarQube - Failed to start SonarQube windows service
在啟動 SonarQube windows service 食,有可能會看到像下面這樣的畫面:
如果是透過 Services 視窗啟動的畫,會看到像下面這樣的畫面:
這時可以檢查任務管理員是否有殘留的 java.exe 與 conhost.exe,有的話將之刪除,再次啟動應該就可以了。
read morePosts
SonarQube - Setup SonarQube windows service
要設定 SonarQube Windows 服務,只要運行 InstallNTService.bat 檔即可。
運行完,SonarQube 的 Service 就安裝設定完畢了。
接著要將剛安裝的服務啟動,這邊看是要透過運行 StartNTService.bat 檔,或是透過 Services 視窗將服務啟動都可以。
到這邊服務已經安裝並運行起來了,沒意外的話 SonarQube 已經可以正常使用了。
後續如果要停止或是移除 SonarQube 服務,這邊也都有對應的 bat 檔可供直接叫用。
read morePosts
SonarQube - Failed to create an empty directory
SonarQube 運行 Pre-processing 時,可能會拋出 Failed to create an empty directory 這樣的錯誤訊息。
這錯誤是因為 SonarQube 運行時會需要建立一個 .sonarqube 的目錄,該目錄如果因位檔案佔住無法刪除就會發生這樣的錯誤。
這問題發生時可以查看任務管理員,看看是否有殘留的 MSBuild 在背後運行,如果有將之刪除即可。
read morePosts
SonarQube - Unsupported major.minor version 52.0
SonarQube 如果出現 Unsupported major.minor version 52.0 這樣的錯誤。
代表 JRE 與 JDK 版本對不起來,可以安裝對應的版本,然後用 Java -version 與 Javac -version 確認看看。
確認版本是對的後再次運行 SonarQube,應該就可以了。
read morePosts
SonarQube - Remote access
SonarQube 裝完後若未做任何修改,只能透過本地存取服務。
如果要開放遠端存取服務,可開啟 conf\sonar.properties 設定檔進行設定。像是將 sonar.web.host 設為 0.0.0.0,或是透過設定 sonar.web.port 改變 port 號。
read morePosts
SonarQube - Analyzing with SonarQube scanner for MSBuild from the command line
要使用 SonarQube scanner for MSBuild 在命令列下進行程式碼的掃描,需先確保 .NET Framework 有到 4.5.2 以上的版本,以及 jre 有到 7u75 以上的版本。
接著下載 SonarQube scanner for MSBuild 後將其解壓縮。
再來要開啟 SonarQube.Analysis.xml 設定 SonarQube 的位置以及認證的資訊。
設定完後運行 MSBuild.SonarQube.Runner.exe begin 開始分析。
MSBuild.SonarQube.Runner.exe begin /k:"sonarqube_project_key" /n:"sonarqube_project_name" /v:"sonarqube_project_version" 接著用 MSBuild 建置要分析的專案。
最後運行 MSBuild.SonarQube.Runner.exe end 停止分析。
MSBuild.SonarQube.Runner.exe end 分析完的結果就會送到 SonarQube 上。
Link
read morePosts
SonarQube - Getting started
要試用 SonarQube 我們只需將 SonarQube distribution 下載下來解壓縮,並運行 StartSonar.bat。
這樣服務就運行起來了。
接著用瀏覽器瀏覽 http://localhost:9000 即可開始體驗 SonarQube。
如果需要進一步管理 SonarQube,可以用 admin/admin 登入。
Link SonarQube™ » Download Get Started in Two Minutes - SonarQube Documentation - SonarQube
read more