在什么网站能找到做外贸的邮箱,建筑网360,flash网站什么意思,美团企业邮箱认证怎么弄docker搭建代码审计平台sonarqube 一、代码审计关注的质量指标二、静态分析技术分类三、使用sonarqube的目的四、sonarqube流程五、docker快速搭建sonarqube六、sonarqube scanner的安装和使用七、sonarqube对maven项目进行分析八、sonarqube分析报告解析九、代码扫描规则定制十… docker搭建代码审计平台sonarqube 一、代码审计关注的质量指标二、静态分析技术分类三、使用sonarqube的目的四、sonarqube流程五、docker快速搭建sonarqube六、sonarqube scanner的安装和使用七、sonarqube对maven项目进行分析八、sonarqube分析报告解析九、代码扫描规则定制十、sonarqube api的使用十一、单元测试与代码覆盖率实战十二、使用注意事项 一、代码审计关注的质量指标
代码坏味道 代码规范技术债评估 bug和漏洞代码重复度单测与集成 测试用例数量覆盖率
二、静态分析技术分类
代码静态检查 代码分析:lint系列通过分析语法树和源代码检查代码规范编译器分析:借助于编译器获得代码关系 字节码静态分析 分析jar、war、dex等格式的文件代表工具:fndbugs
三、使用sonarqube的目的
sonarqube目前我们着重关注一些高优先级别的bug特别是新增代码导致的新的bug和漏洞比如因为安全规范没遵守导致潜在漏洞发生。还有就是看覆盖率和单元测试的case数量以及引用覆盖率去度量产品测试是否充分。
四、sonarqube流程 五、docker快速搭建sonarqube
db_instancepostgres_prod
sonarqube_instancesonarqube_prod
data_dir/root/sonarqube
#创建数据目录
mkdir -p $data_dir
mkdir $data_dir/postgresql
mkdir $data_dir/sonarqube_data
mkdir $data_dir/sonarqube_extensions
mkdir $data_dir/sonarqube_logs
chmod -R 777 $data_dir#创建网络
docker network create sonarqube
#启动pg数据库
docker run -d \--name $db_instance \--network sonarqube \-p 5432:5432 \-e POSTGRES_USERsonarqube \-e POSTGRES_PASSWORDsonarqube \-e PGDATA/var/lib/postgresql/data/pgdata \-v $data_dir/postgresql:/var/lib/postgresql/data \postgressysctl -w vm.max_map_count524288
sysctl -w fs.file-max131072
ulimit -n 131072
ulimit -u 8192#启动soarqube的产品部署
docker run -d \--name $sonarqube_instance \--network sonarqube \-p 9000:9000 -p 9092:9092 \-e SONARQUBE_JDBC_USERNAMEsonarqube \-e SONARQUBE_JDBC_PASSWORDsonarqube \-e SONARQUBE_JDBC_URLjdbc:postgresql://$db_instance/sonarqube \-v $data_dir/sonarqube_data:/opt/sonarqube/data \-v $data_dir/sonarqube_extensions:/opt/sonarqube/extensions \-v $data_dir/sonarqube_logs:/opt/sonarqube/logs \sonarqubedocker start sonarqube_prod查看日志docker logs -f sonarqube_prod 搭建完成后网页输入http://ip:9000/访问默认用户名密码是admin进入以后可以改密码首页长这样 页面介绍 project项目tab可以在里面创建一个项目。有项目的可以看到项目总览 issues报告出来的问题。左边可以根据条件进行筛选 rules系统总共有多少规则需要配置 quality profiles包含了一系列rules的配置文件用于代码分析。允许对规则进行自定义自己去创建一个新的规则集然后到rules去里面选自己觉得有用的 quality gates质量门禁可以在里面配置比如覆盖率达到x%的时候就表示通过 administration管理员面板 安装插件 java常用插件有CheckstyleFindbugsPMDSonarJSSonarJava后面这3个我找不到了不知道是不是我版本太高了哈哈 我们可以在/root/sonarqube/sonarqube_extensions/downloads查看到下载内容 下载完记得要重启
六、sonarqube scanner的安装和使用
PS我这边下的是sonar的v10.5.1 版本要搭配java17使用大家要提前配好环境变量哦~
安装scanner并配置环境变量。
# 下载
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli
/sonar-scanner-cli-5.0.1.3006-linux.zip
# 解压
yum -y install unzip
unzip sonar-scanner-5.0.1.3006-linux
# 修改conf配置的全局变量改成自己的sonarqube地址还有login密码并保存
cd sonar-scanner-5.0.1.3006-linux/
vim conf/sonar-scanner.properties # 配置环境变量
vim /etc/profile
# 添加上
SONARSCANNER_HOME/root/sonarqube/sonarqube_extensions/downloads/sonar-scanner-5.0.1.3006-linux PATH$PATH:$SONARSCANNER_HOME/bin
export SONARSCANNER_HOME PATH
# 使其生效
source /etc/profile
# 检查sonarscanner是否配置成功
sonar-scanner -h使用sonar-scanner分析基础项目
# 下载sonar官方案例
git clone gitgitee.com:TheOctopus/sonar-scanning-examples.git
# 切换路径
cd sonar-scanning-examples
# 修改properties配置文件的前三个参数,projectVersion可以改成与项目一致的版本号并保存
cd /root/sonar-scanning-examples/sonarqube-scanner
vim sonar-project.properties输入sonar-scanner命令进行分析这里也要注意下记得是在sonar-project.properties所在文件夹执行命令否则又要报错啦哈哈哈
七、sonarqube对maven项目进行分析
PSmaven的环境变量大家记得先配
首先我们需要在页面新建一个项目projects-create project-输入namekey-点击next create project 分析方式选择我这边选择locally 点击generate生成秘钥-点击continue 选择maven然后复制里面的语句,进入项目里在pom文件所在文件夹执行命令图片里的key和name对不上是因为上面的项目忘记截图了重新创建了一个。。 结果可以在这里看也可以直接在sonarqube的页面看都有的 还有另外一种方式就是通过配置maven的setting.xml文件然后运行的时候只需要执行mvn clean verify sonar:sonar即可替你们试过了太麻烦了而且不灵活不推荐
!--demo--
settingspluginGroupspluginGrouporg.sonarsource.scanner.maven/pluginGroup/pluginGroupsprofilesprofileidsonar/idactivationactiveByDefaulttrue/activeByDefault/activationproperties!-- Optional URL to server. Default value is http://localhost:9000 --sonar.host.urlhttp://myserver:9000/sonar.host.url/properties/profile/profiles
/settings八、sonarqube分析报告解析 overview Quality Gate Status整体是否通过 Security安全性。底下的H、M、L分别代表高中低 Reliability可靠性 Maintainability可维护性 Accepted issues那些已经被分析人员或团队成员接受并认为不需要进一步处理的问题 Coverage覆盖率 Duplications重复 Security Hotspots代码中存在安全问题的部分它可以帮助安全分析师确定代码是否存在漏洞 Issues栏bug记录 点进去可以看到bug详情和解决方案 我们可以重点关注这里 measures栏 可以理解成质量模型 可以点进去查看详情 new code 新增代码的覆盖率 sonar可以很智能的分析新增代码的变更。怎么定义新增呢比如和上次的代码发生了偏差都认为是新增的
九、代码扫描规则定制
sonarqube默认自带了很多扫描的规则但是有的规则在实际项目里用不到我们如何自定义规则呢
进入rules里这里可以看到自带的规则然后我们可以进行过滤比如把优先级是低级中级的先过滤这样报告才能突出重点更加简洁明确。比如代码重复度这个一旦爆出就表示代码一定哪些地方写重复了还有一些高优先级的bug和漏洞。对于code smell低级别的bug之类的可以尽量弱化。比如我们只要高优先级的可以筛出来然后保存成配置文件然后导入即可 建议把报告直接给研发去看我们QA完全不管。还有就是我们有专门团队去看扫描的问题然后帮助研发去解决。研发有时候也看不懂他们会构造对应场景告诉研发危害是什么。对于偏业务测试的团队还是建议不要去提这类的bug会耗费大量精力这个比较适合专门的团队去跟进这些问题。一些规则的定制建议由专门的团队去负责
十、sonarqube api的使用 要让gitlab、jenkins去访问sonarqube包括我们写测试平台的时候我们有时候需要从sonarqube提取数据需要对外提供api。 访问api文档右下角点击web api 就可以看到具体的了这些指标也是对应我们上面的一些功能 web hook功能使用 当sonar分析完一个项目的时候jenkins希望得到通知我们就可以使用web hook功能 如何配置 进入administration-configuration-webhooks-create输入如下参数进行配置 十一、单元测试与代码覆盖率实战 相关文档https://docs.sonarsource.com/sonarqube/latest/analyzing-source-code/test-coverage/test-coverage-parameters/ 无侵入快速覆盖率统计 1、进入项目执行该脚本
// 启动注入并对代码进行染色执行单元测试生成覆盖率报告mvn clean \org.jacoco:jacoco-maven-plugin:0.8.6:prepare-agent \test \org.jacoco:jacoco-maven-plugin:0.8.6:report\-Dmaven.test.failure.ignoretrue \-Dmaven.test.skipfalse得到结果 跑完以后会生成exec结尾的报告 把它转为xml文件 执行mvn org.jacoco:jacoco-maven-plugin:0.8.6:report 查看生成的xml文件 利用scanner上传覆盖率数据
find $PWD -name jacoco.*mvn \clean \org.jacoco:jacoco-maven-plugin:0.8.6:prepare-agent \test \org.jacoco:jacoco-maven-plugin:0.8.6:report \sonar:sonar \-Dsonar.projectKeydemo \-Dsonar.host.urlhttp://192.168.10.137:9000/ \-Dsonar.tokensqp_2097cdfb11f2c55b87362c34acc660c781e03709 \-Dsonar.coverage.jacoco.xmlReportPaths$PWD/**/**/**/**/jacoco.xml \-Dmaven.test.failure.ignoretrue \-Dmaven.test.skipfalse执行完毕 查看页面覆盖率有值啦 代码修改后我们重新运行上面的脚本可以看到new code页有数据了。
十二、使用注意事项
大家不要把所有扫描出来的bug都扔给研发因为一个系统扫描一下通常有上千个bug有些bug的级别是非常低的建议不要关注历史的代码债只关注新增的上面那个页面的重点关注代码覆盖率还有severity也重点关注high级别的