簡介
SonarQube 是一個開源的代碼質量管理系統。
功能介紹:
- 15種語言的靜態代碼分析
Java、JavaScript、C#、TypeScript、Kotlin、Ruby、Go、Scala、Flex、Python、PHP、HTML、CSS、XML和VB.NET - 檢測代碼 bugs 和 漏洞
- 檢查安全熱點
- 跟蹤代碼壞味道,並修復技術債務
- 代碼質量度量及歷史變更記錄
- CI/CD 集成
- 可擴展,社區有超過 60 多個插件
支持平臺
Java
SonarQube 僅支持 JVM 11,SonarQube scanners 支持 JVM 8 或 11。
Database
注意:SonarQube 7.9+ 已經不再支持 MySQL。
Web Browser
驗證環境
操作系統:macOS Catalina 版本 10.15.2
SonarQube:8.2.0
Oracle JDK:11
postgreSQL:12.2
操作系統參數設置
SonarQube 使用 Elasticsearch 做全文搜索,所以需要設置如下:
<code># 實時設置
$ sysctl vm.max_map_count
$ sysctl fs.file-max
$ ulimit -n
$ ulimit -u
# 永久生效
$ echo "sonarqube - nofile 65536
sonarqube - nproc 4096" > /etc/security/limits.d/99-sonarqube.conf
/<code>
zip 方式安裝
安裝 postgreSQL
macOS
<code># 下載
# 官方下載地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
$ wget https://get.enterprisedb.com/postgresql/postgresql-12.2-1-osx.dmg
# 雙擊安裝即可
# 驗證
$ ps -ef | grep postgres
# 啟動
$ sudo -i -u postgres
$ ./bin/pg_ctl -D /Library/PostgreSQL/12/data start
# 停止
$ ./bin/pg_ctl -D /Library/PostgreSQL/12/data stop
/<code>
linux(Red Hat family)
<code># 安裝 yum 源
$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安裝客戶端
$ yum install -y postgresql12
# 安裝服務器端
$ yum install -y postgresql12-server
# 初始化數據庫,並設置開機啟動
$ /usr/pgsql-12/bin/postgresql-12-setup initdb
$ systemctl enable postgresql-12
$ systemctl start postgresql-12
# 驗證
$ systemctl status postgresql-12
/<code>
創建 sonar 數據庫
如下為 macOS 操作步驟,Linux 操作步驟一樣。
<code>$ sudo -i -u postgres
$ psql
Password for user postgres:
psql (12.2)
Type "help" for help.
# 創建數據庫
postgres=# CREATE DATABASE sonar;
CREATE DATABASE
# 創建 sonar 用戶
postgres=# CREATE USER sonar WITH ENCRYPTED PASSWORD 'sonar';
CREATE ROLE
# 設置權限
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
GRANT
# 修改 sonar 數據庫所屬者為 sonar
postgres=# ALTER DATABASE sonar OWNER TO sonar;
ALTER DATABASE
# 查看數據庫
postgres=# \\l sonar
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------+-------+----------+-------------+-------------+-------------------
sonar | sonar | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/sonar +
| | | | | sonar=CTc/sonar
(1 row)
# 查看用戶
postgres=# \\du sonar
List of roles
Role name | Attributes | Member of
-----------+------------+-----------
sonar | | {}
# 退出
postgres=# \\q
/<code>
安裝 SonarQube
<code># 下載
$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.2.0.32929.zip
# 解壓
$ unzip sonarqube-8.2.0.32929.zip
# 修改配置文件,設置數據庫
$ vi conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
# 啟動
$ ./macosx-universal-64/sonar.sh start
/<code>
docker 安裝
下載鏡像
<code># 下載
$ docker pull postgres
$ docker pull sonarqube
# 查看鏡像
$ docker images
/<code>
創建網絡
<code>$ docker network create sonar-network
# 查看網絡
$ docker inspect sonar-network
/<code>
啟動 postgres
<code># 啟動
$ docker run --name sonar-postgres -d \\
-e POSTGRES_USER=sonar \\
-e POSTGRES_PASSWORD=sonar \\
-p 5432:5432 \\
--net sonar-network \\
postgres
# 查看容器
$ docker ps
# 查看啟動 log
$ docker logs -f postgres
/<code>
啟動 sonarqube
<code># 啟動
$ docker run --name sonarqube -d \\
-p 9000:9000 \\
-e SONARQUBE_JDBC_USERNAME=sonar \\
-e SONARQUBE_JDBC_PASSWORD=sonar \\
-e SONARQUBE_JDBC_URL=jdbc:postgresql://sonar-postgres:5432/sonar \\
--net sonar-network \\
sonarqube
# 查看容器
$ docker ps
# 查看啟動 log
$ docker logs -f sonarqube
/<code>
訪問 SonarQube
啟動成功後,通過 http://localhost:9000 進行訪問。
默認用戶名/密碼:admin / admin。
下載中文插件
在線安裝中文插件,重啟。
注意: 離線安裝只需要下載 jar 放到 extensions/plugins 目錄下,重啟即可。
其他常用插件
- Crowd
- Bitbucket Authentication for SonarQube
- Findbugs
- Checkstyle
- PMD
- MyBatis Plugin for SonarQube
- ShellCheck Analyzer
- YAML Analyzer
閱讀更多 叨叨軟件測試 的文章