这是我参与更文挑战的第8天,活动详情查看:更文挑战
前言
为了保证我们的代码质量,公司让我们的代码都需要经过sonarlint的静态代码检查才能发布到生产环境。但我们现在所用的前端代码大部分都是eslint来检查代码,规则和sonarlint不太一样。所以有些报错在本地不会提示,但是到了sonarQube上就会变成严重的错误警告,而不能发布生产版本。为了可以在本地一次性将代码通过sonarlint的检测,节约时间成本,对如何在本地使用sonarlint进行了研究。
工作
在vscode配置sonarlint我们需要做如下工作:
- 下载
sonarlint的vscode的插件,并安装。 - 登录自己的
sonarQube账号,获得自己的generate token。 - 配置自己的
vscode的settings.json
下载并安装sonarlint插件
一般在扩展里面直接搜索sonarlint直接安装。或者官网下载sonarlint插件。通过安装插件包的方式安装。
这是下载插件的位置
这是安装插件的方式
获取Generate Token
先登录自己的sonarQube => 点击自己的头像 => 进入myAccount => 进入Security一栏 => 写一个自己定义的token name => 复制生成的token并保存好。
注意这个token只能生成时看到,后面就看不到了,所以要保存好,配置时要用。
配置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会覆盖掉try和catch中的return,任何情况下都会返回finally下的return,不符合我们的常规逻辑,所以会报错。
function final() {
try{
// doSomething();
return true;
} catch(err) {
return false;
} finally {
return 'is over'; // sonarlint error
}
}