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

下载本文档

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

文档简介

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

温馨提示

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

最新文档

评论

0/150

提交评论