近期测试团队使用sonarqube进行代码的风险检测,通过Jenkins定时跑任务的方式,为了更好地及时相应代码的Bugs以及漏洞的修改,本文主要介绍在vscode中如果通过插件配置及时响应sonarqube线上代码的问题

前提:

  • 团队中or个人已经部署了sonarqube,启动sonar server服务。记住sonar server服务中配置好的projectKey,后续会用到
  • 本文主要使用的是vscode的SonarQube support for Visual Studio Code插件

0. 插件安装

安装VSCodeSonarQube support for Visual Studio Code插件,如下图找到插件

sonarqube插件下载

插件下载完成后输入Ctrl + P 打开Vscode命令搜索功能,输入sonar模糊查询到结果如下

sonar配置

1. 配置

  1. sonarLint 全局配置

    • 选择 Create global config with credentials to servers, 弹出并打开 global.json文件

      global.json

    • global.json 文件打开如下,即sonarLint的全局配置文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      {
      "servers": [
      {
      "id": "localhost",
      "url": "http://localhost:9000",
      "token": "YOUR_SONARQUBE_AUTH_TOKEN"
      },
      {
      "id": "my-company-server",
      "url": "http://my-company.com",
      "token": "YOUR_SONARQUBE_AUTH_TOKEN"
      }
      ]
      }
    • 接下来只需要自定义上图对应字段, servers两个配置项只需定义一个即可

      • id: 与具体工程关联的唯一标识符,在具体工程配置文件中会用到

      • url: sonar server 所在的地址

      • token: 能进入 sonar server 的用于验证用户身份的一串字符,下图是通过sonarqube如何生成token

        sonarqube-token

  2. sonarLint 工程配置文件

    • 重复以上步骤Ctrl+P, 搜索 >sonar,
      选择 Create local sonarlinet config with project binding,弹出并打开 sonarlint.json 文件

    • sonarlint.json文件打开如下,即sonarLint的工程配置文件

      1
      2
      3
      4
      5
      {
      "$schema": "https://raw.githubusercontent.com/silverbulleters/sonarqube-inject-vsc/master/schemas/sonarlint.json",
      "serverId": "my-company-server",
      "projectKey": "my-project"
      }
    • 接下来自定义上图对应字段

      • serverId:即配置全局文件时的 id

      • projectKey:sonar server 上的工程唯一标识,即上文所说的server中每个任务的projectKey,如下图所示,在jenkins项目配置的例子

        projectKey


至此配置完成,vscode编辑器能直接提醒出sonarqube上的报错信息,如图所示
sonarqube的报错信息

sonarqube-error

vscode上代码信息自动提示

vscode-error


  1. 其他sonarlint相关命令,即 Ctrl+P > >soanr后其余指令

    • Analyze current file:重新分析当前文件
    • Analyze current project:重新分析当前工程所有文件
    • Update bindings to SonarQube server:更新来自 Sonar Server 的规则

其他

插件github地址