SonarQube最全使用教程

Posted handsomeshao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SonarQube最全使用教程相关的知识,希望对你有一定的参考价值。

Sonar简介

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测

  1. 糟糕的复杂度分布

    文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试

  2. 重复

    显然程序中包含大量复制粘贴的代码是质量低下的 , sonar可以展示源码中重复严重的地方

  3. 缺乏单元测试

    sonar可以很方便地统计并展示单元测试覆盖率

  4. 没有代码标准

    sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写

  5. 没有足够的或者过多的注释

    没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷

  6. 潜在的bug

    sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug

  7. 糟糕的设计(原文Spaghetti Design,意大利面式设计)

    通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则;
    通过sonar可以管理第三方的jar包可以利用LCOM4检测单个任务规则的应用情况 ,检测耦合

Sonar 组成

Sonar 集成过程

  1. 开发人员在他们的ide中使用SonarLint运行分析本地代码。
  2. 开发人员将他们的代码提交到代码管理平台中(SVN,GIT等)
  3. 持续集成工具自动触发构建,调用SonarScanner对项目代码进行扫描分析
  4. 分析报告发送到SonarQube Server中进行加工
  5. SonarQube Server 加工并且保存分析报告到SonarQube Database中,通过UI显示分析报告

centos安装sonarqube7.7

1、准备

SonarQube版本:sonarqube-7.7.0.zip,官网地址:https://www.sonarqube.org/downloads/

jdk版本:jdk-1.8.0_linux-x64_bin.tar.gz(注:sonarqube从7.9起,不再支持jdk11以下版本)

