zoukankan      html  css  js  c++  java
  • sonar tomacat配置

    最近在学习Sonar,配置了好几天,才搭建起来环境,为自己的学习能力感到汗颜,赶紧在此记录一下,所谓好记性不如烂笔头。

     

    1、Sonar介绍

    Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。

    通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

    同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。

    此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

     

    2、安装、配置Sonar

    Sonar的运行需要 JDK 1.5+ , Maven 2.0.9+  的支持,因此需要系统中安装以上两个软件;从 http://www.sonarqube.org/downloads/ 下载sonar(最新版本3.5.1)zip文件,解压到任意目录,即完成安装.

     

    Sonar有两种启动方式:

    第一种:直接启动${SONAR_HOME}/bin下对应系统的脚本即可.

    windows环境下,启动${SONAR_HOME}/bin/windows-x86-32/StartSonar.bat, 在浏览器中访问: http://localhost:9000/,界面如下:

    由于Sonar自带了Jetty6 的应用服务器环境,所以不需要额外的配置即可使用.

    Sonar默认的端口是”9000”,默认的上下文路径是”/”,默认的网络接口是”0.0.0.0”;这些参数都可以在${SONAR_HOME}/conf/sonar.properties中修改.

    默认的管理员帐号和密码为:admin/admin.

     

    第二种:作为Web项目,部署到Tomcat等应用服务器中.

    步骤如下(以tomcat为例):

    a. 编辑conf/sonar.properties还原成标准格式(就是不修改端口之类);确保部署到应用服务器时conf/wrapper.conf未被使用过;
    b. ${SONAR_HOME}/war目录下执行build-war.bat脚本;将生成的sonar.war部署到应用服务器中;
    c. 启动Tomcat, 通过 http://localhost:8080/sonar 访问.

    为了避免内存溢出,增加内存堆栈的大小:在Tomcat启动前设置CATALINA_OPTS环境变量:

    CATALINA_OPTS=”-Xms1024m -Xmx1024m -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -XX:MaxPermSize=256m”   

     

    3、数据库安装配置及数据库连接配置

    Sonar需要一个数据库来存储结果,Apache Derby 是Sonar自带并且默认安装使用的数据库,它能很好的用于Sonar的演示.但在实际项目中推荐使用性能更好更强大的数据库.

    Sonar对如下数据库提供支持:MySQL 5.x, Oracle 10g XE, Postgresql, MS SqlServer 2005 等.(以MySQL为例进行介绍):

     

    a. 编辑${SONAR_HOME}/conf/sonar.properties配置数据库:

     

    b. 配置DB驱动包.

    如果使用Oracle数据库,必须手动复制驱动类到${SONAR_HOME}/extensions/jdbc-driver/oracle/目录下;其它支持的数据库默认提供了驱动.

     

    经过以上步骤,重启Sonar服务(使用Tomat等外置服务器者,需要重新打war包,重启服务器);会自动创建名为sonar的数据库,帐号和密码分别为sonar、sonar的用户(sonar默认值);通过浏览器访问sonar服务即可.

    :经测试,发现如果不先手动创建sonar用户时,sonar不能正确的执行创建(这与数据库本身的用户权限有关,默认帐号不对,或者权限不够,自然不能创建数据库了)!在此建议先手动创建数据库(sonar)和用户(sonar),同时给sonar用户授权.语句如下:

    CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

    CREATE USER 'sonar' IDENTIFIED BY 'sonar';

    GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';

    GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';

    FLUSH PRIVILEGES;

     

    http://docs.codehaus.org/display/SONAR/Analysis+Parameters 列举了一些常用的配置及默认值.

     

    启动过程中如有报错,可参考我的另一篇博客(http://allen-j-will.iteye.com/blog/1897180

     

    4、集成Maven

    Sonar是通过Maven2 插件来分析源代码并把结果注入到数据库中.因此需要在Maven的配置里设置数据库的属性.

    修改${MAVEN_HOME}/conf/settings.xml文件或者 ~/.m2/settings.xml文件,添加如下 profile:

    <profile>

    <id>sonar</id>

    <properties>

        <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>

        <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>

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

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

        <sonar.host.url>http://localhost:8080/sonar</sonar.host.url> <!-- Sonar服务器访问地址 -->

    </properties>

    </profile>

    <activeProfiles>

      <activeProfile>nexus</activeProfile>

      <activeProfile>sonar</activeProfile>

    </activeProfiles>

     

    注: 网上参考的资料中,对于 <sonar.host.url> 属性,仅配置到端口,本人在本地测试,发现始终不行,这应该和sonar的启动方式有关;

    如果单独启动sonar服务,以上配置应该没问题(未测试);若将sonar部署到服务器中时,<sonar.host.url>属性需要配置到上下文环境才行.这点特别容易遗漏!!!

    同样,为了避免内存溢出,推荐增加内存堆栈的大小。设置MAVEN_OPTS环境变量:

    set MAVEN_OPTS=”-Xmx512m -XX:MaxPermSize=256m”  

     

    5、使用Sonar

    a. 运行Sonar服务器;

    b. 通过 mvn sonar:sonar 将代码注入到Sonar中进行分析处理,并将处理结果以XML的形式保存在数据库中;

    c. 通过浏览器访问,显示分析结果;

    d. 持续运行Maven构建,会迭代显示分析结果;

    e. 可以显式指定sonar插件的版本,如下:

     

    [xml] view plain copy
     
    1. <project>  
    2.   <build>  
    3.    <plugins>  
    4.      <plugin>  
    5.        <groupId>org.codehaus.sonar</groupId>  
    6.        <artifactId>sonar-maven-plugin</artifactId>  
    7.        <version>3.5.1</version>  
    8.      </plugin>  
    9.    </plugins>  
    10.    </build>  
    11. </project>  

    f.可以显式的将sonar绑定到Maven生命周期中,如下:

    [xml] view plain copy
     
    1. <plugin>  
    2.     <groupId>org.codehaus.sonar</groupId>  
    3.     <artifactId>sonar-maven-plugin</artifactId>  
    4.     <version>3.5.1</version>  
    5.     <executions>  
    6.         <execution>  
    7.             <id>sonar</id>  
    8.             <phase>site</phase>  
    9.             <goals>  
    10.                 <goal>sonar</goal>  
    11.             </goals>  
    12.         </execution>  
    13.     </executions>  
    14. </plugin>  

    此时,指定Maven的site声明周期时,则会自动调用sonar.sonar 命令.
     

      

    6、Hudson集成

    Sonar还可以通过插件与Hudson进行集成,在每次构建结束后触发Sonar.

    首先,应该在Hudson的插件管理中添加Hudson Sonar Plugin;

    然后,在系统设置里,增加一个Sonar的Installation;

    最后,在项目的Post-build actions里,勾选Sonar.

    在项目构建完成后,会自动执行Sonar的任务.

    不过Hudson集成中运行Sonar任务,可能需要参考Sonar的文档对Maven配置进行相应修改.

     

     

     

    本文参考了如下文章,在此表示感谢.

    http://www.ibm.com/developerworks/cn/java/j-lo-sonar/

    http://pengwei841221.iteye.com/blog/940428

    http://digitalsonic.iteye.com/blog/695304

  • 相关阅读:
    Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint
    Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台
    Azure China (7) 使用WebMetrix将Web Site发布至Azure China
    Microsoft Azure News(4) Azure新D系列虚拟机上线
    Windows Azure Cloud Service (38) 微软IaaS与PaaS比较
    Windows Azure Cloud Service (37) 浅谈Cloud Service
    Azure PowerShell (6) 设置单个Virtual Machine Endpoint
    Azure PowerShell (5) 使用Azure PowerShell创建简单的Azure虚拟机和Linux虚拟机
    功能代码(1)---通过Jquery来处理复选框
    案例1.用Ajax实现用户名的校验
  • 原文地址:https://www.cnblogs.com/luolizhi/p/5699072.html
Copyright © 2011-2022 走看看