先在本地用 Docker 跑个 Sonar

1
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest

进入 http://localhost:9000 , 一开始打不开,原因是开了nginx,关掉就好了

默认的登录账号/密码是 admin/admin

创建一个新项目

选择 JavaScript 语言,生成 token(需要保存下来),然后运行:

1
2
3
4
5
6
sonar-scanner \
-Dsonar.projectKey=[刚才创建的项目名称] \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=[刚才生成的token] \
-Dsonar.javascript.file.suffixes=.js,.jsx

需要安装 sonar-scanner,Mac 上的话可以用 homebrew 安装:

1
brew install sonar-scanner

之后就可以看到自动生成的报告了。

ESLint

Sonar 文档里提到通过插件的方式引入自定义 rules 的方式已经被放弃了,所以需要自己在项目中配置完 ESLint 并生成一份报告,再传给 Sonar

配置完后运行:

1
eslint -f json -o report.json .

然后进入 Sonar 的UI界面,进入 Project Setting -> General Settings -> External Analyzers,找到 JavaScript 下的 ESLint Report Files,填写 report.json

再次运行 sonar-scanner 的时候就会带上 ESLint 的报告了。