SonarQube静态代码检查

2021-03-07 8

SonarQube的介绍,安装,配置以及使用笔记

SonarQube静态代码检查

SonarQube的介绍,安装,配置以及使用笔记

1、SonarQube简介

a7208010a0fb985d.png

SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。 通过插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JavaScript, Groovy 等等二十几种编程语言的代码质量管理与检测。

b87ff37a4b616db0.png

2、SonarQube安装

2.1、下载SonarQube

https://www.sonarqube.org/downloads/

从 SonarQube 7.9 LTS 开始,我们的用户已经在分析过程中收到警告,要求 Java 11(警告最初提到 8.x)。

从 SonarQube 8.9 LTS 开始:我们的用户会直接在 SonarQube UI 中被告知在 9.x 中将需要 Java 11

 

MySQL 在7.9版本后会停止支持,所以需要用到MySQL数据库的可以下载 SonarQube 7.8

MySQL support is dropped in 7.9. There's no reason for 8.0 docs to even mention it. SonarQube Scanner安装

2.2、下载sonar-scanner-cli

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

根据系统版本下载对应cli

2.3、配置环境变量

将下载的文件解压到磁盘中

把解压后的路径sonar-scanner-cli/bin添加到系统变量中

57fda7b2da3e3892.png

3、配置SonarQube

3.1、汉化

各版本UI可能不太一样,总之就是找到"应用市场",然后安装“汉化包”

如SonarQube 8.5.1:

点击 导航栏的 config, 选择应用市场

e4225c337a2f701d.png

搜索 Chinese pack, 点击install进行安装

安装成功后,重启sonarqube服务,再次访问http://127.0.0.1:9000

3.2、配置数据库

SonarQube安装目录/conf/sonar.properties

找到sonar.jdbc.url,修改成你自己的数据库

比如使用MySQL数据库:

sonar.jdbc.url=jdbc:mysql:@localhost:3306/sonar

4、SonarQube扫描

4.1、直接执行命令

sonar-scanner.bat -D"sonar.projectKey=项目名称" -D"sonar.sources=." -D"sonar.host.url=http://127.0.0.1:9000" -D"sonar.login=70696ac771697e43584a9b08c1386ceb9f45a36c"

4.2、使用配置文件

在项目根目录创建 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

# 扫描的目录,多个目录用逗号分隔. Defaults to .
sonar.sources=src,client

# 忽略的目录,多个目录用逗号分隔
sonar.exclusions=client/web/vendor/**,client/admin/static/**

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

然后在项目根目录执行sonar-scanner

5、SonarQube分析

5.1、代码质量分析

项目总览

查看bug、漏洞、异味代码

查看代码重复率、复杂度等指标

5.2、常见问题

1)问题:Vue项目,报Pseudo-element selectors should be valid,::v-deep伪元素选择器不正确

解决方案:在SonarQube的代码规则CSS语言中找到Pseudo-element selectors should be valid规则,修改它的质量配置,在ignorePseudoElements配置项中添加v-deep,默认只有ng-deep

评论(0)

0/500

还没有评论,快来抢第一吧