设为首页 收藏本站
查看: 1317|回复: 0

[经验分享] SonarQube介绍及部署

[复制链接]
发表于 2017-3-1 08:04:50 | 显示全部楼层 |阅读模式

SonarQube介绍及部署


编写人:罗旭成

编写时间:2014-5-28


SonarQube简介

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

SonarQube能带来什么?


1.糟糕的复杂度分布

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

DSC0000.jpg


2.重复

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

DSC0001.jpg


3.缺乏单元测试

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

DSC0002.jpg


4.没有代码标准

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


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

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


6.潜在的bug

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

DSC0003.jpg


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安装成功.

DSC0004.jpg

安装成功后的效果:

DSC0005.jpg

6. 安装中文插件和其它语言插件:将插件JAR包放到目录C:\app\ sonarqube-4.3\extensions\plugins,重启服务即安装成功。

    DSC0006.jpg

7. 数据库会自动创建表结构(MySQL):

DSC0007.jpg

注:默认的配置可以不作修改,直接可连接上,连的默认数据库为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
DSC0008.jpg


第三步:分析代码

1. 拷贝代码到C:\app\project

代码目录结构如图:

DSC0009.jpg

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: --------------------
刷新网站,显示如下:

DSC00010.jpg

完成以上操作及配置成功。



官网:http://www.sonarqube.org/

示例:http://nemo.sonarsource.org/

文档&插件:http://docs.codehaus.org/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348531-1-1.html 上篇帖子: 发布或重启线上服务时抖动问题解决方案 下篇帖子: Mesos 入门教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表