注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风之云的足迹

点击这里添加博客描述

 
 
 

日志

 
 

Sonar部署升级中踩过的坑  

2014-09-18 11:29:35|  分类: 软件工具 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关于Sonar的详细部署可以查看之前谢蕾的博文,地址:
http://qa.blog.163.com/blog/static/19014700220148403930212/

本文主要介绍Sonar4.4版本在部署以及使用中过碰到的坑。
1、部署问题:加入openid插件后启动报错
014.09.05 10:37:33 ERROR [o.s.s.p.PlatformServletContextListener]  Fail to start server
java.lang.NoClassDefFoundError: org/apache/xerces/parsers/DOMParser
原因:看提示就是缺少jar包,为啥从官网下载的包解压后也会缺少jar这个诡异就未知了
解决方案:下载xerces.jar丢到web的WEB-INF/lib目录下,重新启动sonar即可
jar包的下载地址:http://www.java2s.com/Code/Jar/x/Downloadxerces291jar.htm

2、部署问题:由于服务器装了自己的Ruby版本,导致调用Sonar接口报错,后台log信息如下:
undefined method 'generate' for #<JSON::Ext::Generator::State:0x76afc32d>
原因:Sonar后台有Ruby on Rails工程,会用到Ruby的API,这个是Ruby的异常。由于部署的服务器刚好也装过Ruby版本,导致了调用自己安装的Ruby,而不是Sonar内嵌的Ruby,导致出现错误
解决方案:在sonar的启动脚本soanr.sh的开头加入unset GEM_PATH ,在重新启动即可,通过这个命令可以保证每次启动的时候使用sonar内置的ruby版本
参考资料:
http://sonarqube.15.x6.nabble.com/Local-SonarQube-analyse-error-HTTP-500-due-to-JSON-generation-td5021597.html

3、配置问题:Sonar版本从3.7升级到4.4导致jacoco的代码覆盖率不能统计
原因:升级Sonar的同时也升级了Java plugin,Java plugin从2.2版本开始就不会自动收集代码覆盖率
解决方案:增加配置
1、pom.xml文件中添加jacoco的相关配置
参考:https://github.com/SonarSource/sonar-examples/tree/master/projects/languages/java/code-coverage/ut
<!-- BEGIN: Specific to mapping unit tests and covered code -->
<profiles>
<profile>
<id>coverage-per-test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- Minimal supported version is 2.4 -->
<version>2.13</version>
<configuration>
<properties>
<property>
<name>listener</name>
<value>org.sonar.java.jacoco.JUnitListener</value>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.codehaus.sonar-plugins.java</groupId>
<artifactId>sonar-jacoco-listeners</artifactId>
<version>1.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
</profiles>
<!-- END: Specific to mapping unit tests and covered code -->




2、maven命令行添加下载jacoco agent的参数
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true
通过以上的mvn命令后面的参数,会自动下载jacoco的agent,如果以下载的话不会重复下载

3、Soanr服务器后台sonar.properties的配置
在配置文件中新增以下配置选项:


# Import tests execution reports (JUnit XML format).
# Set the property to the path of the directory containing all the XML reports.
sonar.junit.reportsPath=target/surefire-reports
 
# Import JaCoCo code coverage report.
# Set the property to the path of the JaCoCo .exec report.
sonar.jacoco.reportPath=target/jacoco.exec
 
# Import Cobertura code coverage report.
# Set the property to the path of the Cobertura .ser report.
sonar.cobertura.reportPath=target/site/cobertura/coverage.xml
 
# Import Clover code coverage report.
# Set the property to the path of the Clover .xml report.
sonar.clover.reportPath=target/clover.xml
 
 
# For versions of the Java plugin prior to 2.2, the following properties have to be set as well.
sonar.dynamicAnalysis=reuseReports
sonar.java.coveragePlugin=plugin   # either jacoco or cobertura or clover

参考:
http://sonarqube.15.x6.nabble.com/Sonar-4-3-not-showing-coverage-td5025547.html
http://docs.codehaus.org/display/SONAR/Code+Coverage+by+Unit+Tests+for+Java+Project
http://docs.codehaus.org/display/SONAR/JaCoCo+Plugin




  评论这张
 
阅读(2365)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018