SonarQube

简介

Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,Sonar 可以方便地被集成到 Jenkins、Travis CI。

Sonar 免费支持 Java、JavaScript、Python、PHP、C#、XML、CSS、Android (Android lint)

特点

  • 即时跟踪项目质量变化
  • 复杂度分析
  • 指出重复代码
  • 测试和覆盖率
  • 代码风格(Code Smells、Security Vulnerability、自定义规则)
  • 集成所有项目(风险视图、总体质量报告)

Mac 本地 SonarQube 安装以及配置

参考:Get Started in Two Minutes

  1. 下载 SonarQube,并解压到 /etc/sonarqube
  2. 下载 SonarQube Scanner,并解压到 /etc/sonar-scanner
  3. 执行 /etc/sonarqube/bin/[OS]/sonar.sh console 命令启动 SonarQube(注意要把 [OS] 替换成 /etc/sonarqube/bin/ 下存在的对应系统的文件路径。本例为:macosx-universal-64)。在浏览器中打开 http://localhost:9000,就可以访问本地的 SonarQube
  4. 开始扫描代码:切换到项目路径 /your-project-name,执行 /etc/sonarqube/bin/sonar-scanner -Dsonar.projectKey=your-project-name -Dsonar.sources=.
  5. 代码扫描完成后,打开 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是最新版本,但是插件库并不是最新,但是也兼容,可以使用)。此处采用第二种(截图是已经汉化之后的效果,操作路径不变)。

SonarQube_第1张图片

你可能感兴趣的:(SonarQube)