SonarQube介绍及部署
SonarQube介绍及部署
编写人:罗旭成
编写时间:2014-5-28
SonarQube简介
SonarQube是一个用于代码质量管理的开源平台(Java开发),用于管理源代码的质量,可以从七个维度检测代码质量,通过插件形式,可以支持包括Java,C#,C/C++,PHP,PL/SQL,Cobol,Web,XML,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。
SonarQube能带来什么?
1.糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
2.重复
显然程序中包含大量复制粘贴的代码是质量低下的, SonarQube可以展示源码中重复严重程度。
3.缺乏单元测试
SonarQube可以很方便地统计并展示单元测试覆盖率。
4.没有代码标准
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
5.没有足够的或者过多的注释
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
6.潜在的bug
SonarQube可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的Bug。
7.糟糕的设计(原文Spaghetti Design,意大利面式设计)
通过SonarQube可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则,通过SonarQube可以管理第三方的Jar包,可以利用LCOM4检测单个任务规则的应用情况,检测耦合。
SonarQube部署说明
(以C#源码为例)
第一步:安装SonarQube
1. 准备好JAVA环境(Java6.0)。
2. 准备好MySQL环境(可用默认的数据库derby,配置文件全部不用做修改)。
3. 下载最新的SonarQube,(下载网址为:http://www.sonarqube.org/)解压到目录C:\app\sonarqube-4.3(当前为最新版)。
4. 修改配置文件C:\app\ sonarqube-4.3\conf\sonar.properties:
#数据库用户名 sonar.jdbc.username=root #数据库密码 sonar.jdbc.password=root #数据库地址 sonar.jdbc.url:jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true #数据库驱动 sonar.jdbc.driverClassName:com.mysql.jdbc.Driver #数据库相关配置 sonar.jdbc.maxActive=20 sonar.jdbc.maxIdle=5 sonar.jdbc.minIdle=2 sonar.jdbc.maxWait=5000 sonar.jdbc.minEvictableIdleTimeMillis=600000 sonar.jdbc.timeBetweenEvictionRunsMillis=30000
5. 执行C:\app\sonar-3.6\bin\windows-x86-64\StartSonar.bat(操作系统为windows xp),启动自带的JETTY服务器。打开http://localhost:9000,如果显示SonarQube主页,则SonarQube安装成功.
安装成功后的效果:
6. 安装中文插件和其它语言插件:将插件JAR包放到目录C:\app\ sonarqube-4.3\extensions\plugins,重启服务即安装成功。
7. 数据库会自动创建表结构(MySQL):
注:默认的配置可以不作修改,直接可连接上,连的默认数据库为derby。
第二步:安装SONAR-RUNNER
1. 下载sonar-runner,解压到目录C:\app\sonar-runner-2.4
2. 修改配置文件C:\app\sonar-runner-2.4\conf\sonar-runner.properties:
#sonar访问地址 sonar.host.url=http://localhost:9000 #连接数据库地址 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 #数据库的用户名 sonar.jdbc.username=root #数据库的密码 sonar.jdbc.password=root #sonar的字符集 sonar.sourceEncoding=zh_CN #sonar的登录用户 sonar.login=admin #sonar的登录密码 sonar.password=admin
3. 添加系统环境变量:SONAR_RUNNER_HOME 值为 C:\app\sonar-runner-2.4。
4. 修改环境变量Path,在变量值末尾添加:“;%SONAR_RUNNER_HOME%\bin”。
5. 命令行里执行 sonar-runner -h 如果显示如下内容,则安装成功。
C:\app\sonar-runner-2.4 INFO: INFO: usage: sonar-runner [options] INFO: INFO: Options: INFO: -D,--define <arg> Define property INFO: -e,--errors Produce execution error messages INFO: -h,--help Display help information INFO: -v,--version Display version information INFO: -X,--debug Produce execution debug output
第三步:分析代码
1. 拷贝代码到C:\app\project
代码目录结构如图:
2. 添加C:\app\project\sonar-project.properties 内容如下 :
#项目主键 需要唯一 sonar.projectKey=DataCollectionSolution #项目版本 sonar.projectVersion=1.0 #项目名称 sonar.projectName=C# Project #sonar的语言 sonar.language=cs sonar.dotnet.key.generation.strategy=safe sonar.sourceEncoding=UTF-8 #项目访问目录 sonar.sources=C:\\app\\project\\ sonar.fxcop.mode=skip sonar.gendarme.mode=skip sonar.gallio.mode=skip sonar.ndeps.mode=skip sonar.stylecop.mode=skip
3 命令行里执行 cd C:\app\project 到项目根目录。
然后执行命令:sonar-runner,控制台会打印分析过程。当出现SUCCESS时,则分析成功。
INFO: -------------------- INFO: EXECUTION SUCCESS INFO: -------------------- Total time: 2:37.891s Final Memory: 14M/449M INFO: --------------------
刷新网站,显示如下:
完成以上操作及配置成功。
官网:http://www.sonarqube.org/
示例:http://nemo.sonarsource.org/
文档&插件:http://docs.codehaus.org/
SonarQube介绍及部署的更多相关文章
- Redis介绍及部署在CentOS7上(一)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- ceph-csi组件源码分析(1)-组件介绍与部署yaml分析
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi组件源码分析(1)-组件介绍与部署yaml分析 基于tag v3.0.0 ht ...
- Spark入门实战系列--5.Hive(上)--Hive介绍及部署
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Hive介绍 1.1 Hive介绍 月开源的一个数据仓库框架,提供了类似于SQL语法的HQ ...
- 服务发现 - consul 的介绍、部署和使用
什么是服务发现 相关源码: spring cloud demo 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是 ...
- 服务发现之consul的介绍、部署和使用
什么是服务发现 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是我们的重点.我们看下面的一幅图片: 图中 ...
- Azkaban介绍+安装部署+实战案例
Azkaban介绍 什么是azkaban?1.工作流的作业调度系统2.通过k.v指令写法描述工作流节点3.可以通过web界面去管理工作流 Azkaban安装部署 2.3.1 准备工作 Azkaban ...
- 服务发现 - consul 的介绍、部署和使用(转)
什么是服务发现 相关源码: spring cloud demo 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是 ...
- Python多版本管理器-pyenv 介绍及部署记录
一. pyenv简单介绍 在日常运维中, 经常遇到这样的情况: 系统自带的Python是2.x,而业务部署需要Python 3.x 环境, 此时需要在系统中安装多个Python版本,但又不能影响系统自 ...
- Apache Ignite 学习笔记(一): Ignite介绍、部署安装和REST/SQL客户端使用
Apache Ignite 介绍 Ignite是什么呢?先引用一段官网关于Ignite的描述: Ignite is memory-centric distributed database, cachi ...
随机推荐
- Linux(5)- MariaDB、mysql主从复制、初识redis
一.MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL ...
- git 的 pull、fetch、merge
1.pull = fetch + merge In the simplest terms, git pull does a git fetch followed by a git merge. You ...
- 【云安全与同态加密_调研分析(3)】国内云安全组织及标准——By Me
◆3. 国内云安全组织及标准◆ ◆云安全标准机构(主要的)◆ ◆标准机构介绍◆ ◆相关标准制定◆ ◆建立的相关模型参考◆ ◆备注(其他参考信息)◆ ★中国通信标准化协会(CCSA) ●组织简介:200 ...
- 前端 html body 内标签之input
可以做登录页面 text是文本输入框 <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- php微信支付回调验证
//字典排序拼接字符串 function getWxPaySignature($arr){ ksort($arr); $str = ''; foreach ($arr as $k=>$a){ $ ...
- 百度NLP一面
C++ : 1.拷贝构造函数和重载=符分别在什么情况下被调用,实现有什么区别 2.虚函数的目的,虚函数和模板类的区别,如何找到虚函数 常规算法: 1. 如何输出一个集合的所有真子集,递归和非递 ...
- iOS学习之flappyBird游戏的实现
导言 在本人还是学生的时候,flappyBird这款游戏非常火爆,最后等到Android版的出来之后,也是很痴迷的玩了一把.可是,本人游戏天赋一直平平,几度玩得想摔手机.本文主要介绍如何开发iOS平台 ...
- webService 总结
Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...
- 2017 Multi-University Training Contest - Team 3 hdu6060 RXD and dividing
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6060 题目: RXD and dividing Time Limit: 6000/3000 M ...
- [转]Raanan Fattal - Image and Video Upscaling from Local Self-Examples 图像放大
转自:http://www.sigvc.org/bbs/thread-1032-1-1.html 论文链接:http://www.cs.huji.ac.il/~raananf/projects/lss ...