最新消息:

SonarQube的使用

IT技术 ipcpu 1036浏览 0评论

sonarqube的使用.md

一、简介

SonarQube 是一个开源的代码质量管理系统。

功能介绍:

15种语言的静态代码分析 Java、JavaScript、C#、TypeScript、Kotlin、Ruby、Go、Scala、Flex、Python、PHP、HTML、CSS、XML和VB.NET
检测代码 bugs 和 漏洞
检查安全热点
跟踪代码坏味道,并修复技术债务
代码质量度量及历史变更记录
CI/CD 集成
可扩展,社区有超过 60 多个插件

SonarQube整体上可以分为服务器Server端和scanner客户端顾名思义,客户端scanner就是运行在代码侧,或者是CICD环境中,对代码就行扫描的工具;扫描所使用的规则和扫描出来的结果会发送到服务器Server端,这些数据服务器Server端会进行分析,并存储到数据库当中。

SonarQube服务端仅支持JDK11,客户端支持JDK8或者11。
SonarQube服务端数据库,支持PostgreSQL、SQLServer、Oracle等,但要注意的是从SonarQube 7.9+不再支持MySQL。

二、服务端部署(Docker)

这里我们使用docker-compose来进行部署

version: '3'
services:
  postgres:
    image: postgres:12
    restart: always
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - /opt/postgres/postgresql/:/var/lib/postgresql
      - /opt/postgres/data/:/var/lib/postgresql/data
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar123
      POSTGRES_DB: sonar
    networks:
      - sonar-network
  sonar:
    image: sonarqube:8.2-community
    restart: always
    container_name: sonar
    depends_on:
      - postgres
    volumes:
      - /opt/sonarqube/extensions:/opt/sonarqube/extensions
      - /opt/sonarqube/logs:/opt/sonarqube/logs
      - /opt/sonarqube/data:/opt/sonarqube/data
      - /opt/sonarqube/conf:/opt/sonarqube/conf
    ports:
      - 9000:9000
    environment:
      SONARQUBE_JDBC_USERNAME: sonar
      SONARQUBE_JDBC_PASSWORD: sonar123
      SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
    networks:
      - sonar-network
networks:
  sonar-network:
    driver: bridge

常见的两个报错修复方法:

sysctl -w vm.max_map_count=262144
chmod -R 777 /opt/sonarqube/

三、开始扫描

在扫描之前,我们需要去服务器端创建一个项目,并创建Token,这两个参数后面需要用到。
客户端的安装就不详细介绍了,基本上下载了就可以用。
我们从github上随便拉取一个代码,来扫描一下。

git clone https://github.com/lvlq73/springcloud-demo.git
cd springcloud-demo
sonar-scanner   -Dsonar.projectKey=projectabc  -Dsonar.sources=.   -Dsonar.host.url=http://10.140.12.11:9000   -Dsonar.login=70e8f4973f09a432ec394d01a5f4a7642920eb05

我们就可以从服务端页面上看到报告了。

在SonarQube7和8中,各种语言都是通过plugin形式集成进来的,SonarQube9中一般的编程语言都是内置的,无需插件安装。

四、集成到gitlab-CI中

这里使用gitlab CI Docker DooD的方式,关键语句如下

codesonar:
  stage: codesonar
  variables:
    SONAR_TOKEN: "9a2be615a4eaf55edb632f733fd5af4139c39225"
    SONAR_HOST_URL: "http://10.192.15.63:9000"
    GIT_DEPTH: 0
  image: sonarsource/sonar-scanner-cli:latest
  script:
    - echo "start sonar scaning"
    - sonar-scanner -Dsonar.projectKey=projetcabc   -Dsonar.sources=.
  allow_failure: true

和sonarqube相关的配置可以存放到代码库里的sonar-project.properties文件中,就不需要在命令行指定了。

转载请注明:IPCPU-网络之路 » SonarQube的使用

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址