数据库:mysql5.6-5.7(sonarqube从7.8起,不再支持mysql)(功能验证也可以SonarQube内置的数据库,这样就不需要改数据库配置

2、安装jdk1.8

详见:linux安装jdk8

3、解压SonarQube
yum install -y zip unzip                    // 安装解压工具
unzip /home/data/soft/sonarqube/sonarqube-7.7.zip
4、修改 /home/data/soft/sonarqube/sonarqube-7.7/conf/sonar.properties 文件,更改数据连接配置
sonar.jdbc.url=jdbc:mysql://192.168.1.165:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=root
5、创建SonarQube启动用户(SonarQube内置了elasticsearch,elasticsearch不允许使用root用户启动)
useradd sonar
passwd sonar
7、设置系统参数(elasticsearch启动需要设置一些参数)

详细见:elasticsearch启动常见错误

未设置这些参数在$SONARQUBE_HOME/logs/es.log中出现以下错误:

8、赋予启动用户执行权限
chown -R sonar:sonar /home/data/soft/sonarqube/sonarqube-7.7
9、登陆启动用户,启动程序
su - sonar                                            // 以sonarqube用户登陆
cd /usr/local/sonarqube-7.9.1/bin/linux-x86-64   // 进入启动命令目录
./sonar.sh start                                  // 启动程序
10、登陆http://192.168.1.224:9000访问,默认用户名/密码为:admin/admin
11、安装中文语言包

登录后, 打开 Administration → Marketplace, 搜索 chinese pack, 点击 install

会提示重启系统, 选择 Restart

注:如何 Intall 出错可以直接去官网下载jar包。上传到到服务器 /home/data/soft/sonarqube/sonarqube-7.7/extensions/downloads 目录下,并重启sonarqube服务即可。

12、常用命令:
service sonar start     // 启动服务
service sonar stop      // 关闭服务
service sonar restart   // 重启服务

chkconfig sonar on      // 设置开机启动
chkconfig sonar off     // 关闭开机启动

Jenkins中使用sonar扫描java项目

安装sonar插件


由于安装插件需要翻墙,有可能无法安装成功,这里提供插件sonar.hpi,选择离线上传同样可以安装。
sonar.hpi:链接: https://pan.baidu.com/s/11L_uon8gakmZHoc_xTI1gQ 提取码: g9pw

sonar插件配置

系统设置

全局配置

在原项目上增加Excute Sonarqube Scanner
Scanner Analysis properties
sonar.projectKey=$JOB_NAME
sonar.projectName=$JOB_NAME
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.login=admin
sonar.password=admin
sonar.java.binaries=$WORKSPACE/iot-network/iot-netty-route/target/classes/ 
构建成功

IDEA中使用插件sonarlint连接到SonarQube对代码质量进行管控

sonarLint插件安装

File–Setting-Plugin 输入SonarLint搜索插件

配置插件

1、配置Token

打开本地SonarQube管理后台,输入账户密码,默认admin/admin

创建项目

在上面画圈的任意一处,点击新建项目

创建令牌

获得令牌

分析你的项目–选择Maven

插件安装成功以后,打开插件配置界面,路径:File–Tools

打开SonarLint General Settings,按照下图输入

把上一步的token输入(写博客截图,忘记保存了token,下面是错误的)

2、绑定到当前项目

打开SonarLint Project Settings

connection选择刚刚的配置“sonarqube”,选择我们刚刚创建的项目

项目全局分析

Terminal中执行

mvn sonar:sonar \\
  -Dsonar.projectKey=test-project \\
  -Dsonar.host.url=http://192.168.1.224:9000 \\
  -Dsonar.login=78e2f0ea396d9cd941d77a3f14429a566c951a34

登录SonarQube管理后台 http://192.168.1.224:9000后台效果,查看质检效果

参考文献:SonarQube的使用入门

SonarQube使用介绍

CentOS安装SonarQube

SonarQube使用教程

SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装、配置以及使用。
 
一、安装篇
1.下载好sonarqube后,解压打开bin目录,启动相应OS目录下的StartSonar。如本文演示使用的是win的64位系统,则打开D:sonarsonarqube-5.3sonarqube-5.3inwindows-x86-64StartSonar.bat
 
2.启动浏览器,访问http://localhost:9000,如出现下图则表示安装成功。
技术分享图片
 
二、配置篇
1.打开mysql,新建一个数据库。
2.打开sonarqube安装目录下的D:sonarsonarqube-5.3sonarqube-5.3confsonar.properties文件
3.在mysql5.X节点下输入以下信息
sonar.jdbc.url=jdbc:mysql://192.168.10.10:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance sonar.jdbc.username=dev sonar.jdbc.password=123456 sonar.sorceEncoding=UTF-8 sonar.login=admin sonar.password=admin
 
其中:url是数据库连接地址,username是数据库用户名,jdbc.password是数据库密码,login是sonarqube的登录名,sonar.password是sonarqube的密码
4.重启sonarqube服务,再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息,重启时候有可能一直卡在那里,重启服务不生效,这时候可以重启电脑,然后再次访问http://localhost:9000,会发现配置生效。
5.数据库初始化成功后,登录
6.按照下图的点击顺序,进入插件安装页面,搜索框搜索chinese,选择中文包,安装中文插件,安装之后,会自动提醒重启服务,点击重启,重启完之后,刷新,就看到中文版的页面
技术分享图片
 
7.在Maven的settings.xml设置sonar信息
其中<sonar.host.url>http://localhost:9000</sonar.host.url>指明了sonar服务器的地址。所以在执行maven命令的时候,<sonar.host.url>指明的服务器必须已运行起来。
 
${MAVEN_HOME}/conf/settings.xml:
<profiles>
    <profile>
<id>sonar</id>
        <properties>
            <sonar.jdbc.url>jdbc:mysql://192.168.10.10:3306/sonar</sonar.jdbc.url>
            <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
            <sonar.jdbc.username>dev</sonar.jdbc.username>
            <sonar.jdbc.password>123456</sonar.jdbc.password>
            <sonar.host.url>http://localhost:9000</sonar.host.url> <!-- Sonar服务器访问地址 -->
        </properties>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>sonar</activeProfile>
</activeProfiles>
 
三、执行篇
1.执行mvn sonar:sonar命令进行代码分析。
我们可以在Eclipse中,对一个标准maven工程执行sonar。说明:由于maven对sonar有很好的支持,会自动执行相应的脚本,所以无需在pom中添加sonar说明。
在执行maven进行sonar分析之前,必须确保sonar服务器已经处于运行状态。本例中sonar服务器运行在localhost:9000上。
 
首先,执行sonar:sonar命令,最后得到输出如下输出。如果输出”BUILD SUCCESS“说明已经构建成功。
技术分享图片
查看分析结果
对于使用sonar自带服务器来说,在浏览器访问:http://sonar_ip:9000,打开sonar结果页面。可使用admin/admin账号登录进入,可以查看到相关信息
技术分享图片
 
三、升级篇
1)sonar和scanner配合使用
1.sonar和scanner配合使用,测试人员不用安装java开发环境即可完成代码的分析,scanner下载地址:https://akamai.bintray.com/5c/5cc23ee0cb8e8b09793eef05cfb1b091ee05265e275a89846e476e630e087e05?__gda__=exp=1533549597~hmac=3e1003b56de521e52548dc07ab349a98381a4fc114080fe39b86bb6f7c91edde&response-content-disposition=attachment%3Bfilename%3D%22sonar-scanner-cli-3.2.0.1227-windows.zip%22&response-content-type=application%2Fzip&requestInfo=U2FsdGVkX18KaX8hf3WAMXb08UHk93sEBM5q05tIJwXpQQFDfBsdsVeOkfV6L4llrn1fUs_wj3CTm597aERFIpQzXUVWk-e1gmCsHt1tdpBxK_-FJv7j2AZ9ANdC4TAX3odWRyym4bBYtcT1NhiDY65anr46174ohQisBwi5mH4yc_BiCSsNY0kja1pM2wPZqhEtKu5eWeBN7iKJk-FwFF5HsY4E9XLmZ4KlQhEzd0E&response-X-Checksum-Sha1=4e5de3df905ab76a8a98d859a9879b214f1d8b09&response-X-Checksum-Sha2=5cc23ee0cb8e8b09793eef05cfb1b091ee05265e275a89846e476e630e087e05
 
