Sonar简介:

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量

通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测

sonarQube能带来什么?

Developers’ Seven Deadly Sins

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检测单个任务规则的应用情况 
检测耦合

下面介绍一下安装和使用方法:

1. 下载并安装Jdk。

不做太多介绍大家可以参考:http://www.cnblogs.com/owenma/p/6139860.html

2. 下载安装Mysql。

不做太多介绍大家可以参考:http://www.cnblogs.com/owenma/p/6394477.html

3. 下载 SonarQube和Sonar scanner。

SonarQube: http://www.sonarqube.org/downloads/

Sonar scanner: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

4.数据库配置

下载好所有的安装包之后首先配置数据库: 
进入数据库命令

#mysql -u root -p
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
mysql> FLUSH PRIVILEGES;
 
 
5.安装sonar与sonar-scanner

将下载的sonarqube-6.7.zip包解压至Linux某路径如/usr/local 
将下载的sonar-scanner-cli-3.0.3.778-linux.zip包解压某路径/usr/local

配置环境变量

启动服务

/usr/local/sonarqube-6.7/bin/linux-x86-64/sonar.sh start 
目录切换至sonar的/bin/linux-x86-64/目录,启动服务 
#./sonar.sh start 启动服务 
#./sonar.sh stop 停止服务 
#./sonar.sh restart 重启服务

至此,sonar就安装好了 
访问http:\localhost:9000即可

sonar中文补丁包安装

安装中文补丁包可以通过访问http:\localhost:9000,打开sonar后,进入更新中心安装 
搜索chinese Pack,安装中文语言包 
或者下载中文补丁包后,放到SONARQUBE_HOME/extensions/plugins目录,然后重启SonarQube服务

sonar-scanner: 
/usr/local/sonar-scanner-3.0.3/bin

把以下配置加到:/etc/profile

SONAR_RUNNER_HOME=/usr/local/sonar-scanner-3.0.3 
PATH=$SONAR_RUNNER_HOME/bin:$PATH 
export SONAR_RUNNER_HOME 
export PATH

然后执行source /etc/profile

修改sonar配置文件 
编辑/conf/sonar.properties文件,配置数据库设置,默认已经提供了各类数据库的支持 
这里使用mysql,因此取消mysql模块的注释 
#vi sonar.properties

sonar.jdbc.username: sonar
sonar.jdbc.password: sonar
sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
 
 
 

修改sonar-runner的配置文件 
切换至sonar-runner的安装目录下,

修改sonar-runner.properties 
根据实际使用数据库情况取消相应注释 目前最新版好像只配一个URL。

#Configure here general information about the environment, such as SonarQube DB details for example
#No information about specific project should appear here
 
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
 
#----- Default source code encoding
#sonar.sourceEncoding=UTF-8
 
 
6.使用SonarQube Runner分析源码

预置条件 
已安装SonarQube Runner且环境变量已配置,即sonar-runner命令可在任意目录下执行 
比如:sonar-runner -v

1.在项目源码的根目录下创建sonar-project.properties配置文件 
以Java项目为例:

# must be unique in a given SonarQube instance
sonar.projectKey=yy_ybz//项目名称
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
 
sonar.projectName=ybz//项目名称
sonar.projectVersion=1.0
sonar.sources=src
sonar.java.binaries=classes
sonar.language=java
sonar.sourceEncoding=UTF-8

2.执行分析 
切换到项目源码根目录,执行命令 
# sonar-runner

分析成功后访问http:\localhost:9000即可查看分析结果.

Linux下SonarQube代码质量平台的安装和使用方法的更多相关文章

  1. Linux中 SonarQube代码质量管理平台以及C++插件安装

    SonarQube是管理代码质量一个开源平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube安装 1.环境准备 (1)sonarQube 下载地址https://www.sonarqu ...

  2. Linux中 SonarQube代码质量管理平台安装

    SonarQube是管理代码质量一个开源平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube安装 1.环境准备 (1)sonarQube 下载地址https://www.sonarqu ...

  3. SonarQube代码质量管理平台 的安装、配置与使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 准备工作: 1.jdk(不再介绍) 2.sonarqube:ht ...

  4. 持续集成篇-- SonarQube代码质量管理平台的安装

    视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221 环境:CentOS 6 ...

  5. SonarQube代码质量管理平台介绍与搭建

    前 言 1.SonarQube的介绍 SonarQube是一个管理代码质量的开放平台. 可以从七个维度检测代码质量(为什么要用SonarQube): (1) 复杂度分布(complexity):代码复 ...

  6. SonarQube代码质量管理平台比较好的搭建和使用资料

    http://www.voidcn.com/blog/lidujun1028/article/p-3831235.html   Sonar (SonarQube)是一个开源平台,用于管理源代码的质量. ...

  7. Linux下查看mysql、apache是否安装,安装,卸载等操作

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

  8. Linux下SVN服务器安装配置及客户端安装说明

    原文地址:http://wenku.baidu.com/link?url=h3dVAMx4azpOXEND5HQEE6nliE8-zc0GSQ03yv4cUs1vXMALXF64UsK7kT7kXm_ ...

  9. linux下MySQL 5.6源码安装

    linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...

随机推荐

  1. python与mongodb的交互 增删改差

    首先引入包: pip install pymongo需要用到如下对象: MongoClient对象:用于与MongoDB服务器建立连接 client=MongoClient('主机ip',端口) Da ...

  2. Spring(五):Spring&Struts2&Hibernate整合后,实现查询Employee信息

    背景: 基于之前两篇文章<Spring(三):Spring整合Hibernate>.<Spring(四):Spring整合Hibernate,之后整合Struts2>,了解了如 ...

  3. mysql中出现Unknown column 'qwe' in 'field list'的错误

    下面是我建表的代码 输入数据的代码 可以看到出现了类似Unknown column 'qwe' in 'field list'的错误 当时看了好久改了又改都没有找到错误,直道我在一次打C语言代码的过程 ...

  4. hdu1222&hdu1014 循环群的生成元

    hdu1222 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1222 题目大意: 大灰狼追小白兔.小白兔可以躲起来的洞绕成一个圈,大灰狼从0这个点出 ...

  5. JSON序列化类

    '''pyhton的dict对象可以直接序列化为JSON的{},不过很多时候 我们更喜欢用class表示对象,比如定义Student类,然后序列化''' import json class Stude ...

  6. django实现model中choices类型字段,后台自由配置

    该功能主要试用于项目中有大量需要动态配置的字典字段,字典建议做缓存处理. 定义字典类型表,字典值两张表 2.配置对应的字典值 3.重写model的init方法,动态赋值choice 4.列表界面效果 ...

  7. Python数据类型和数据操作

    python数据类型有:int,float,string,boolean类型.其中string类型是不可变变量,用string定义的变量称为不可变变量,该变量的值不能修改. 下面介绍python中的l ...

  8. XMLHTTPRequestObject获取服务器数据

    http://www.educity.cn/develop/526316.html 在Web客户端使用xmlhttp对象,可以十分方便的和服务器交换数据,我们可以获取和发送任何类型的数据,甚至二进制数 ...

  9. keil应用小贴士:Use MicroLIB是干什么的

    在keil 建立ARM的工程时,其中有一项是选 use MicroLIB 查了查,得到了以下信息: microlib 是缺省 C 库的备选库. 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使 ...

  10. (MariaDB/MySQL)之DML(1):数据插入

    本文目录: 1.insert和replace插入数据 1.1 insert into values() 1.2 insert into set 1.3 insert into select_state ...