程序猿福音——sonarqube,代码质量检测一条龙服务,本文带你一探究竟

目的

  • 借助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还能支持哪些编程语言的代码检测呢?

  1. Java
  2. Python
  3. JavaScript
  4. PHP
  5. TypeScript
  6. HTML
  7. Kotlin
  8. Go
  9. YAML
  10. CSS
  11. XML
  12. JSP

不仅如此,连各种语言对应的规则都有详细介绍
在这里插入图片描述
这一波,我的确被圈粉了。

继续探索去了~

猜你喜欢

转载自blog.csdn.net/weixin_42224055/article/details/106807373