后置 SonarQube 发现代码问题太迟了,怎样与 vscode 亲密结合,提升代码质量?

众所周知,SonarQube 是一款优秀的代码质量保障工具,但不少厂里对它的使用,停留在代码提交以后的代码仓库质量横向对比、纵向趋势分析方面,做为一个普通的搬砖工,为了提升本身的搬砖质量,咱们更应该关注的一个点是:代码提交以前,SonarQube 能帮咱们作些什么?java

vscode 插件库里搜索 sonar ,能够看到排名第一的是:SonarLint ,只要你的开发环境中安装着 jdk 8/11 和 node10+ ,这个插件几乎是开箱即用的,咱们能够在 problems 面板中看到来自 sonarlint 的严谨提醒:node

SonarLint 默认的规则集在 vscode 左侧面板中能够看到:docker

咱们能够根据需求定制规则,激活或者挂起某项规则。json

然而现实中,做为搬砖前线的一份子,咱们并不是单打独斗,团队每一个人,都得遵循共同的编码规则,这时候,SonarQube 就出场了。markdown

做为一个本地代码规范警告服务,咱们不须要 SonarQube 使用那些花里胡哨的图标和文字展现什么问题数据,而只须要 SonarQube 服务为咱们的团队提供一个远程的、公共的规则集,SonarLint 插件会为咱们作好规则下载、检测工做,咱们只须要在编辑器中进行简单的配置就能够了。编辑器

SonarLint 须要哪些配置信息?

SonarLint 官网 中写得很清楚,若是咱们想使用远程的规则集,须要在 vscode 的 user settings 中添加配置:工具

{
    "sonarlint.connectedMode.connections.sonarqube": [
        { "serverUrl": "https://sonarqube.mycompany.com", "token": "<generated from SonarQube account/security page>" }
    ]
}
复制代码

其次在项目下边新建 .vscode/settings.json ,配置以下:oop

{
    "sonarlint.connectedMode.project": {
        "projectKey": "the-project-key"
    }
}
复制代码

看配置就知道了,咱们的 SonarQube 服务,要能提供三个信息:url 、project key、project token。编码

安装 SonarQube

找一台机器,部署 SonarQube 服务。根据 Try out 中的步骤,咱们选择比较简单的 docker 镜像部署这个方法。url

$ docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest
复制代码

若是想部署到别的端口,好比 7000 ,只须要把上边命令中的 9000:9000 改成 7000:9000 就能够了。

$ docker run -d --name mySonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 7000:9000 sonarqube:latest
复制代码

查看服务:

$ docker ps
复制代码

如今,访问 http://ip:7000

这个 http://ip:7000 就是 vscode 配置里须要的 serverUrl 里了,接下来还得配置一些项目信息。

配置 SonarQube 项目信息

登陆,用户名密码都是 admin ,新建一个项目,随便叫什么,咱们甚至能够叫作「commonProjectForShareRules」

建立一个 token:

你可能猜到了,配置信息中须要的 project-key 就是 commonProjectForShareRules ,而 token 就是这一串复杂的 e83c6119c94266aaf8a50ea477b3b4c9b398ae02

接着选择语言、平台:

配置规则

如今,咱们能够自定义一些规则了,当咱们想自定义规则的时候,看到按钮是处于禁用状态的,页面提示:

咱们须要先自定义一份质量配置:

而后给这个配置选择一个项目,不用多说,选择咱们以前建立的项目:

回到规则页,选择咱们的自定义质量配置:

能够根据实际需求,选择激活、挂起某条规则,肯定规则集以后,vscode 只须要 command + shift + p ,选择:

编辑器 output 面板会提示:

以后 vscode 中的 SonarLint 会按照更新后的规则集检查代码。

一些小问题

各处信息都配置好以后,若是 vscode 中执行 SonarLint 时发现报错:command 'SonarLint.ShowSonarLintOutput' not found 或者 command Update ... not found这样的报错,多是 vscode 刚刚重启、或者 vscode 新开了个窗口的缘故,能够稍等一会,再次尝试。

若是启动一分钟左右 output 面板提示:org.sonarsource.nodejs.NodeCommandException: Failed to start server (60s timeout),极可能是没找到 node 服务(默认在 usr/local/bin 下寻找),vscode user settings.json 中能够加一行你本身的 node 配置:

"sonarlint.pathToNodeExecutable": "xxx/bin/node",
复制代码

通常状况,SonarLint 会自动寻找 java ,找不到报错了的话,须要在 vscode user settings.json 中增长配置:

"sonarlint.ls.javaHome": "/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home",
复制代码

以上。祝你们都写出诗同样的代码。

相关文章
相关标签/搜索