测试左移——代码审计SonarQube 平台搭建

一、sonarqube代码分析技术体系

1、代码分析工具

IDE 辅助功能

  • xcode、android studio
  • 阿里巴巴 java 开发手册 ide 插件支持

独立的静态分析工具

  • spotbugs、findbugs、androidlint、scan-build、Checkstyle、FindSecBugs
  • pmd 阿里巴巴 java 开发手册 pmd 插件

综合性的代码分析平台

  • sonarqube 功能强大,数据分析全面

2、代码分析技术架构

代码静态检查

  • 代码分析:通过分析语法树和源代码,检查代码规范

    • lint 系列 style 系列 pmd
    • antlr
  • 编译器分析:借助于编译器获得代码关系

字节码静态分析

  • 分析 jar、war、dex 等格式的文件,代表工具:findbugs asm

3、语法树分析技术

在这里插入图片描述

4、字节码分析技术 Java 与 Kotlin 源代码

在这里插入图片描述

5、SonarQube

代码质量和安全的领先产品
17种语言的静态代码分析
检测Bug和漏洞
查看安全热点
跟踪代码气味并修复您的技术债务
代码质量度量和历史
CI/CD集成
可扩展,具有50多个社区插件

在这里插入图片描述

6、代码分析主要指标

在这里插入图片描述

7、代码分析细节指标

在这里插入图片描述

8、度量指标总结

可靠性 bugs
可维护性 code smells
安全性 Vulnerabilities Security Hotspots
覆盖率 Coverage Unit Tests
代码重复 Duplications
代码规模 Lines of Code Comments rate
复杂度 Cyclomatic Complexity Cognitive Complexity

在这里插入图片描述

9、独立分析平台使用案例

在这里插入图片描述

10、持续集成使用案例

在这里插入图片描述

11、Sonarqube经典案例分析

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

目前大部分公司都采用了 sonarqube,它的概念和技术指标已经成为行业事实上的标准

二、代码审计 SonarQube 平台搭建

1、sonarqube 技术架构

在这里插入图片描述

2、正式环境部署

1、创建网络

[root@mylinux1 ~]# docker network create sonarqube
1f22eb6dc8bb5b640a87d74bbc7a9d7f783b3dde0325bffecd74038eb9aebf69

2、创建数据库容器实例

-e POSTGRES_USER=sonarqube:设置数据库用户名
-e POSTGRES_PASSWORD=sonarqube:设置数据库密码
-e PGDATA=/var/lib/postgresql/data/pgdata:指定数据库的位置
-v $PWD/postgresql_data:/var/lib/postgresql/data:把数据映射到当前目录下的postgresql_data中:即使容器销毁了,重新创建一个,数据不会丢

docker run -d \
  --name sonarqube_postgres \
  --network sonarqube \
  -e POSTGRES_USER=sonarqube \
  -e POSTGRES_PASSWORD=sonarqube \
  -e PGDATA=/var/lib/postgresql/data/pgdata \
  -v $PWD/postgresql_data:/var/lib/postgresql/data \
  postgres

3、创建sonarqube容器实例

创建sonarqube容器实例,可以通过-Xms4g -Xmx4g增加下ES的堆内存大小
mac环境需要加 -e SONAR_SEARCH_JAVAADDITIONALOPTS=“-Dbootstrap.system_call_filter=false”

platform linux/x86_64:在mac上需要加这条命令
-e SONARQUBE_JDBC_USERNAME=sonarqube
-e SONARQUBE_JDBC_PASSWORD=sonarqube \:设置数据库的用户名和密码
-v $PWD/sonarqube_data:/opt/sonarqube/data
-v $PWD/sonarqube_extensions:/opt/sonarqube/extensions
-v $PWD/sonarqube_logs:/opt/sonarqube/logs \:宿主机和容器映射

docker run -d  \
  --name sonarqube_hogwarts \
  --platform linux/x86_64 \
  -p 9000:9000 -p 9092:9092 \
  --network sonarqube \
  --user $(id -u):$(id -g) \
  -e SONARQUBE_JDBC_USERNAME=sonarqube \
  -e SONARQUBE_JDBC_PASSWORD=sonarqube \
  -e SONARQUBE_JDBC_URL="jdbc:postgresql://sonarqube_postgres/sonarqube" \
  -e SONAR_SEARCH_JAVAADDITIONALOPTS="-Dbootstrap.system_call_filter=false -Xms1g -Xmx1g" \
  -e SONARQUBE_WEB_JVM_OPTS="-Xms2g -Xmx2g" \
  --ulimit nofile=524288:524288 \
  -v $PWD/sonarqube_data:/opt/sonarqube/data \
  -v $PWD/sonarqube_extensions:/opt/sonarqube/extensions \
  -v $PWD/sonarqube_logs:/opt/sonarqube/logs \
  sonarqube

4、检查容器启动成功

[root@mylinux1 ~]# docker ps
CONTAINER ID   IMAGE                       COMMAND                   CREATED              STATUS              PORTS                                                                                  NAMES
de81187b3504   sonarqube:8.9.2-community   "bin/run.sh bin/sona…"   About a minute ago   Up About a minute   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp, 0.0.0.0:9092->9092/tcp, :::9092->9092/tcp   sonarqube_hogwarts
532e9ed4212d   postgres                    "docker-entrypoint.s…"   9 minutes ago        Up 9 minutes        5432/tcp                                                                               sonarqube_postgres
60ed0289df5b   registry:2                  "/entrypoint.sh /etc…"   4 months ago         Up 42 hours         0.0.0.0:5000->5000/tcp, :::5000->5000/tcp  

5、环境配置

默认账号 admin:admin
生成 token
划分组与用户

登录页面
在这里插入图片描述
首页
在这里插入图片描述
projects:项目列表(大部分项目是自动创建)
issues:发现的问题
rules:制定的规则
quality profiles::定制规则
quality gates:质量门禁
administration:管理

6、环境变量设置

为了方便命令复用,后面命令中可变内容使用环境变量来表示 $SQ_HOST

[root@mylinux1 ~]# SQ_TOKEN=22df457ac0dc32269a36868645490a85a357d44118
[root@mylinux1 ~]# SQ_HOST=http://192.168.22.3:9000

猜你喜欢

转载自blog.csdn.net/YZL40514131/article/details/132588639
今日推荐