ITKeyword,专注技术干货聚合推荐

注册 | 登录

SonarQube

liuyuehu 分享于 2016-06-16

推荐:部署多个Tomact到服务器上

部署多个Tomact到服务器上 (1)修改http访问端口(默认为8080端口) <Connectorport="8080"maxHttpHeaderSize="8192"maxThreads="150"minSpareThreads="25"maxSpa

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

SonarQube带来什么?

2.1.1.糟糕的复杂度分布
  文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,

  且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试

2.1.2.重复
  显然程序中包含大量复制粘贴的代码是质量低下的

  sonar可以展示源码中重复严重的地方


2.1.3.缺乏单元测试

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


2.1.4.没有代码标准
  sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
2.1.5.没有足够的或者过多的注释
  没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降
  而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
2.1.6.潜在的bug

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


2.1.7.糟糕的设计(原文Spaghetti Design,意大利面式设计)
  通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系
  可以检测自定义的架构规则
  通过sonar可以管理第三方的jar包
  可以利用LCOM4检测单个任务规则的应用情况
  检测耦合

2.2纯SonarQube

支持oracle、mysql、PostgreSQL、SQLServer等主流数据库,建议采用mysql数据库。

 

*注意:当使用oracle数据库时,需要导入jdbc的jar包支持(导入路径为sonarqube安装目录\extensions\jdbc-driver\oracle),jar包的版本需要与oracle版本一致对应,(select * from v$version可以查看oracle版本号),SonarQube 5.3及以上仅支持oracle11.2以上的oracle版本,所以推荐使用SonarQube自身支持的Mysql。

 

2.2.1 Oracle数据库

(1).下载sonarQube(相当于服务器)和sonar-runner(执行代码检测的工具)

(2).将sonarQube加压到D盘,sonar-runner解压到任意盘,建议解压到sonarQube安装根目录下。

(3).添加SONAR_HOME、SONAR_RUNNER_HOME环境变量,

并将SONAR_RUNNER_HOME加入PATH。(与JDK配置大同小异,前两个只需要指定到SONAR_HOME、SONAR_RUNNER_HOME的根目录,Path里添加%SONAR_RUNNER_HOME%\bin即可)。运行sonar-runner –h查看是否配置成功。

(4).如果你的JDK版本低于1.7(高于1.7请忽略此条),你需要为系统下载双JDK,采用1.8的JDK成功通过测试,并未该版本的JDK配置环境变量,进入sonar-runner安装目录..\bin,用文本编辑器打开sonar-runner.bat,将JAVA_HOME替换成为高版本JDK的路径值,例如:JAVA1.8_HOME(用户配置环境变量时自定义)。同时修改wrapper.con文件的wrapper.java.command=“JDK路径/bin/java”

(5).创建oracle数据库用户:sonar/sonar

(6).打开sonarQube安装目录...\conf\sonar.properties文件,

   加入:

sonar.jdbc.username:sonar

sonar.jdbc.password:sonar

sonar.jdbc.url:jdbc:oracle:thin:@192.168.0.160:1521/orcl

sonar.jdbc.driverClassName:oracle.jdbc.driver.OracleDriver

(8).将oracle的jar包导入到sonarQube安装目录..\extensions\jdbc-driver\oracle

(9).进入sonarQube的bin目录,进入相应操作系统,位数根据JDK决定,启动StartSonar。

(10).在项目根路径下,创建配置文件,文件名为sonar-project.properties。

sonar-runner执行分析时,会读取该文件。如图:




(11).代码扫描切换到项目源码根目录,(使用DOS窗口的CD命令),执行以下命令:sonar-runner扫描结果中出现“EXCUTION SUCCESS”字样则表示代码扫描成功。


(12).查看代码扫描结果查看代码扫描结果地址:http://192.168.0.160:9000/注:此处192.168.0.160为SonarQube服务所在服务器的IP地址。

 

 

2.2.2Mysql 数据库

(1).创建Mysql数据库、用户名、密码都为sonar。

(2).打开sonarQube安装目录...\conf\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.jdbc.driverClassName:com.mysql.jdbc.Driver

(3).余下步骤与其他数据库一致。

2.3与Jenkins集成

(1).下载sonarqube plugin插件

(2).在pom.xml加入maven-war-plugin

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<version>2.1.1</version>

推荐:GIT服务器实现web代码自动部署

之前在一台vps服务器上面搭建了git服务器,用来做代码管理,方便团队开发。但是问题也就相应的来了,使用git可以轻松的上传代码,而由于做的是web开发,每次还都

</plugin>

</plugins>

</build>

 

(3).在jenkins配置sonarqube

 

(4).配置sonar-runner环境

 

 

 

2.4与Maven集成

(1)进入maven/conf/settings.xml文件,配置:

<profile>

  <id>sonar</id>

  <activation>

     <activeByDefault>true</activeByDefault>

  </activation>

  <properties>

     <sonar.jdbc.url>jdbc:oracle:thin:@192.168.0.160:1521/oanet</sonar.jdbc.url>

     <sonar.jdbc.driver>oracle.jdbc.driver.OracleDriver</sonar.jdbc.driver>

     <sonar.jdbc.username>sonar</sonar.jdbc.username>

     <sonar.jdbc.password>sonar</sonar.jdbc.password>

  

     <sonar.host.url>http://localhost:9000</sonar.host.url>

  </properties>

</profile>

(2).进入CMD控制台,使用CD命令进入要进行代码巡查的工程目录下,执行

mvn cleaninstall mvn sonar:sonar

(3).进入sonarqube的主页查看结果。

2.5存在的问题

2.5.1 SVN报E170001错误

解决方案有2种:

(1)进入sonarqube禁止SCM。(目前采用)


(2)进入sonarqube下载SCM SVN插件。

 

2.5.2 潜在问题

(1)双JDK下在JENKINS后台报JDK版本不支持的错误(跟踪解决)

 

2.6 指标

Code coverage(代码覆盖率):团队要求代码覆盖率在80%以上;

Test success(测试通过率):团队要求测试成功率在100%;

Duplications(代码重复率):团队要求代码重复率在10%以下;

Violations(违规):团队要求Major类别的代码规则缺陷在20以下;

 

2.6 技术债务

技术债务, 是匆忙实现的功能而采取的不规范的方案导致引发连锁反应 -- 为了快速实现A功能,缺少整体规划,导致后期不得不打补丁A.1解决A的问题,然后又引入A1.1,A2, A2.1等等一堆补丁,导致项目越来越难维护。(比方说把某个条件写死,再比方说采用一些捷径达到目的,而这只是特殊情况,无法应用在其他模块中)

参考文档:http://blog.csdn.net/lingyun2005/article/details/5610133

 

 

 

技术债务金字塔包括

Reusability                 可重用性

Portability                  可移植性

Maintainability         可维护性

Security                      安全

Usability                     可用性

Efficiency                    效率

Changeability            可变性

Reliability                            可靠性

Testability                  可测性

 

以上债务金字塔已经通过仪表盘的形式在SonarQube首页显示。

并且显示出了模型等级评价(SQALERating)和技术债务比率(Technical Debt Ratio)。

推荐:linux服务器部署jenkins,让代码定时自动编译

1 .安装jenkins: google–ubuntu install jenkins 点击第一个搜索结果 在terminal中依次运行看到的shell命令 wget -q -O - https://jenkins-ci.org/debian/jenki

SonarQube带来什么? 2.1.1.糟糕的复杂度分布   文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,   且如果没有自动化的单元测试,对于程序中的任何组件的改变都将

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。