众所周知,SonarQube 是一款优秀的代码质量保障工具,但不少厂里对它的使用,停留在代码提交以后的代码仓库质量横向对比、纵向趋势分析方面,做为一个普通的搬砖工,为了提升本身的搬砖质量,咱们更应该关注的一个点是:代码提交以前,SonarQube 能帮咱们作些什么?java
vscode 插件库里搜索 sonar ,能够看到排名第一的是:SonarLint ,只要你的开发环境中安装着 jdk 8/11 和 node10+ ,这个插件几乎是开箱即用的,咱们能够在 problems 面板中看到来自 sonarlint 的严谨提醒:node
SonarLint 默认的规则集在 vscode 左侧面板中能够看到:docker
咱们能够根据需求定制规则,激活或者挂起某项规则。json
然而现实中,做为搬砖前线的一份子,咱们并不是单打独斗,团队每一个人,都得遵循共同的编码规则,这时候,SonarQube 就出场了。markdown
做为一个本地代码规范警告服务,咱们不须要 SonarQube 使用那些花里胡哨的图标和文字展现什么问题数据,而只须要 SonarQube 服务为咱们的团队提供一个远程的、公共的规则集,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 服务。根据 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 里了,接下来还得配置一些项目信息。
登陆,用户名密码都是 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",
复制代码
以上。祝你们都写出诗同样的代码。