2.解压,放到和sonarqube并列路径下,修改配置文件:
技术分享图片
 
技术分享图片
配置文件示例:
sonar.jdbc.url=jdbc:mysql://192.168.10.10:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=dev
sonar.jdbc.password=123456
 
3.配置系统变量:增加变量SONAR_SCANNER_HOME,然后在path中增加变量值,完成系统变量的配置
技术分享图片
 
技术分享图片
4.测试变量是否成功,打开cmd,输入sonar-scanner -version,显示如下内容,表示配置成功
技术分享图片
5.新增一个文件sonar-project.properties,配置内容如下
# must be unique in a given SonarQube instance
sonar.projectKey=CRM
# this is the name displayed in the SonarQube UI
sonar.projectName=CRM
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=.
sonar.language=java
sonar.java.binaries=./target/classes
 
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
 
其中projectkey和projectName根据项目进行修改。
6.把建立好的文件放到项目根目录下
技术分享图片
然后在该目录下打开命令运行窗口,执行sonar-scanner命令,分析成功之后,会显示如下内容:
技术分享图片
7.打开sonar项目,则可以查看到刚刚分析的项目
技术分享图片
 
2)jenkins集成sonar
1.在jenkins安装scanner插件:SonarQube Scanner for Jenkins
2.安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息
技术分享图片
3.执行代码分析,新增一个构建步骤,选择Execute SonarQube Scanner,选择你的jdk版本,若没有,请在全局工具配置中配置好jdk位置。再选择好sonarqube scanner的版本。
之后,在Analysis properties处,输入sonar的检查参数
技术分享图片
完成配置。

以上是关于SonarQube最全使用教程的主要内容,如果未能解决你的问题,请参考以下文章

Maven 最全教程,看了必懂

Maven最全教程,看了必懂

Maven 最全教程,看了必懂,99% 的人都收藏了!

重量级!Maven史上最全教程,看了必懂

Maven 最全教程,看了必懂,99% 的人都收藏了。。

windows下代码规范检测工具sonarqube安装与使用,含与maven的结合