杭州第一期_代码审计平台_20181027

docker答疑

docker run --name some-nginx -v $PWD:/usr/share/nginx/html:ro -d -p 7777:80 registry.docker-cn.com/library/nginx
curl http://www.baidu.com > index.html

sonar系统搭建

docker run -d --name sonarqube \\
-p 9000:9000 -p 9092:9092 \\
registry.docker-cn.com/library/sonarqube

公共地址:http://jenkins.testing-studio.com:9000/

标准部署

docker run -d --name sonarqube \\
    -p 9000:9000 -p 9092:9092 \\
    -e SONARQUBE_JDBC_USERNAME=sonar \\
    -e SONARQUBE_JDBC_PASSWORD=sonar \\
    -e SONARQUBE_JDBC_URL=jdbc:postgresql://localhost/sonar \\
    sonarqube

配置

默认用户名密码: admin/admin
token: 304fb4f12871f6b434575efebf525d89cfee6fef

gradle

plugins {
  id "org.sonarqube" version "2.6"
}

./gradlew sonarqube \\
  -Dsonar.host.url=http://jenkins.testing-studio.com:9000 \\
  -Dsonar.login=304fb4f12871f6b434575efebf525d89cfee6fef


maven

mvn sonar:sonar \\
  -Dsonar.host.url=http://jenkins.testing-studio.com:9000 \\
  -Dsonar.login=304fb4f12871f6b434575efebf525d89cfee6fef

通用命令

sonar-scanner \\
  -Dsonar.projectKey=testerhome \\
  -Dsonar.sources=. \\
  -Dsonar.host.url=http://jenkins.testing-studio.com:9000 \\
  -Dsonar.login=304fb4f12871f6b434575efebf525d89cfee6fef

普通用户身份

token:7afe538ee954f29ee2d5dfef6baac4fc3ca87d66

示例项目

git clone https://github.com/SonarSource/sonar-scanning-examples.git

scanner

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

配置PATH ~/.bash_profile

export SONAR_HOME=/Users/seveniruby/temp/sonar/sonar-scanner-3.2.0.1227
export PATH=$SONAR_HOME/bin/:$PATH

使用参数自定义

sonar-scanner   -Dsonar.host.url=http://sonar.testing-studio.com:9000 -Dsonar.projectVersion=1.4

项目变更

  • 关注新增代码带来的问题

Maven分析

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


<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://myserver:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

error 信息

Error Details
Validation of project failed:
  o The project "org.sonarqube:app-java" is already defined in SonarQube but not as a module of project "org.testerhome:parent-maven-seveniruby". If you really want to stop directly analysing project "org.sonarqube:app-java", please first delete it from SonarQube and then relaunch the analysis of project "org.testerhome:parent-maven-seveniruby".

Android Gradle项目分析

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

实战

通用测试数据 Generic Test Data

https://docs.sonarqube.org/display/SONAR/Generic+Test+Data

  <properties>
<sonar.coverageReportPaths>${project.basedir}/coverage/1.xml</sonar.coverageReportPaths>
<sonar.testExecutionReportPaths>${project.basedir}/coverage/testcases.xml</sonar.testExecutionReportPaths>

  </properties>

学习参考

作业1

使用默认的example去扫描,把项目的名字改成自己的名字demo project of seveniruby ,项目的key改成com.testerhome:SevenirubyDemo,使用scanner扫描并上传到公共服务器。

问题

  • token sonar可以加强认证,只允许有token的人访问和使用sonar

作业2

完成sonar maven的分析,把项目的名字改成带有自己名字的标记,把项目的截图贴上来

作业3

构建自己的覆盖率数据并导入sonar

作业4

把自定义集成测试用例结果导入sonar

作业5

https://github.com/a-voyager/WeekToDo 分析一个真实项目,演练在真实项目中应用sonar

关闭