SonarQube安装使用教程(仅为自己学习过程中记录)

1. 简介:

sonarqube是一个开源代码质量管理平台,可通过安装不同的插件sonar可以集成测试工具、代码质量分析工具、持续集成等多种功能。sonarqube架构主要由:sonarqube服务器、sonar数据库、插件、sonarqube scanners四部分组成。

Sonar的工作原理

Sonar实际上是一个Web系统,展现了静态代码扫描的结果,结果是可以自定义的,而真正实现代码扫描的是Sonar Scanner这个工具,另外同时支持多种语言的原理是它的扩展性,通过插件实现的,也就是Java Jar架包,可以在Sonar平台上在线安装或者离线安装。
SonarQube 需要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还需要持续集成工具(如Jenkins)的支持,在构建版本前,通过Jenkins+Sonar 插件执行项目分析指令,最终的结果会通过SonarQube 服务器的Web 页面展示。下图是使用SonarQube做代码持续审查的流程图:

SonarQube安装使用教程(仅为自己学习过程中记录)_第1张图片
image.png

开发人员把代码push到SCM(如gitlab)【上图第2步】,jenkins构建定义好的job,然后通过jenkins 插件(sonar scanner)分析源码【上图第3步】,jenkins把分析报告发到sonarqube server【上图第4步】。

二. sonarqube下载安装

注:在这里是安装7.7。sonarqube7.7之前可以用mysql(而且mysql的版本>5.6小于8.0,具体可以看conf下的sonar.properties),之后就不支持。

  1. 首先确保安装了jdk11(jdk版本太低会报错)


    image.png
  2. 到此链接 https://www.sonarqube.org/downloads/下载sonarqube(下载社区版,是免费的),并解压,解压完之后就可以用啦
  3. 到解压完之后的目录下,我是在这里D:\sonarqube-7.7\bin\windows-x86-64,双击StartSonar.bat文件,启动StartSonar
  4. 到浏览器界面,输入 : http://localhost:9000 //能够进入界面表示安装成功
  5. 登录:默认用户名密码是admin(登录前后的区别是登录后多了配置,其余的感觉没太大区别)


    image.png
  6. 安装中文插件:安装成功后重启sonar


    SonarQube安装使用教程(仅为自己学习过程中记录)_第2张图片
    image.png

三、开始分析项目源代码

扫描器有四种:

  • Gradle - SonarScanner for Gradle
  • MSBuild - SonarScanner for MSBuild
  • Maven - use the SonarScanner for Maven
  • Jenkins - SonarScanner for Jenkins
  • Azure DevOps - SonarQube Extension for Azure DevOps
  • Ant - SonarScanner for Ant
  • anything else (CLI) - SonarScanner

3.1使用maven的方式分析

  1. 编写maven的settings.xml文件
    我的位置是在D:\apache-maven-3.5.0\conf\settings.xml
    找到对应的位置添加以下代码:

    
        org.sonarsource.scanner.maven
    
    
        
            sonar
            
                true
            
            
                
                
                  http://localhost:9000
                
            
        
     


我的是这样


SonarQube安装使用教程(仅为自己学习过程中记录)_第3张图片
image.png

SonarQube安装使用教程(仅为自己学习过程中记录)_第4张图片
image.png
  1. 在需要代码检查的项目的根目录下(也就是带有pom.xml的目录)执行命令
    mvn clean verify sonar:sonar
    出现build success表示成功


    SonarQube安装使用教程(仅为自己学习过程中记录)_第5张图片
    image.png

    浏览器输入红框处地址即可查看,或者刷新页面

3.2SonarQube实现GitLab代码审计(还在进行中)

  1. 下载插件包 sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar(gitlab插件)
    放到D:\sonarqube-7.7\extensions\plugins这个下面;或者按照安装中文插件的方式安装
  2. 下载Gitlab Runner,安装环境、注册Gitlab Runner

GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用,GitLab中包含的开源持续集成服务可以协调工作。
官网教程:https://docs.gitlab.com/runner/install/windows.html

SonarQube安装使用教程(仅为自己学习过程中记录)_第6张图片
gitlabrunner.png
  • gitlab ci的地址以及token,从你要配置该runner到哪个项目,就去gitlab下该项目首页右侧设置—》CI/CD Pipelines—》Specific Runners下可以找到。
  • gitlab-ci tags这个很重要,在项目构建流程yaml文件里面指定tag,就是匹配使用哪个tag的runner,这里我定义了my-tag,another-tag;回头再配置文件里面就指定这个tag。
  • executor:执行者可以有很多种,这里我们使用shell
    (1)gitlab-ci token的获取()


    SonarQube安装使用教程(仅为自己学习过程中记录)_第7张图片
    image.png
  1. 编写gitlab-ci.yml并将其放在Gitlab上的根目录下,当存储库发生任何更改时,他将启动这个脚本
stages:
  - build
  - test
job1:
  stage: test
  script:
  - sh test.sh
  artifacts:
    paths:
    - data_test/
job2:
  stage: build
  script:
  - echo 'suceed test' >> txt1
  1. gitlab和sonar之间互通
    (1)首先需要登录开发人员和设计人员的GitLab账户,获取个人的Token,如果没有Token,可以新建一个
    (2)登录SonarQube账户,配置GitLab地址和账户Token信息
    应用id是项目的id


    SonarQube安装使用教程(仅为自己学习过程中记录)_第8张图片
    image.png

四、webhook

参考:

  1. https://blog.csdn.net/u011884671/article/details/80525727?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2
  2. https://blog.csdn.net/weixin_40861707/article/details/82117232

sonar7.7 webapi解析

  1. 点进自己的某一个扫描后的项目project,会在右下角发现一个projectKey.:org.sonarqube:sonarscanner-maven-aggregate
  2. Web API文档路径:http://localhost:9000/web_api
  3. 认证api:
    POST api/authentication/login 参数是login和password 没有特别说明的话,这里的login和password都是admin,可以在sonar页面的最上方Administration里点进行密码修改,也可以直接修改config文件.
    如果使用POSTMAN测试接口需要认证的sonar GET接口,可以在postman的认证里,选basic auth,然后填login和password,再发GET请求就可以了。
    http://localhost:9000/api/authentication/validate
    SonarQube安装使用教程(仅为自己学习过程中记录)_第9张图片
    image.png

api/projects/search搜索项目或视图来管理它们。


SonarQube安装使用教程(仅为自己学习过程中记录)_第10张图片
image.png

https://blog.csdn.net/qq_33655674/article/details/79592305?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2

https://www.cnblogs.com/zhhiyp/p/9716158.html
java调用Api接口工具类https://blog.csdn.net/BoomLee/article/details/93032032
生成PDFhttps://gitee.com/jlynet007/sonar-pdf-plugin/tree/master

SonarQube安装使用教程(仅为自己学习过程中记录)_第11张图片
image.png

五、问题

注意:在结束服务时,要在终端界面执行ctrl+c命令,出现选择yes或者no时,选择yes退出,否则就要按照问题1的解决方法去解决。

  1. 启动SonarQube,在浏览器输入http://localhost:9000/about,SonarQube服务端闪退。(学会去看错误日志,里面有出现错误的原因)
    解决办法:查看/logs/下的日志,发现org.elasticsearch.transport.BindTransportException: Failed to bind to [9001]
    Caused by: java.net.BindException: Address already in use: bind
    查看占用端口的进程PID:netstat -aon | findstr "9000"
    杀死占用端口的进程:taskkill /pid 19528 /f
    具体解决方法如下图所示
    SonarQube安装使用教程(仅为自己学习过程中记录)_第12张图片
    image.png

    然后sonar服务端显示
    SonarQube安装使用教程(仅为自己学习过程中记录)_第13张图片
    image.png

你可能感兴趣的:(SonarQube安装使用教程(仅为自己学习过程中记录))