定向班第一期_代码审计实战_20190421

章节大纲

  • 代码审计平台Sonar
  • 单测覆盖率
  • 精准化测试

SonarQube

临时部署

docker run -d --name sonarqube \\
-p 9000:9000 -p 9092:9092 \\
sonarqube

产品化部署

#记得用-v把数据保存到外部存储 -v $PWD/data:/var/lib/mysql
docker run -d --name sonar-mysql \\
-v $PWD/mysql:/var/lib/mysql \\
-e MYSQL_DATABASE=sonar \\
-e MYSQL_USER=sonar \\
-e MYSQL_PASSWORD=sonar \\
-e MYSQL_HOST=% \\
-e MYSQL_ROOT_PASSWORD=hogwarts \\
mysql:5.7

docker run -d  --name sonarqube_vip_1 \\
-p 9000:9000 -p 9092:9092 \\
--link sonar-mysql:db \\
-e SONARQUBE_JDBC_USERNAME=sonar \\
-e SONARQUBE_JDBC_PASSWORD=sonar \\
-e SONARQUBE_JDBC_URL="jdbc:mysql://db:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \\
sonarqube

演练项目

编译命令

git clone https://github.com/TeamNB/FakeBiliBili.git
cd FakeBiliBili
./gradlew clean assembleDebug

如果报错的话,请根据提示下载对应版本的依赖sdk与android build tool,默认依赖如下

localhost:FakeBiliBili seveniruby$ grep Version -r **/*.gradle
bilibili/build.gradle:    compileSdkVersion 26
bilibili/build.gradle:    buildToolsVersion '26.0.2'
bilibili/build.gradle:        minSdkVersion 15
bilibili/build.gradle:        targetSdkVersion 26
common/build.gradle:    compileSdkVersion 27
common/build.gradle:    buildToolsVersion '26.0.2'
common/build.gradle:        minSdkVersion 14
common/build.gradle:        targetSdkVersion 27
ijkplayer/build.gradle:    compileSdkVersion 27
ijkplayer/build.gradle:    buildToolsVersion '26.0.2'
ijkplayer/build.gradle:        minSdkVersion 15
ijkplayer/build.gradle:        targetSdkVersion 27

执行sonar构建

  • 安装scanner或者maven gradle的插件
  • 设置你的sonar的服务器地址等配置
  • 执行sonar分析源代码

gradle: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle

./gradlew sonarqube -Dsonar.projectKey=seveniruby -Dsonar.projectName=FakeBiliBili_思寒

Maven构建

执行命令

git clone https://github.com/rest-assured/rest-assured.git
cd rest-assured
mvn clean test package sonar:sonar

通用构建Scanner

sonar-scanner -Dsonar.projectKey=seveniruby_scanner_demo -Dsonar.java.binaries=.

Api

获取图标 svg格式
http://39.105.132.200:9000/api/project_badges/quality_gate?project=seveniruby

http://39.105.132.200:9000/api/project_badges/measure?project=seveniruby&metric=vulnerabilities

http://39.105.132.200:9000/api/project_badges/measure?project=seveniruby&metric=bugs

演练项目

作业1

把FakeBilibili的项目分析结果发送到公共演练平台Sonar,把Key与Name分别修为自己的名字,并截图回复,示例如下

作业2

把RestAssured的项目分析结果发送到公共演练平台Sonar,把Key与Name分别修为自己的名字,并截图回复,示例如下

作业3

把appium-uiautomator2-server的项目分析结果发送到公共演练平台Sonar,把Key与Name分别修为自己的名字,并截图回复,示例如下

课后作业

  • 把作业3完成
  • 预习jacoco
  • 通读下sonarqube的官方文档
  • 了解下精准测试概念

常见问题

  • 服务器内存不够无法启动sonar
关闭