sonarlint连接sonarQube——Vscode

5,535 阅读2分钟

这是我参与更文挑战的第8天,活动详情查看:更文挑战

前言

为了保证我们的代码质量,公司让我们的代码都需要经过sonarlint的静态代码检查才能发布到生产环境。但我们现在所用的前端代码大部分都是eslint来检查代码,规则和sonarlint不太一样。所以有些报错在本地不会提示,但是到了sonarQube上就会变成严重的错误警告,而不能发布生产版本。为了可以在本地一次性将代码通过sonarlint的检测,节约时间成本,对如何在本地使用sonarlint进行了研究。

工作

vscode配置sonarlint我们需要做如下工作:

  1. 下载sonarlintvscode的插件,并安装。
  2. 登录自己的sonarQube账号,获得自己的generate token
  3. 配置自己的vscodesettings.json

下载并安装sonarlint插件

一般在扩展里面直接搜索sonarlint直接安装。或者官网下载sonarlint插件。通过安装插件包的方式安装。

这是下载插件的位置

微信图片_20210608182445.png 这是安装插件的方式

微信图片_20210608182437.png

获取Generate Token

先登录自己的sonarQube => 点击自己的头像 => 进入myAccount => 进入Security一栏 => 写一个自己定义的token name => 复制生成的token并保存好。 注意这个token只能生成时看到,后面就看不到了,所以要保存好,配置时要用。

sonarlint-token获取.png

配置settings.json

找到自己已经安装好的sonarlint插件,进入介绍部分。可以看到介绍部分有教我们如何配置自己的sonarlint

"sonarlint.connectedMode.project": {
        "serverId": "warming", // 自定义的id要和下面的serverId保持一致
        "projectKey": "juejin:frontend:master", // 在sonarQube可以看到项目的key
},
"sonarlint.connectedMode.servers": [
    {
        "serverId": "warming", // 和上面的serverId相同
        "serverUrl": "https://sonar.juejin.im/", // 这个不用改动,大家的url相同
        "token": "******************" // 之前获取到自己的token
    }
],
"sonarlint.ls.javaHome": "C:\\\\Program Files\\Java\\jdk1.8.0_91", // 需要配置一下javaHome

结束

至此配置结束,重启vscode可以看到sonarlint的错误提示。现在可以有效避免生产严重警告的问题了。

sonarlint

在某些方面sonarlint做得还是不错的,很多代码逻辑上的错误也会提示。而eslint注重的是语法上的错误。 类似下面的代码块,sonarlint会提示不安全的写法,而eslint则不会。理由是finally如果写了return会覆盖掉trycatch中的return,任何情况下都会返回finally下的return,不符合我们的常规逻辑,所以会报错。

function final() {
    try{
        // doSomething();
        return true;
    } catch(err) {
        return false;
    } finally {
        return 'is over';  // sonarlint error
    }
}