简介
Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,Sonar 可以方便地被集成到 Jenkins、Travis CI。
Sonar 免费支持 Java、JavaScript、Python、PHP、C#、XML、CSS、Android (Android lint)
特点
- 即时跟踪项目质量变化
- 复杂度分析
- 指出重复代码
- 测试和覆盖率
- 代码风格(Code Smells、Security Vulnerability、自定义规则)
- 集成所有项目(风险视图、总体质量报告)
Mac 本地 SonarQube 安装以及配置
- 下载 SonarQube,并解压到 /etc/sonarqube
- 下载 SonarQube Scanner,并解压到 /etc/sonar-scanner
- 执行 /etc/sonarqube/bin/[OS]/sonar.sh console 命令启动 SonarQube(注意要把 [OS] 替换成 /etc/sonarqube/bin/ 下存在的对应系统的文件路径。本例为:macosx-universal-64)。在浏览器中打开 http://localhost:9000,就可以访问本地的 SonarQube。
- 开始扫描代码:切换到项目路径 /your-project-name,执行 /etc/sonarqube/bin/sonar-scanner -Dsonar.projectKey=your-project-name -Dsonar.sources=.
- 代码扫描完成后,打开 http://localhost:9000,然后登陆(默认用户名: admin,密码: admin),查看扫描报告。
可能出现的问题:
如果在多语言的项目中,直接运行以上扫描命令,会出现如下错误。
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 7.572s
Final Memory: 8M/223M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources
ERROR:
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
解决方法:
需要在待运行 SonarQube 检查的项目目录下创建一个文件:sonar-project.properties,然后增加以下内容:
# Required metadata/必要字段
sonar.projectKey=sonar-runner-simple
sonar.projectName=项目名称(这个名称将在 SonarQube 中显示)
sonar.projectVersion=1.0
# 设置为当前路径
sonar.sources=.
# 设置待检查项目的语言类型
sonar.language=js
# Encoding of the source files
sonar.sourceEncoding=UTF-8
插件
Chinese Pack 插件安装
可以在对应的github上选择兼容的最新版本,通过 mvn install 安装;也可以直接在插件库搜索进行安装(奇怪的是github是最新版本,但是插件库并不是最新,但是也兼容,可以使用)。此处采用第二种(截图是已经汉化之后的效果,操作路径不变)。