SonarQube - 代码静态扫描利器

  • sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言.
  • 而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告.
  • sonar通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划- 分为5个等级;
  • sonar设置了质量门,通过设置的质量门评定此次提交分析的项目代码是否达到了规定的要求;
  • sonar可以集成pmd、findbugs、checkstyle等插件来扩展使用其他规则来检验代码质量;

系统构成

SonarQube平台主要有以下四个组件构成:

1.SonarQube服务器

一台SonarQube Server启动3个主要组成部分:

  • Web服务器,供开发人员,管理人员浏览高质量的快照并配置SonarQube实例
  • 基于Elasticsearch的Search Server从UI进行后退搜索
  • Compute Engine服务器,负责处理代码分析报告并将其保存在SonarQube数据库中
2.一个SonarQube数据库来存储

SonarQube实例的配置(安全性,插件设置等), 以及项目,视图等的质量快照。

3.多个插件

服务器上安装了多个SonarQube插件,可能包括语言,SCM,集成,身份验证和管理插件

4.一个或多个SonarQube Scanners

可以与CI服务进行集成,在构建/持续集成服务器上运行一个或多个SonarScanner以分析项目;

使用流程

1.开发人员的代码在自己的IDE和使用SonarLint运行局部分析。
2.开发人员推他们的代码到自己喜爱的供应链管理:SCM,SVN,TFVC,...
3.持续集成服务器触发自动构建和SonarQube扫描仪的运行SonarQube分析所需的执行。
4.分析报告被发送到SonarQube服务器进行处理。
5.SonarQube服务器处理和存储分析报告导致SonarQube数据库,并显示结果在UI中。
6.开发者审核,评论,挑战他们的管理,并通过SonarQube UI减少他们的技术债务问题。
7.经理收到的分析报告。 OPS使用API从SonarQube自动化配置和提取数据。 OPS使用JMX来监控SonarQube服务器。


安装极其使用

SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装、配置以及使用。

准备工作

1、jdk
2、sonarqube:http://www.sonarqube.org/downloads/
3、SonarQube+Scanner:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.5.zip
4、mysql数据库

安装

  • 1.下载好sonarqube后,解压打开bin目录,启动相应OS目录下的StartSonar。如本文演示使用的是win的64位系统,则打开D:\sonar\sonarqube-5.3\sonarqube-5.3\bin\windows-x86-64\StartSonar.bat
  • 2.启动浏览器,访问http://localhost:9000,如出现下图则表示安装成功。
    image.png

配置

1.打开mysql,新建一个数据库。
2.打开sonarqube安装目录下的D:\sonar\sonarqube-5.3\sonarqube-5.3\conf\sonar.properties文件
3.在mysql5.X节点下输入以下信息

#数据库连接地址
sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=gmsd                #数据库用户名
sonar.jdbc.password=gmsdtrade           #数据库密码
sonar.sorceEncoding=UTF-8
sonar.login=admin                    #sonarqube的登录名
sonar.password=admin                 #sonarqube的密码

4.重启sonarqube服务,再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息
5.数据库初始化成功后,登录
6.按照下图的点击顺序,进入插件安装页面

image.png

7.搜索chinese Pack,安装中文语言包
8.安装成功后,重启sonarqube服务,再次访问http://localhost:9000/,即可看到中文界面
image.png

本地使用

1.打开D:\sonar\sonar-scanner-2.5\conf\sonar-runner.properties文件
2.mysql节点下输入以下信息

sonar.jdbc.url=jdbc:mysql://172.16.30.228:3306/qjfsonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=gmsd
注意:如果测试项目与服务器不在同一台机子,则需要添加服务器的IP:
 #----- Default SonarQube server 
 sonar.host.url=http://XXX.XXX.XXX.XXX:9000[/code]

3.配置环境变量

a.新建变量,name=SONAR_RUNNER_HOME。value=D:\sonar\sonar-scanner-2.5
b.打开path,输入%SONAR_RUNNER_HOME%\bin;
c.sonar-runner -version,出现以下信息,则表示环境变量设置成功

image.png

4.打开要进行代码分析的项目根目录,新建sonar-project.properties文件
5.输入以下信息

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
 # this is the name displayed in the SonarQube UI
sonar.projectName=apiautocore
sonar.projectVersion=1.0
 
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
# If not set, SonarQube starts looking for source code from the directory containing
# the sonar-project.properties file.
sonar.sources=src
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
#其中:projectName是项目名字,sources是源文件所在的目录

6.设置成功后,启动sonarqube服务,并启动cmd
7.在cmd进入项目所在的根目录,输入命令:sonar-runner,分析成功后会出现下图

image.png

8.打开http://localhost:9000/,我们会看到主页出现了分析项目的概要图
image.png

9.我们点击项目,选择问题链接,会看到分析代码的bug,哇,好多
image.png

10.选择一个最严重的bug,看看
image.png

原来是这个地方会出现空指针异常,原因是我没有进行初始化就使用这个变量了。Over
官网学习:
http://www.sonarqube.org/
http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容