当前位置:首页 > 技术分析 > 正文内容

安全防护,静态扫描工具sonarqube介绍

ruisui883个月前 (01-31)技术分析18

安全防护,静态扫描工具sonarqube介绍

一:SonarQube介绍

#官网文档

#https://docs.sonarqube.org/latest/#staying-connected

https://docs.sonarqube.org/latest/setup-and-upgrade/install-the-server/

二:概念

异味 Code smell (maintainability domain)

异味太多了,我也没有消除太多了异味,一个项目异味一般都是好几k,所以消除起来一两个异味对基数没有什么影响,并且异味太多,消除一部分后,并没有感受到那种异味数量巨减的感觉,导致消除异味的积极性不是很高。并且有的异味是真的不好消除,有时候打开一个文件,几千行代码一片都是标异味。直接就放弃了。

代码异味:一种编程术语,指的是代码中的某些特征可能导致潜在的问题,通常需要进行重构以提高代码质量

三:SonarQube架构

1,不遵守代码标准(checkstyle)

2,潜在缺陷(空指针)

3,糟糕的复杂度(难以理解)

4,重复(通用的方法需要归纳封装)

5,糟糕的注释

7,糟糕的设计(耦合度检查)

需要用到的软件有:SonarQube,Sonar-scanner。

SonarQube为代码检查的server,并提供可视化界面;

Sonar-scanner为client。用于收集检查数据并且发送到server中。

也就是传统的C/S关系:


四:与gitlab集成扫描

配置gitlab api

集成gitlab:

通过git-runner执行脚本gitlab-ci.yml。当任意同事代码提交时直接触发gitlab-ci.yml。

gitlab-ci.yml触发sonarQube代码检查脚本比如:进入项目文件夹 ——> 执行指令:sonar-scanner


五:与jenkins集成

集成Jenkins:

在jenkins服务器上安装客户端Sonar-Scanner并配置好环境变量。

当jenkins自动部署项目完成之后触发逻辑:进入项目文件夹 ——> 执行指令:sonar-scanner

进入 Jenkins ,系统管理——> 系统配置 ——> 找到 Sonar ——> 追加配置——> 添加凭据

注:Secret 在SonarQube里面 “生成令牌”

六:安装部署

#ubuntu 2204

1.docker-compose 组件部署

创建网络

docker network create sonarnet

docker network ls

2.下载镜像

docker pull postgres:12

docker pull sonarqube:community

3.创建目录

mkdir -p /data/sonarqube/{conf,data,logs,extensions}

mkdir -p /data/postgres/{postgresql,data}

chmod -R 777 /data/sonarqube

4.编写配置文件

conf/sonar.properties

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar123
sonar.jdbc.url=jdbc:postgresql://postgres:5432/sonar

5.中文汉化补丁

下载:
https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-10.0/sonar-l10n-zh-plugin-10.0.jar

上传到:extensions/plugins/

6.配置docker-compose.yaml

#如果文件名称不一样 docker-compose -f sonar-docker-compose.yml up -d

docker-compose.yml


version: '3'
services:
  postgres:
    image: postgres:12
    restart: always
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - /data/postgres/postgresql/:/var/lib/postgresql
      - /data/postgres/data/:/var/lib/postgresql/data
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar123
      POSTGRES_DB: sonar
    networks:
      - sonarnet
  sonar:
    image: sonarqube:community
    restart: always
    container_name: sonar
    depends_on:
     - postgres
    volumes:
     - /data/sonarqube/extensions:/opt/sonarqube/extensions
     - /data/sonarqube/logs:/opt/sonarqube/logs
     - /data/sonarqube/data:/opt/sonarqube/data
     - /data/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:
     - sonarnet
networks:
   sonarnet:
     driver: bridge

7.启动服务

docker-compose up -d

#停止

docker-compose down

#重启

docker-compose restart sonar


8.默认访问账号密码

http://192.168.10.14:9000/

admin

admin

9.修改web服务配置

方法1:

Web服务默认的端口号是9000

sonar.web.port=9003

方法2:部署nginx

配置域名

七:Sonar-scanner客户端

sonar-scanner提供本地的代码扫描,客户端可以安装在与服务端相同的服务器,也可以装在不同的服务器(也可以安装在开发人员本地电脑)

1.下载

使用浏览器打开刚刚安装好的SonarQube Web UI,新建project时根据指引,可以找到对应OS的sonar-scanner客户端下载地址以及使用命令

https://docs.sonarqube.org/10.0/analyzing-source-code/scanners/sonarscanner/

#scanner client

