Hudson 是一个可扩展的持续集成引擎(Continuous Integration Engine)。主要用于:持续、自动地构建/ 测试软件项目. 监控一些定时执行的任务; Sonar 是一个开源的质量管理平台,专注于从项目到类方法的持续的分析和测量技术质量,它把代码质量相关软件集成到一起统一管理。 简单来说: hudson 是持续、自动地构建/ 测试软件项目;而sonar 则是持续,自动地统计并分析软件项目的相关质量数据,例如单元测试的通过率,覆盖率,代码的复杂度,代码的行数等等,用于评估和度量软件项目质量。 Sonar 是一个开源的代码质量管理平台,专注于对从项目组合到类方法的持续分析和度量其技术质量,当然你也可以使用开源的插件来扩展Sonar,查看扩展可以访问 open source plugins forge 。
工具说明: jacoco : is an Open Source and robust code coverage tool , Sonar is delivered with Cobertura plugin but if you prefer JaCoCo you just have to install this plugin and go back to your favorite practice : the test driven development. findbugs: a program which uses static analysis to look for bugs in java code. Squid: Squid is a plugin that gathers all standard metrics number of classes, number of comments, cyclomatic complexity...). Originally, Sonar was using JavaNCSS, but they were too many limitations.Squid keeps by default methods and accessors (beans getters and setters) separated. PMD CPD : This is the historical engine to search for copy / paste. Mainly for performances reasons, it only enables to do copy / paste detection within a project and event within a maven module when maven is used. 第一步.创建数据库 sornar默认就装载了Apache Derby ( an Apache DB subproject ) ,所以如果使用 Derby就 不需要安装;它只是用于演示和测试,在实际应用中还是用外部强健的数据库,更多详细见 supported platforms 。 要使用外部数据库,它要求明确建立 database schema 和 permission ,当第一次启动sonar 的时候,table 和 index会自动创建,例如设置使用的外部数据库为 MySql 数据库,可以用以下脚本:
# # Create Sonar database and user. # # Command: mysql -u root -p < create_database.sql #
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;
下载地址: extras/database/mysql 注:当创建数据库时,Character Set 推荐使用utf-8 ,同时校验规则 Collation 是对大小写敏感。
第二步.下载安装sonar 1.下载并解压它的发行版本 the distribution. 2.如果你使用sonar默认内嵌的Derby数据库,编辑 conf/sonar.properties文件配置对数据的访问,这个模板适用于所有支持的数据库,只需要注释掉derby专用的前四行,同取消对要引用外部数据库链接的注释。 原文如下: If you do not use the default embedded database, edit conf/sonar.properties to configure the database access. Templates are available for every supported database. Just uncomment them and comment the first four lines dedicated to derby. - sonar.jdbc.url : the URL of the database
- sonar.jdbc.driver : the class of the driver
- sonar.jdbc.user : the username (default value is 'sonar')
- sonar.jdbc.password : the password (default value is 'sonar')
Example for MySQL : #sonar.jdbc.url: jdbc:derby://localhost:1527/sonar;create=true #sonar.jdbc.driverClassName: org.apache.derby.jdbc.ClientDriver #sonar.jdbc.defaultTransactionIsolation: 1 #sonar.jdbc.validationQuery: values(1) sonar.jdbc.url: jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 sonar.jdbc.driverClassName: com.mysql.jdbc.Driver sonar.jdbc.validationQuery: select 1 |
第三步.启动 sonar 应用 启动 sonar 应用,这里有几种方式: Mode 1 - Start the standalone application 编辑conf/sonar.properties文件, 我这里设置的是: sonar.web.host : 192.168.5.28 sonar.web.port: 9000 sonar.web.context: /sonar |
执行以下脚本,启动sonar服务; ? On Linux/Mac OS : bin/<YOUR OS>/sonar.sh start ? On MS Windows : bin/windows-x86-32/StartSonar.bat
|