HUDSONMAVENSONAR集成开发体系介绍.pptx_第1页
HUDSONMAVENSONAR集成开发体系介绍.pptx_第2页
HUDSONMAVENSONAR集成开发体系介绍.pptx_第3页
HUDSONMAVENSONAR集成开发体系介绍.pptx_第4页
HUDSONMAVENSONAR集成开发体系介绍.pptx_第5页
已阅读5页,还剩68页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HUDSON+MAVEN+SONAR 集成开发体系介绍,杭州天丽科技 吴华锋 2012.11.1,培训目标,了解HUDSON+MAVEN+SONAR整体集成开发环境 学习项目构建管理工具MAVEN及私服仓库NEXUS的相关知识和使用方法。 学习持续集成的思想及持续集成工具HUDSON的使用方法。 学习代码质量分析工具SONAR的使用方法,HUDSON+MAVEN+SONAR开发体系结构,什么是Maven,Maven是基于项目对象模型(Project Object Model),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.,A build tool,A documentation tool,A dependency management tool,Maven引入,概念模型 Maven 维护了一个项目的模型,你不仅仅需要把源码编译成字节码,你还需要开发软件项目的描述信息,为项目指定一组唯一的坐标。你要描述项目的的属性。项目的许可证是什么?谁开发这个项目,为这个项目做贡献?这个项目依赖于其它什么项目没有?Maven不仅仅是一个“构建工具”,它不仅仅是在类似于 make 和 Ant 的工具的基础上的改进,它是包含了一组关于软件项目和软件开发的语义规则的平台。,Maven主要功能,构建项目(Builds) 文档编制(Documentation) 报告(Reporting) 依赖管理(Dependencies) 配置管理(SCMs) 发布管理(Releases),了解Maven,Maven监管项目生命周期,Maven如何工作,构建项目,Maven可以构建哪些类型的项目: EAR WAR JAR ZIP EJB 自定义格式 说明:EJB项目=JAR项目,Maven目录结构,使用标准目录的好处,所有项目的构建必须遵从标准目录结构; 使所有使用Maven管理的项目从目录上看都是一样的; 便于管理,便于协作; 遵从业界统一标准,有助于团队管理;,pom.xml的介绍,开发人员不需要关注pom.xml中的内容; 项目构建和管理人员需要编写pom.xml中的内容; 配置项目之间的依赖关系; 配置项目所需要使用的插件信息:如ejb,javadoc等等;,如何配置一个依赖关系, junit junit 3.8.1 test 配置人员需要考虑使用什么JAR包? 版本号使多少? 所在生命周期是什么?,给项目配置人员的建议,自己先在本地将自己创建的项目创建成为Eclipse支持的Maven项目(此过程将激活Maven到本地资源库中查找依赖,如果依赖不存在则从网上的资源库下载,并放置到本地); 项目构建完成之后将下载到新的依赖项目放到本地服务器上; 将Maven构建成功的项目放到CVS上;,给开发人员的建议,自己从CVS上下载项目 右击pom.xml,运行mvn test,检查能否正确完成测试。,多模块企业级项目,项目版本管理,项目版本 - 例如:版本“1.3.5”由一个主版本1,一个次版本3,和一个增量版本5 限定版本用来标识里程碑构建:alpha和beta发布 例如:版本“1.3-beta-01”有一个主版本1,次版本3,和一个限定版本 “beta-01”。 SNAPSHOT版本 Maven版本可以包含一个字符串字面量来表示项目正处于活动的开发状态。 LATEST 和 RELEASE 版本,项目版本管理,仓库管理器,仓库管理器有两个服务目的: 首先它的角色是一个高度可配置的介于你的组织与公开Maven仓库之间的代理。 其次它为你的组织提供了一个可部署你组织内部生成的构件的地方。,Maven仓库(一),Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR。,Maven仓库(二),Maven仓库的种类,Maven仓库,远程仓库,本地仓库,中央仓库,私服,其他公共库,Maven仓库(三),中央仓库:包含了世界上大多数流行的开源Java构件。 /maven2/,Maven仓库(四),私服:一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。 38:8082/nexus 私服的好处: 节省自己的外网带宽 加速Maven构建 部署第三方构件 提高稳定性,增强控制 降低中央仓库的负荷,Nexus的特性,代理远程仓库。配置Nexus代理中央仓库,其它任何公开的Maven仓库,将你组织内部的Maven配置指向Nexus,这样所有构件都将从Nexus下载,如果Nexus没有你要的构件,它会自动先去外部仓库下载到本地,仅一次。 本地宿主仓库。Nexus可以在服务器上建立本地的宿主仓库,你可以往这个仓库里提交任意的Maven规范构件,包括不能从公开仓库下载到的构件,或者你组织内部产生的构件。,Nexus的特性,仓库组。有了仓库组,你就能将很多仓库聚合起来,对外公开一个统一的接口提供构件服务。 构件搜索。Nexus能下载远程的仓库索引,并在本地构件自己的仓库索引,有了该索引,你就能很快速方便的搜索任何你感兴趣的构件。 事情RSS源。Nexus服务器上发生的几乎任何事情,你都能用RSS监视,方便管理。,Nexus的特性,Release和Snapshots区分。配置Nexus提供Release构件服务或者Snapshots服务,能更清晰的管理构件。 路由。Nexus的路由能够管理为特定的请求提供特定的仓库。加入你在一个组中配置了很多仓库,一条路由能够极大提高某些特定请求的响应速度。,Nexus的特性,上传构件。使用Nexus你能很方便的在web界面上上传一些特殊的构件至仓库。 高用户体验的UI。使用AJAX和REST技术开发的Nexus,在界面上为提供了很舒适的用户体验。,演示:利用NEXUS搜索并添加JAR包,1、打开38:8082/nexus 2、搜索你需要用到的JAR类名,比如:powermock 3、在结果中选择你要添加的JAR及版本 4、拷贝XML描述信息到POM.XML中 5、完成对JAR包的添加引用,演示:向NEXUS发布构件,1、在要发布的项目的POM.xml中增加distributionManagement配置信息 2、在settings.xml中配置构件部署账户密码 3、右击项目的POM.XML,运行 mvn deploy 即可自动发布到NEXUS的release或snapshots库中。,Hudson持续集成,持续集成介绍 持续集成已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。,Hudson持续集成,Hudson帮助您的开发团队应对如下挑战: 软件构建自动化 构建可持续的自动化检查 构建可持续的自动化测试 生成后后续过程的自动化,Hudson持续集成,软件构建自动化 使用CI,您只要按一下按钮,它会依照预先制定的时间表,或者针对某一特定事件,就开始对目标软件进行一次构建过程。想想吧,尤其您从头到尾构建一个构件的时候,这个构建过程应该不会是局限于某一特定IDE、电脑或者个人的。 CI:Continue Integration,Hudson持续集成,构建可持续的自动化检查 CI系统能够设定成持续地执行新增或修改后签入的源代码,也就是说,当软件开发 团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。,Hudson持续集成,构建可持续的自动化测试 一个构建检查的扩展部分,这个过程确保当新增或修改代码时不会导致预先制定的一套测试在构建构件后失败。构建检查和测试一样,失败都会触发通知单(Email,RSS等等)给相关的当事人,告知对方一次构建或者一些测试失败了。,Hudson持续集成,生成后后续过程的自动化 一旦自动化检查和测试的构建已经完成,一个软件构件的构建周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。,CI系统基本结构,Hudson演示,演示Hudson的基本功能,Hudson+maven+sonar+cvs集成安装,软件准备: JDK、Hudson、Maven、Sonar、Mysql、 TortoiseCVS 、Tomcat 、Sonar.hpi(Hudson插件) 软件安装部署 Hudson、Maven、Sonar、Mysql、JDK、 Tomcat、TortoiseCVS,Hudson+maven+sonar+cvs集成安装,相关配置 环境变量:JAVA_HOME,M2_HOME,HUDSON_HOME 文件配置:settings.xml(maven) perties(sonar) 创建数据库用户:sonar/sonar(赋所有权限) Sonar.hpi插件,Hudson+maven+sonar+cvs集成安装,部署Hudson、Sonar 正确配置前面的操作,将Hudson.war和Sonar.war文件放入Tomcat的webapps目录下,启动Tomcat。,Hudson配置,Hudson全局配置,需要配置的基本属性: JDK Maven CVS Sonar 邮件通知,Hudson项目配置,需要配置的基本属性: Source Code Management:设置源码cvs下载 Build Triggers:定期构建(Build periodically)(可选) * * * * *代表 分 时 天 月 星期几 例:0 8,18 * * * =每天8,18点构建项目 Build(可选):设置maven选项 Build Settings(可选):设置邮件 Post-build Actions(可选):设置项目sonar链接,Sonar 简介,Sonar 是一个开源的质量管理平台,专注于从项目到类方法的持续的分析和测量技术质量,它把代码质量相关软件集成到一起统一管理. Sonar 是持续,自动地统计并分析软件项目的相关质量数据,例如单元测试的通过率,覆盖率,代码的复杂度,代码的行数等等,用于评估和度量软件项目质量。,Sonar指标介绍,Sonar指标介绍-Dashboard,代码行、类、包数量的统计,注释、重复度的统计,复杂度统计,三角箭头代表什么? 颜色又代表什么?,项目基本信息,Sonar指标介绍-Dashboard,箭头方向 - 数量,灰色:不影响代码质量 红色:代码质量下降 绿色:代码质量提高,箭头颜色 - 代码质量,Sonar指标介绍-Dashboard,简单归结为一个方法中if , for , while等块的数目。当一个方法的控制流分割,计数器加1。除不被认为是方法的访问器(getter/setter)外,每个方法默认有最小的值1。 会增加复杂度的java关键词/语句: if for while case catch throw return (当不是一个方法最后一个语句时) & | ?,复杂度,注意:else, default及finally不会增加复杂度,Sonar指标介绍-Dashboard,以method为计算单位的复杂度建议值: 110 :够简单,风险低; 1120 :有点复杂,有点风险; 2150 :很复杂,高风险; 50 :只有上帝才能看懂的方法,复杂度为5的例子,Sonar指标介绍-Dashboard,代码违规信息,在sonar中已经预置了一些规则,比如说:空的finally块、空if语句、变量未使用等等。,本项目使用的规则,Sonar指标介绍-Dashboard,包耦合与依赖切割,包耦合指数反映了包的耦合级别,最好的值为0%,意味着包之间没有圈依赖;最差的值为100%,意味着包与包之间的关系特别的复杂。 该指数计算方式:2 * (package_tangles / package_edges_weight) * 100。 其中: package_edges_weight = 包之间的文件依赖总数 package_tangles = 可以去除文件依赖的数量,Sonar指标介绍-Dashboard,代码覆盖率及测试成功率,提供行覆盖、分支覆盖的具体数据。例:,if - elseif else 若只測到if內的code就只有33%, 若測到 if - elseif 就是66%, 若if - elseif - else全測到就是100%,100行代码,有95行被测到,就算95%,Line coverage,Branch coverage,Sonar指标介绍-Dashboard,覆盖率计算公式:,Coverage = (CT + CF + LC)/(2*B + EL),其中,CT - 条件至少一次为“true”的分支 CF - 条件至少一次为“false”的分支 LC - 覆盖的行数(lines_to_cover - uncovered_lines) B - 分支的总数量(2*B = conditions_to_cover) EL 可执行代码的总行数 (lines_to_cover),Sonar指标介绍-Hotspots,热点,Most violated rules : 被违反最多的规则 Hotspots by Unit tests duration : 单元测试时间 Hotspots by Complexity : 复杂度 Hotspots by Duplicated lines : 重复行 Most violated resources : 违反规则最多的资源 Hotspots by Uncovered lines : 未被覆盖的代码行 Hotspots by Complexity /method : 方法复杂度 Hotspots by Public undocumented API : 没有文档注释的API,展示了整个工程包括违规、复杂度在内的具体信息,Sonar指标介绍- Time Machine,展示不同时间各项指标的值,相同的指标以直线的形式展示出来,能更直观的表现该指标的走势,Sonar指标介绍- Components,Sonar指标介绍- Components,板块图是由一系列具有不同颜色的矩形框组成,可以反映一个具有树形层次结构关系的多维数据集信息。 一般而言,矩形的面积大小代表一个绝对变量,矩形的颜色深浅代表另外一个相对变量(或分类变量),矩形按层次关系进行组合和排序。板块图并不强调对数据的精确比较,而是以一种全局视野的眼光,从绝对量、相对量、数据层次中发现特殊的信息,因为我们的眼睛会自然注意到最大的矩形和最深的颜色。,Sonar指标介绍-Violations Drilldown,违规信息钻取,上部分用于选择违规程度以及违规类型,下部分表示相应项目模块的具体类违规明细,点击某一个类,可以看到类的具体信息,包括违规、LCOM4、覆盖、重复信息。 主要为了能更快追踪违规的详细信息,更高效的解决存在的问题。,Sonar指标介绍-Clouds,快速成功(Quick Win)模式中:字体大小代表代码行数,颜色代表遵守规则或者覆盖率 最高风险(Top risk)模式中:字体大小代表复杂度,颜色代表遵守规则或者覆盖率,Sonar指标介绍-Design,Sonar指标介绍-Design,绿依赖于蓝,蓝依赖于橙,红底的为需要尽量消除的依赖,不同package之间相互依赖的文件个数,Sonar指标介绍-详细,Coverage,Sonar指标介绍-详细,Depende

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论