集成Jenkins:
       在jenkins服务器上安装客户端Sonar-Scanner并配置好环境变量。
       当jenkins自动部署项目完成之后触发逻辑:进入项目文件夹 ——> 执行指令:sonar-scanner

集成gitlab:
       通过git-runner执行脚本gitlab-ci.yml。当任意同事代码提交时直接触发gitlab-ci.yml。
       gitlab-ci.yml触发sonarQube代码检查脚本比如:进入项目文件夹 ——> 执行指令:sonar-scanner


#执行 SonarQube 分析非常简单

sonar-scanner

-Dsonar.projectKey=go-gateway

-Dsonar.sources=.

-Dsonar.host.url=http://192.168.10.14:9000

-Dsonar.token=sqp_8aad21f2cdc5c5985c634f05a1120e001ccce35a

2.二进制方式

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip

unzip sonar-scanner-cli-4.8.0.2856-linux.zip

cd sonar-scanner-4.8.0.2856-linux/conf

vi sonar-scanner.properties

# 打开下面两项配置
sonar.host.url=http://localhost:9000 # 因为是在本地,不用修改了
sonar.sourceEncoding=UTF-8
 
# 并添加两行,写上登录SonarQube Web UI的账号密码
sonar.login=youraccount
sonar.password=yourpassword

3.配置环境变量

修改环境变量(下面的步骤使用root账号操作)

vi /etc/profile

在最下面添加一行并保存

export PATH="$PATH:/data/sonar-client/sonar-scanner-4.8.0.2856-linux/bin"

使配置生效

source /etc/profile

环境变量设置成功,可以在服务器的任何地方执行sonar-scanner命令了

sonar-scanner -v


4.代码扫描

a.从gitlab仓库拉取代码到服务器(实际使用中,按测试要求拉取对应tag的代码)

#git clone -b dev https://mengsy:Meng%40@gitlab.meta.com/backend/cpp-world.git

git clone -b dev https://mengsy:Meng%40@gitlab.meta.com/backend/go-gateway.git

b.添加扫描配置文件sonar-project.properties

进入项目代码的工程目录,在根目录下面新建一个配置文件sonar-project.properties

sonar-project.properties

# cd go-gateway/
# touch sonar-project.properties
 
# 写入如下的内容
# must be unique in a given SonarQube instance
sonar.projectKey=go-gateway
 
# --- optional properties ---
# defaults to project key
sonar.projectName=go-gateway      # 修改成实际项目名称
 
# defaults to 'not provided'
sonar.projectVersion=dev-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

c.执行扫描

sonar-scanner

#ERROR: Error when running: 'node -v'. Is Node.js available during analysis?

d.查看结果

http://192.168.10.14:9000/projects



扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/613.html

分享给朋友:

“安全防护,静态扫描工具sonarqube介绍” 的相关文章

Java教程:gitlab-使用入门

1 导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作GitLab简介GitLab环境搭建GitLab基本使用(组、权限、用户、项目)2 GitLab简介GitLab是整个DevOps生命周期...

软件测试-性能测试专题方法与经验总结

本文 从 性能测试流程,性能测试指标,性能监测工具,性能测试工具,性能测试基线,性能测试策略,性能瓶颈分析方法几个维度,进行知识总结和经验分享;详细见下图总结,欢迎大家补充;性能测试经验与思考1. 性能测试流程1.1. 性格规格评审1.2. 资源排期1.2.1. 人力资源1.2.2. 时间计划· 性...

壹啦罐罐 Android 手机里的 Xposed 都装了啥

这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

高效使用 Vim 编辑器的 10 个技巧

在 Reverb,我们使用 MacVim 来标准化开发环境,使配对更容易,并提高效率。当我开始使用 Reverb 时,我以前从未使用过 Vim。我花了几个星期才开始感到舒服,但如果没有这样的提示,可能需要几个月的时间。这里有十个技巧可以帮助你在学习使用 Vim 时提高效率。1. 通过提高按键重复率来...

vue v-html动态生成的html怎么加样式/事件

1、动态生成的html,样式不生效//html 布局 <view v-html="html"> {{html}} </view> //动态生成的元素 <view class="btngo" @tap="handleLink...

雅马哈TMAX 560 TECH MAX 外媒深度测评

应雅马哈(Yamaha)的邀请,在葡萄牙埃斯托里尔对全新的Yamaha TMAX 560 Tech Max踏板车进行了测试,在这里TMAX 560 Tech Max售价为11649英镑。雅马哈TMAX长期以来一直站在踏板车的顶端,就声誉和知名度而言,它是当之无愧的大踏板界NO.1。2020 TMAX...