sonarqube静态代码扫描工具常见用法

lomi / 2024-02-06 / 原文

  1. 安装服务器端的sonarqube

  2. 客户端有很多种比如SonarScanner CLI,Jenkins extension for SonarQube,SonarScanner for Maven,sonarlint等

  3. 创建项目后获取token
    image-20240205202335888

    image-20240205202355943
    image-20240205202412283

  4. SonarScanner CLI 的使用

    • 下载地址

    • 解压后修改配置文件
      sonar-scanner-5.0.1.3006-windows\conf

      #Configure here general information about the environment, such as SonarQube server connection details for example
      #No information about specific project should appear here
      
      #----- sonarqube服务器地址和项目token
      sonar.host.url=http://192.168.100.66:9000
      sonar.login=sqp_480f5126ff99c9208c21f3a3db21bb7f5e0cc23b
      
      #----- Default source code encoding
      sonar.sourceEncoding=UTF-8
      
      
      
    • 把sonar-scanner-5.0.1.3006-windows\bin目录加入到环境变量path

    • 在项目代码根目录创建当前项目的配置文件

      sonar-project.properties

      #项目的唯一标记
      sonar.projectKey=TestExample
      
      #项目的名字
      sonar.projectName=TestExample
      
      #项目的版本呢
      sonar.projectVersion=1.0
      
      #代码路径,.表示当前路径
      sonar.sources=.
      #编码
      sonar.sourceEncoding=UTF-8
      #代码语言
      sonar.language=java
      #二进制文件目录,这是要跳过的
      sonar.java.binaries=target/classes
      
      
    • 启动cmd 在 sonar-project.properties所在的目录执行 sonar-scanner开心静态代码扫描
      实际上是连接到sonarqube服务器取到扫描规则,然后scanner扫描代码,扫描完成以后上传结果到soanrqube服务器。

      image-20240205203322242

    • 如果啥都不配置也可以直接命令行指定参数执行

      -Dsonar.token 或者-Dsonar.login=账号-Dsonar.password=密码,都能指定授权

      #使用token
      sonar-scanner -Dsonar.projectKey=TestExample -Dsonar.host.url=http://192.168.100.66:9000 -Dsonar.token=sqp_958bf014e49777742cc027d6fddf70cd1941ec39 -Dsonar.sources=.  -Dsonar.java.binaries=.\target -Dsonar.java.source=8 -Dsonar.sourceEncoding=UTF-8
      
      #使用账号密码邓丽
      sonar-scanner -Dsonar.projectKey=TestExample -Dsonar.host.url=http://192.168.100.66:9000 -Dsonar.login=admin -Dsonar.password=admin123 -Dsonar.sources=.  -Dsonar.java.binaries=.\target -Dsonar.java.source=8 -Dsonar.sourceEncoding=UTF-8
      
  5. SonarScanner 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>
    
    clean verify sonar:sonar   -Dsonar.projectName=Maven-demo -Dsonar.projectKey=Maven-demo  install
    
  6. Jenkins extension for SonarQube 的使用

    • 用这个插件原:https://updates.jenkins.io/updates/hudson.plugins.sonar.SonarRunnerInstaller.json
    • 安装 SonarQube Scanner插件
    • 全局配置设置 SonarQube 的地址,账号密码(或者token)
    • 自动构建流水线中配置Execute SonarQube Scanner,设置项目的先关参数
  7. sonarlint的使用

    这是一个idea插件,安装插件以后,尅开始分析

    这种方式不会上传检查结果,只是拉取服务器的规则,方便代码中定义缺陷
    image-20240205214713947
    image-20240205214927014