SonarQube代码检测工具在Rainbond上的部署及应用制作

一. 关于SonarQube

SonarQube®是一款开源的代码质量管理工具,用于检测代码中的错误,漏洞和代码味道。它可以与现有的工作流程集成,以实现跨项目分支和提取请求的连续代码检查;支持多种语言,如:JAVA、C#、C\C++ 、python等,同时可以与 Sonar Scanner、Maven、Jekins、IDEA 等工具进行集成。

二. 快速安装方式

SonarQube 应用已分享到Rainbond应用市场,通过Rainbond社区开源商店即可一键安装。

三. 应用制作流程

SonarQube 官方提供了Docker镜像,所以部署过程使用基于Docker镜像进行部署。

组件概述

SonarQube server

SonarQube的server端,运行以下进程:

  • 提供SonarQube用户界面的Web服务器。
  • 基于Elasticsearch的搜索服务器。
  • 计算引擎负责处理代码分析报告并将其保存在SonarQube数据库中。

Database server

SonarQube的数据库,存储以下内容:

  • 代码扫描期间生成的代码质量和安全性的度量标准和问题。
  • SonarQube实例配置。

官方支持多个 数据库引擎 Microsoft SQL Server, Oracle,PostgreSQL,此次部署使用的是PostgreSQL数据库。

组件部署

数据库部署

使用PostgreSQL官方镜像在Rainbond平台使用 docker run 的方式进行部署。部署命令如下

docker run  -d  --name postgres \
  -p 5432:5432 \
  -v /my/own/datadir:/var/lib/postgresql/data \
  -e POSTGRES_USER=sonar \
  -e POSTGRES_PASSWORD=sonar  \
  -e POSTGRES_DB=sonar \
  postgres:13.0

基于postgresql 13.0版本,端口为5432,将数据存储目录 /var/lib/postgresql/data 持久化,创建了用户sonar 密码为sonar ,数据库名为sonar 。

PostgreSql 本身为有状态服务,在Rainbond部署时平台将会对镜像进行检测,自动判定为有状态组件进行部署。

SonarQube部署

同上,使用 docker run 的方式进行部署

部署命令

docker run -d --name sonarqube \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=jdbc:postgresql://127.0.0.1:5432/sonar \
    -e SONAR_JDBC_USERNAME=sonar \
    -e SONAR_JDBC_PASSWORD=sonar \
    -v sonarqube_data:/opt/sonarqube/data \
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    -v sonarqube_logs:/opt/sonarqube/logs \
    sonarqube:8.5.1-community

基于sonarqube社区版本8.5.1的官方镜像,端口为9000, 通过环境变量的方式定义了数据库的连接地址,用户名及密码,并将数据目录进行持久化,需将内存调整为至少2G,否则可能会出现无法启动的问题。

建立依赖

sonarqube组件需要建立对postgresql的依赖,才能正常连接数据库,在Rainbond平台建立依赖关系后,在依赖组件中将会启动一个代理容器,从而使依赖组件能够通过127.0.0.1的连接地址连接被依赖组件,相关原理请参考服务间通信

最终应用拓补图如下

四. 使用示例

打开SonarQube 组件端口对外服务,点击访问策略中生成的访问地址稍等一会即可访问到SonarQube web页面;默认的系统管理员用户密码为 admin / admin

安装插件 Chinses Pack 以设置中文,并开通 Checkstyle java检查分析器。

点击上方 Administration --> Marketplace,搜索ch,以下结果点击 install,安装后会提示重启服务点击 RestartServer 稍等重启重启即可。


对Java项目进行代码分析

示例Java项目:https://gitee.com/rainbond/java-maven-demo

在SonarQube 中新建项目,创建令牌,选择代码语言,得到如下的命令

在代码进行构建时,在 构建源-->源码构建参数设置-->Maven构建参数 中添加以上参数进行构建,构建结束即可在SonarQube web页面查看代码检测结果。

在maven构建参数中添加了以下参数

 sonar:sonar \
  -Dsonar.java.binaries=target/sonar  \#需单独添加此项参数
  -Dsonar.projectKey=testdemo \ 
  -Dsonar.host.url=http://9000.gra997f7.s8gh17j3.17f4cc.grapps.cn \
  -Dsonar.login=test


web页面查看结果

更多语言代码检测方法可参阅官方文档获取。

官方文档:https://docs.sonarqube.org/latest/

官方社区: