sonarQube简介以及安装

886 阅读7分钟

简介

sonarQube 能干什么?

  1. 能够静态扫描和分析20+语言的项目代码;

  2. 有统一的管理平台,呈现项目代码的质量数据;

  3. 代码质量和安全扫描分析平台。

  4. 多维度分析代码:代码量,安全隐患,编写规范隐患,重复度,复杂度,代码增量,测试覆盖率等。

  5. 支持25+编程语言和代码扫描分析,包含java\python\C#\javascript\go\C++等

  6. 涵盖了编程语言的静态扫描规则:代码编写规范+安全规范。

  7. 能够与代码编辑器,CI/CD平台完美集成。

  8. 能够与SCM集成,可以直接在平台上看到代码问题是由哪位开发人员提交。

  9. 帮助程序员写出更干净,更安全的代码。

sonarQube 如何工作?

sonar静态代码扫描由2部分组成:sonarQube平台sonar-scanner扫描器

  • sonarQube: web界面管理平台。
    • 展示所有的项目代码的质量数据。
    • 配置质量规则,管理项目,配置通知,配置SCM等。
  • sonarScanner: 代码扫描工具。
    • 专门用来扫描和分析项目代码。支持20+语言。
    • 代码扫描和分析完成之后,会将扫描结果存储到数据库当中,在sonarQube平台可以看到扫描数据。

sonarQube 和 sonarScanner 之间的关系: image.png image.png

安装的内容

  1. sonarQube 平台
  2. 数据库(oracle,postgresql,sql,server)
  3. sonar-scanner

我的环境

  • 操作系统:macos
  • java: jdk17, (sonarQube依赖jdk)
  • sonarQube: 10.6.x.xx

sonarQube 不同版本和区别:

我们下载的是社区版本的,体验下sonarQube;

image.png

image.png

sonarQube 平台搭建

我们下载的是社区免费版本的;

  • 第1步:安装java的sdk,根据你要下载的sonarQube版本,安装对应的jdk版本,匹配关系如: 版本支持,具体的可查看文档:sonarQube Docs
sonarQubeServerScannersPostgreSQLSQL ServerOracle
10.6Oracle JRE 17
Open JDK 17
Oracle JRE 17
Open JDK 17
15
14
13
12
11
2022
2019
2017
2016
2014
21C
19C
10.0Oracle JRE 17
Open JDK 17
Oracle JRE 17
Open JDK 17
15
14
13
12
11
2022
2019
2017
2016
2014
21C
19C
9.8Oracle JRE 17
Open JDK 17
Oracle JRE 17
Open JDK 17
15
14
13
12
11
2019
2017
2016
2014
19C
18C
12C
8.9Oracle JRE 11
Open JDK 11
Oracle JRE 11
Open JDK 11
13
12
11
10
9.6
2019
2017
2016
2014
19C
18C
12C

image.png

image.png

image.png

  • 第1步: sonarQube官网下载,下载完成后是.zip, 然后解压,我这边下载的sonarQube是10.6.x版本的,可以用jdk17,但是其他版本,例:sonarQueb-7.x.x 对应jdk8,sonarQube-9.x,对应jdk11;否则运行的时候会报错; image.png
  • 第2步:根据当前的电脑的系统是window,macos等,选择目录:bin/下对应的文件夹,进行启动
  • window系统:进入目录文件夹 bin/windows-x86-66/ 找到StartSonar.bat ,双击运行 StartSonar.bat image.png
  • macos系统:进入目录文件夹 bin/macosx-universal-64/找到 sonar.sh,把这个文件拖入终端,然后运行命令, image.png 运行命令,例:/Users/linwen/backend/ci-cd/sonarqube-10.6.0.92116/bin/macosx-universal-64/sonar.sh console;命令格式:(sonar.sh)所在路径+空格+console; image.png 网页打开:localhost:9999 ;默认登陆账号/密码: admin/admin
    登陆后首次会要求修改密码: image.png 看到这个页面就完成了 image.png

sonarQube汉化

  • 启动sonar.sh服务,启动命令,例:sonar.sh所在的目录 console,打开网页localhost:9000,默认账号/密码:admin/admin, 找到顶部菜单Administration 下的 Marketplace,搜索Chinese: image.png image.png 可能网络原因安装插件超时,如果安装插件报错,可手动尝试安装插件: 报错如下: image.png

插件安装完成后,需要重启 image.png

数据库与sonarQube配置

PostgreSQL 安装请自行搜索安装; 为了方便sonarQueb的配置,我们需要PostgreSQL做2个配置:创建sonar用户创建sonar数据库,然后在sonar的安装目录中 conf/sonar.properties 配置数据库连接;

  1. PostgreSQL - 创建sonar用户;
    打开 pgAdmin4,创建一个用户;Crreate,Login/Group Role image.png 设置账号 image.png 设置密码 image.png 设置权限信息(创建一个可以登陆的) image.png 查看刚刚创建的sonar用户的信息 image.png

  2. PostgreSQL - 创建sonar数据库; 创建数据库 image.png image.png image.png 测试使用sonar用户登陆,首先先断开服务,然后修改Properties修改属性: image.png 断开服务 image.png 更改Properties修改为使用sonar用户: image.png image.png image.png

  3. 在sonar的目录:conf/sonar.properties中配置数据库连接; 找到sonar的目录下的 conf/sonar.properties,用ide编辑器打开: image.png 在文件中,通过关键字搜索 PostgreSQL 找到对应的数据库配置:
    配置连接的用户名密码以及数据库信息: image.png 配置完成后,保存并重启sonarQube;重启需要等待一会,sonarQueb会在数据库下默认创建一些表信息: image.png 之前未配置数据库,在localhost:9000中的页面底部会有提示: image.png 注意:因为配置了数据库,在localhost:9000的页面中登陆时,原先admin账号/密码会被重置为默认账号和密码即:账号/密码( admin/admin); image.png 配置了数据库,重启后,localhost:9000中的页面底部提示会消失: image.png

sonar-scanner安装和配置

安装SonarQube平台后,就可以安装 scanner了。您必须安装和配置最适合您需求的 scanner,具体取决于您的构建工具。然后,在构建之后和执行任何归档或部署之前,您将通过调用CI管道中的扫描程序来开始对项目进行分析。scanner的安装和调用在相应扫描器的文档中有详细的说明;

安装使用SonarScanner 有两种方式:
1. 可以根据项目的构建工具来选择合适的SonarScanner;
2.可以使用 SonarScanner CLI 的方式;

扫描前端项目(pigx-ui)

代码分析扫描参考文档analyzing-source-code
配置扫描的项目,可以通过根目录创建sonar-project-properties方式,也可以通过页面的方式进行配置,即(启动服务后的localhost:9000页面中创建项目的方式)

  1. 在项目的根目录中创建一个名为sonar-project.properties的配置文件。 sonar-project.properties 文件内容示例: # must be unique in a given SonarQube instance sonar.projectKey=my:project

        # --- optional properties ---
    
        # defaults to project key
        #sonar.projectName=My project
        # defaults to 'not provided'
        #sonar.projectVersion=1.0
    
        # Path is relative to the sonar-project.properties file. Defaults to .
        #sonar.sources=.
    
        # Encoding of the source code. Default is default system encoding
        #sonar.sourceEncoding=UTF-8
    
    • sonar.projectKey: 在sonarQube上的实例键名(唯一);
    • sonar.projectName: 在sonarQube上的项目名称;
    • sonar.projectVersion: 项目版本号;
    • sonar.sources: 源代码指定目录;
    • sonar.sourceEncoding: 编码格式;
    • sonar.language: 指定需要扫描的语言;
    • sonar.java.binaries: java时(class文件的目录);
  2. 首先要开启sonarQube Server服务,然后在项目的跟目录下运行:sonar-scanner,扫描项目; image.png

  3. 等待扫描完成,登陆sonarQube Server 平台 localhost:9000,查看 image.png

sonarLint与代码编辑器的集成

在webstorm中配置

  1. 在 webstorm 的插件中搜索安装 sonarLint 插件image.png
  2. 启动sonarQube Serve 服务后,配置插件; 在webstorm中的settings,搜索 sonarLint 配置 sonarLint 服务: image.png 配置 sonarQube 服务地址: image.png image.png 选择连接服务的身份验证的方式: image.png 第1种:账号/密码的方式将要被移除,建议使用token方式; image.png 第2种;使用token方式,首先要启动sonarQube服务;然后点击Create Token; image.png image.png image.png 然后再点击这个"+"; image.png image.png image.png image.png
  3. 扫描项目文件; 在代码的文件中右键中,就会多一个选项Analyze with SonarList 用SonarLint分析的选项; image.png 点击Analyze with SonarLint 会生成一个报告,根据提示进行完善代码; image.png

其他

代码规则和质量配置,查看项目的复杂度指标,重复度指标,项目周期内活动轨迹等,可以启动sonarQube服务后,到对应的服务url上查看;

参考

sonarQueb下载 docs.sonarsource 文档地址 postgresql地址