小有鹿的清新小短句有没有人理我

中国领先的IT技术网站
51CTO旗下网站
程序员必备!Sonar代码质量管理工具
Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。
作者:佚名来源:开源中国| 14:18
Sonar 概述
Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。
与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar
并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web
页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
Sonar 安装
到下载最新的发行版,下载zip包后解压到没有中文名的目录下,默认集成了jetty容器,可以直接启动提供服务,也可以通过脚本构建为war包,部署在tomcat容器中。
bin目录下选择相应平台,脚本启用。(Windows点击StartSonar.bat)
然后在浏览器中访问:http://localhost:9000/
Sonar 添加插件
插件添加方式:
插件的下载地址为:,将下载后的插件上传到${SONAR_HOME}extensions\plugins目录下,重新启动sonar。
在Sonar控制面板也可以添加插件
Sonar默认集成了Java Ecosystem插件,该插件是一组插件的合集
Java [sonar-java-plugin]:java源代码解析,计算指标等
Squid [sonar-squid-java-plugin]:检查违反Sonar定义规则的代码
Checkstyle [sonar-checkstyle-plugin]:使用CheckStyle检查违反统一代码编写风格的代码
FindBugs [sonar-findbugs-plugin]:使用FindBugs检查违反规则的缺陷代码
PMD [sonar-pmd-plugin]:使用pmd检查违反规则的代码
Surefire [sonar-surefire-plugin]:使用Surefire执行单元测试
Cobertura [sonar-cobertura-plugin]:使用Cobertura获取代码覆盖率
JaCoCo [sonar-jacoco-plugin]:使用JaCOCO获取代码覆盖率
Sonar 集成项目
提供Maven项目的集成,其他结构的项目暂不清楚。
进入项目根目录下,先编译安装,然后利用maven集成的sonar插件发布。
mvn clean install
mvn sonar:sonar
Maven 插件会自动把所需数据(如单元测试结果、静态检测结果等)上传到 Sonar 服务器上,需要说明的是,关于 Sonar 的配置并不在每个工程的 pom.xml 文件里,而是在 Maven 的配置文件 settings.xml 文件里,具体配置如下:
&&&&&&&&&&&&&&sonar&&&&&&&&&&&&&&&&&&&&&&true&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&http://localhost:9000/&&&&&&&&&&&&&&&&&
集成发布成功:
Sonar 数据库
Sonar默认使用h2文本数据库,数据库连接的配置在
conf目录下的
sonar.properties文件
或者在项目发布时通过maven配置参数覆盖
Sonar 汉化
把下载的压缩包放到sanar安装目录下的/extensions/plugins 中&
重启Sonar server&
Sonar 为代码的质量管理提供了一个平台,对传统的代码静态检测如 PMD、FindBugs 等工具进行整合,可以说是目前最强大的代码质量管理工具之一。
原文链接:【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条头条外电
24H热文一周话题本月最赞
讲师:1人学习过
讲师:35人学习过
讲师:0人学习过
精选博文论坛热帖下载排行
本书重点讲解如何用实用的代码来解决具体的实际问题。本书的内容覆盖面很广,从新的C#范型到Web服务,从反射到安全等都有涉及。系统地介绍...
订阅51CTO邮刊常见问题<span style="color:#:
使用字符索引&:&String.indexOf(char)&is&faster&than&String.indexOf(String).
代码举例:&if(splitArray[i].indexOf(&}&)!=-1)
修改建议:&if(splitArray[i].indexOf('}')!=-1)
常见问题<span style="color:#:
在进行比较时,字符串文本应该放在左边&:&Move&the&&0&&string&literal&on&the&left&side&of&this&string&comparison.
代码举例:&&if(enNameArray[1].equals(&0&)){&
&&&&&&&&&&&&enName&=&enNameArray[2];
&&&&&&&&&&&&}
修改建议:&if(&0&.equals(enNameArray[1])){&.......
常见问题<span style="color:#:
应该使用Collection.isEmpty()判断空集合&:&Use&isEmpty()&to&check&whether&the&collection&is&empty&or&not.
代码举例:&&if(names.size()&==&0){&
&&&&&&&&&&&&.........
&&&&&&&&&&&&}
修改建议:&if(names.isEmpty()){&.......
常见问题<span style="color:#:
返回之前不用的本地变量&:&Consider&simply&returning&the&value&vs&storing&it&in&local&variable&'flightLineQueryForm'.
代码举例:
修改建议:&
常见问题<span style="color:#:
整型实例&:&Avoid&instantiating&Integer&objects.&Call&Integer.valueOf()&instead.代码举例:&properties.put(&CCSID&,&new&Integer(req.getQueueCCSID()));&&
修改建议:&properties.put(&CCSID&,&Integer.valueOf(req.getQueueCCSID()));
修改分析:JDK1.5后增加了Integer.valueOf.&因此<span style="color:#.5前不能用.从源代码可以知道,ValueOf对-128~<span style="color:#7这<span style="color:#6个&#20540;做了缓存(IntegerCache),如果int&#20540;的范围是:-128~<span style="color:#7,在ValueOf(int)时,会直接返回IntegerCache的缓存。
常见问题<span style="color:#:
低效的StringBuffer&:&Avoid&concatenating&nonliterals&in&a&StringBuffer&constructor&or&append().
代码举例:&retStr.append(&PNR:&&#43;locatorID);&
修改建议:&retStr.append(&PNR&);
&&&&&&&&&&&retStr.append(locatorID);
常见问题<span style="color:#:
精确初始化&:&Variable&'bEnvInited'&explicitly&initialized&to&'false'&(default&value&for&its&type).
代码举例:&private&static&boolean&bEnvInited&=&false;
修改建议:&private&static&boolean&bEnvInited;
常见问题<span style="color:#:
精确初始化&:&应该合并可折叠的&if&语句&:&Merge&this&if&statement&with&the&enclosing&one.
代码举例:&
修改建议:
常见问题<span style="color:#:
方法名需要遵守命名规则&:&Rename&this&method&name&to&match&the&regular&expression&'^[a-z][a-zA-Z0-9]*$'.
代码举例:&private&boolean&ISpasstype(String&type)&{......
修改建议:&private&boolean&iSpasstype(String&type)&{......
常见问题<span style="color:#:
避免在循环体中声明创建对象.
代码举例:&
修改建议:&
常见问题<span style="color:#:
常量名应该遵守命名规则&:&Rename&this&constant&name&to&match&the&regular&expression&'^[A-Z][A-Z0-9]*(_[A-Z0-9]&#43;)*$'.
代码举例:&protected&static&final&String&HomophoneRule=&Homophone&;
修改建议:&protected&static&final&String&HOMOPHONE_RULE=&Homophone&;
常见问题<span style="color:#:
安全&-&直接保存数组&:&The&user-supplied&array&'destCityArray'&is&stored&directly.代码举例:&
修改建议:
常见问题<span style="color:#:
类变量不应该有公开访问权限&:&Make&this&class&field&a&static&final&constant&or&non-public&and&provide&accessors&if&needed.
代码举例:&
public&static&Timestamp&foreverLong&=&SimpleDate.MaxDate().getTimestamp();&
修改建议:&
private&static&Timestamp&foreverLong&=&SimpleDate.MaxDate().getTimestamp();&
本文介绍的主要是自己在用SONAAR修改JAVA代码中经常遇到的代码质量问题,自己总结了了一些修改方法,在此给大家分享一下。由于写作水平和能力有限,文中如有不妥的地方或者有更好的建议,欢迎联系我。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6894次
排名:千里之外
原创:47篇
(13)(3)(5)(6)(10)(2)(7)(4)(1)SonarQube代码质量管理平台安装与使用
- zzm - ITeye技术网站
博客分类:
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测sonarQube能带来什么? Developers' Seven Deadly Sins 1.糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,
且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
显然程序中包含大量复制粘贴的代码是质量低下的
sonar可以展示源码中重复严重的地方
3.缺乏单元测试
sonar可以很方便地统计并展示单元测试覆盖率
4.没有代码标准
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 5.没有足够的或者过多的注释
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降
而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷 6.潜在的bug
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug
7.糟糕的设计(原文Spaghetti Design,意大利面式设计)
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系
可以检测自定义的架构规则
通过sonar可以管理第三方的jar包
可以利用LCOM4检测单个任务规则的应用情况
检测耦合 关于Spaghetti Design:http://docs.codehaus.org/display/SONAR/Spaghetti+Design
通过sonar可以有效检测以上在程序开发过程中的七大问题
SonarQube安装 预置条件 1.已安装JAVA环境 2.已安装有数据库 软件下载地址:http://www.sonarqube.org/downloads/ 下载SonarQube与SonarQube Runner 中文补丁包下载:http://docs.codehaus.org/display/SONAR/Chinese+Pack 1.数据库配置 进入数据库命令 #mysql -u root -p mysql& CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_
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; 2.安装sonar与sonar-runner 将下载的sonar-3.7.zip包解压至Linux某路径如/usr/local 将下载的sonar-runner-dist-2.3.zip包解压某路径/usr/local 添加SONAR_HOME、SONAR_RUNNER_HOME环境变量,并将SONAR_RUNNER_HOME加入PATH
修改sonar配置文件 编辑&install_directory&/conf/sonar.properties文件,配置数据库设置,默认已经提供了各类数据库的支持 这里使用mysql,因此取消mysql模块的注释 #vi sonar.properties
sonar.jdbc.username:
sonar.jdbc.password:
sonar.jdbc.url:
jdbc:mysql:
# Optional properties
sonar.jdbc.driverClassName:
com.mysql.jdbc.Driver
修改sonar-runner的配置文件 切换至sonar-runner的安装目录下,修改sonar-runner.properties 根据实际使用数据库情况取消相应注释
#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:
#----- PostgreSQL
#sonar.jdbc.url=jdbc:postgresql:
#----- MySQL
sonar.jdbc.url=jdbc:mysql:
#----- Oracle
#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
#----- Microsoft SQLServer
#sonar.jdbc.url=jdbc:jtds:sqlserver:
#----- Global database settings
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
#----- Security (when 'sonar.forceAuthentication' is set to 'true')
sonar.login=admin
sonar.password=admin
3.添加数据库驱动 除了Oracle数据库外,其它数据库驱动都默认已经提供了,且这些已添加的驱动是sonar唯一支持的,因此不需要修改 如果是Oracle数据库,需要复制JDBC驱动至&install_directory&/extensions/jdbc-driver/oracle目录
4.启动服务 目录切换至sonar的&install_directory&/bin/linux-x86-64/目录,启动服务 #./sonar.sh start
启动服务 #./sonar.sh stop
停止服务 #./sonar.sh restart 重启服务 至此,sonar就安装好了 访问http:\\localhost:9000即可
5.sonar中文补丁包安装 中文包安装 安装中文补丁包可以通过访问http:\\localhost:9000,打开sonar后,进入更新中心安装 或者下载中文补丁包后,放到SONARQUBE_HOME/extensions/plugins目录,然后重启SonarQube服务
sonar作为Linux服务并开机自启动 新建文件/etc/init.d/sonar,输入如下内容:
# rc file for SonarQube
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*
SonarQube开机自启动(Ubuntu, 32位):
sudo ln -s $SONAR_HOME/bin/linux-x86-32/sonar.sh /usr/bin/sonar sudo chmod 755 /etc/init.d/sonar sudo update-rc.d sonar defaults
SonarQube开机自启动(RedHat, CentOS, 64位):
sudo ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonar sudo chmod 755 /etc/init.d/sonar sudo chkconfig --add sonar
使用SonarQube Runner分析源码
预置条件 已安装SonarQube Runner且环境变量已配置,即sonar-runner命令可在任意目录下执行 1.在项目源码的根目录下创建sonar-project.properties配置文件 以项目为例:
sonar.projectKey=android-sonarqube-runner
sonar.projectName=Simple Android project analyzed with the SonarQube Runner
sonar.projectVersion=1.0
sonar.sources=src
sonar.binaries=bin/classes
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.profile=Android Lint
注:要使用Android Lint 规则分析需要先访问http:\\localhost:9000更新中心添加Android Lint插件,使其可以分析Android Lint规则 2.执行分析 切换到项目源码根目录,执行命令 # sonar-runner 分析成功后访问http:\\localhost:9000即可查看分析结果 不同参数的意思: http://docs.codehaus.org/display/SONAR/Analysis+Parameters 不同项目的源码分析示例下载: /SonarSource/sonar-examples/zipball/master
最后,当然了,得与IDE相关联,才能更方便地实时查看
以Eclipse为例,请见:http://docs.sonarqube.org/display/SONAR/SonarQube+in+Eclipse 附:
sonarQube官网地址:http://www.sonarqube.org/ sonarQube官方文档地址:http://docs.codehaus.org/display/SONAR/Documentation sonarQube示例地址:http://nemo.sonarqube.org/
网上另两篇相关的文章:/gao241/p/3190701.html
/open-source/1307345.html
http://blog.csdn.net/hunterno4/article/details/
浏览: 946369 次
来自: 南京
解压出来文件不能直接覆盖\indexer\central-ct ...
米扑代理官网: / ...
总结的比较全面,这里也推荐下米扑代理的总结,非常全面:高匿、匿 ...sonar的安装与代码质量检测实例 - 推酷
sonar的安装与代码质量检测实例
说明:sonar依赖数据库.
1、笔者使用的是mysql数据库.首先对mysql做简单的优化配置.
[root@localhost bin]# cat /etc/my.cnf
max_allowed_packet=10M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 修改默认的编码为utf8
default-character-set=utf8
# 修改默认的存储引擎为InnoDB
default-storage-engine=InnoDB
# 这个参数主要作用是缓存innodb表的索引,数据,插入数据时的缓冲
innodb_buffer_pool_size = 256M
# 配置查询缓存的大小
query_cache_size=128M
# 启动mysql高速缓存
query_cache_type=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
2、重启mysql服务
[root@localhost bin]# service mysqld restart
Stopping mysqld:
Starting mysqld:
sonar安装和部署
1、sonar部署
[root@localhost local]# pwd
/usr/local
[root@localhost local]# unzip sonarqube-4.5.4.zip
修改sonar配置文件
[root@localhost conf]# pwd
/usr/local/sonarqube-4.5.4/conf
[root@localhost conf]# vim sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.web.javaOpts=-Xmx768m -XX:MaxPermSize=160m -XX:+HeapDumpOnOutOfMemoryError
sonar.web.host=0.0.0.0
sonar.web.port=9000
创建sonar数据库依赖
create database sonar default character set utf8;
2、利用nginx反响代理
upstream配置
upstream tomcat_tools.sonar.local {
server 127.0.0.1:9000
weight=10 max_fails=2 fail_timeout=300s;
server_name
/usr/local/sonarqube-4.5.4/web/;
access_log
/usr/local/sonarqube-4.5.4/logs/tools._access.
/usr/local/sonarqube-4.5.4/logs/tools._error.
error_page
403 404 /40x.
location / {
index index.html index.
proxy_next_upstream
http_500 http_502 http_503 http_504 error timeout invalid_
proxy_set_header Host
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
proxy_pass
http://tomcat_tools.sonar.
增减配置完成后,重启nginx
[root@localhost domains]# service nginx restart
3、修改防火墙开放9000端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
4、启动sonar
[root@localhost linux-x86-64]# pwd
/usr/local/sonarqube-4.5.4/bin/linux-x86-64
[root@localhost linux-x86-64]# ls
[root@localhost linux-x86-64]# ./sonar.sh start
Starting SonarQube...
Started SonarQube.
5、访问tools.
6、登录sonar[默认账号admin/admin]安装汉化包
Settings/SYSTEM/Update Center/Available Plugins
选择汉化包,汉化完成之后需要重新启动.
项目代码提交sonar检测代码质量
1、在maven本地仓库的settings.xml中 &profiles&节点之间增加如下内容
&profiles&
&id&sonar&/id&
&activation&
&activeByDefault&true&/activeByDefault&
&/activation&
&properties&
&sonar.jdbc.url&
jdbc:mysql://192.168.147.129:3306/sonar?useUnicode=true&characterEncoding=utf8
&/sonar.jdbc.url&
&sonar.jdbc.driver&com.mysql.jdbc.Driver&/sonar.jdbc.driver&
&sonar.jdbc.username&root&/sonar.jdbc.username&
&sonar.jdbc.password&123456&/sonar.jdbc.password&
&sonar.host.url&http://tools.&/sonar.host.url&
&/properties&
&/profile&
&/profiles&
或者直接在应用项目的总pom中增加如上内容.区别是前者为所有项目增加,后者只是针对单个项目配置.
2、创建mvn命令
3、执行命令,查看sonar控制面板的项目如图,为刚才的项目接入到sonar检测上的情况.点击查看该代码的质量情况.转载请注明出处:[]
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 带有晴字的小清新网名 的文章

 

随机推荐