衆所周知,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",
複製代碼
以上。祝你們都寫出詩同樣的代碼。