目的
- 借助sonar平台分析和管理项目代码质量
- sonar是一个用于代码质量管理的开放平台,sonar提供潜在bug、漏洞、代码重复率等指标,进而提升项目代码质量。
sonar-scanner 命令
- sonar-scanner作用是扫描项目代码并发送扫描结果到sonar平台
使用sonar-scanner的docker镜像可省去sonar-sanner命令所需环境搭建,更现代化:
$ docker pull kiwicom/sonar-scanner:4.3
$ cd 项目代码目录
$ docker run -it --user=root --net=host --rm --name sonar-scanner -v `pwd`:/usr/src kiwicom/sonar-scanner:4.3 sonar-scanner -X -Dsonar.projectKey=项目名称 \
-Dsonar.sources=./gateway \
-Dsonar.host.url=地址\
-Dsonar.login=240b6e0e62XXXXXXXXX
- -it:交互形式执行
- –user=root:容器中使用root用户权限
- –net=host:容器使用宿主机网络环境
- –rm:容器执行完后即删除
- –name sonar-scanner:容器名称
- -v:当前项目目录挂载到容器/usr/src目录下
- -X:sonar-scanner命令参数,能打印出有用info信息
gitlab-ci中集成sonar-scanner命令
.gitlab-ci.yml文件中的内容:以JS语言为例,检测需要排除node_modules文件夹
stages:
- lint
lint_code:
stage: lint
image:
name: kiwicom/sonar-scanner:4.3
allow_failure: true
only:
- master
variables:
SONAR_HOST_URL: 'http://sonar.某某.com/'
SONAR_LOGIN: 'dcbc13e某某某'
SONAR_PROJECTKEY: '项目名称某某'
SONAR_SOURCES: './src'
script:
- sonar-scanner -X -Dsonar.projectKey=$SONAR_PROJECTKEY -Dsonar.sources=$SONAR_SOURCES -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_LOGIN
- sonar-scanner -X -Dsonar.projectKey=$SONAR_PROJECTKEY -Dsonar.sources=$SONAR_SOURCES -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.exclusions='**/node_modules/**'
- only:指定stage分支执行本任务
- SONAR_HOST_URL:sonar平台
- SONAR_LOGIN:sonar平台登录凭证,sonar平台【我的账户->安全->生成令牌】
- SONAR_PROJECTKEY:项目名称
- SONAR_SOURCES:项目扫描路径
将代码推到远程分支,sonar开始检测代码质量
出现绿色的Job succeeded
表明已完成,可以去sonar平台看看检测结果了。
查看结果
emm…勉勉强强吧,这重复率还是有点高的哈,继续看看详细的结果
都不是什么大的bug哈,全是一些可以进行优化的代码片段
有一说一,sonarqube是真的很贴心了
它不仅能把问题点标出来,还能给你提供相应的解决办法。
评级可还行,能拿五好学生,顺利毕业了。
支持哪些语言
各路英雄好汉最关心的问题来了,本文的示例是基于JavaScript语言,那么sonarqube还能支持哪些编程语言的代码检测呢?
- Java
- Python
- JavaScript
- PHP
- TypeScript
- HTML
- Kotlin
- Go
- YAML
- CSS
- XML
- JSP
不仅如此,连各种语言对应的规则都有详细介绍
这一波,我的确被圈粉了。
继续探索去了~