现在的位置: 首页 > 综合 > 正文

软件开发管理中的最佳实践——日构建和持续集成

2013年07月04日 ⁄ 综合 ⁄ 共 5553字 ⁄ 字号 评论关闭
自动化构建的过程,在我项目里面试用了,非常不错
使用自动化持续集成可以做。…
可以进行代码检查,单元测试,测试覆盖率,代码风格,代码重复性,优化建议,代码文档,代码方向工程UML,包直接的依赖性,构建流程。
下面以我在项目中试用的一些经验,正如好记忆不如烂笔头,把这些记录起来是避免自己日后忘记的时候可以参考。
自动化部署所需要的工具:
使用 UMLGraph 生成当前源代码的 UML 图。
使用 SchemaSpy 创建实体关系图(ERD),归档数据库中的表格和关系。
使用 Grand 生成构建目标以及它们之间的关系的 Ant 构建图。
使用 Doxygen 生成源代码文档。
使用 DocBook 制作用户文档。
Graphviz-2.20.2.exe(用于生成uml图形)
Doxygen.exe(放入到windows/system32目录下)
Doxytag.exe(放入到windows/system32目录下)
所需jar包和其他需要的文件
  
另外2个重要的文件就是
Build.propertites 
这里是配置一些基本的信息,如
#Where all those result will be 保存产生部署文件的位置
test.report.base.dir=d:/test-report
#once you change the source.dir, don't forget to
#update the doxygen.cfg accordingly, if you want
#to generate doxygen docs 源文件位置
source.dir=./src
#Location of test code 测试代码位置
test.dir=./test
#Location of doxygen.cfg doxygen文件的配置文件
doxygen.cfg=etc/doxygen.cfg
#lib location which should be included in CLASSPATH
#这里要注意,要把Tomcat下相应的jar包也加上
lib.dir=./lib
lib2.dir=./web/WEB-INF/lib
tomcat_lib = E:/YGProject/ClearCase/Server/Tomcat-5.0.28/server/lib
tomcat_lib2 = E:/YGProject/ClearCase/Server/Tomcat-5.0.28/common/lib
Build.xml(Ant的文件)
要注意的问题,
1. 要注意你项目的编码,如果你项目的编码是GBK的话,那么里面很多有encoding="UTF-8" docencoding="UTF-8" 就要改成gbk了。
2.
  1.     <!--define classpath 定义路径,记得要把tomcat的路径加上 -->
  2.     <path id="classpath">
  3.         <fileset dir="${lib.dir}" id="lib">
  4.             <include name="**/*.jar" />
  5.         </fileset>
  6.         <fileset dir="${lib2.dir}" id="lib2">
  7.                 <include name="**/*.jar" />
  8.         </fileset>
  9.         <fileset dir="${tomcat_lib}" id="tomcat_lib">
  10.             <include name="**/*.jar" />
  11.         </fileset>
  12.         <fileset dir="${tomcat_lib2}" id="tomcat_lib2">
  13.             <include name="**/*.jar" />
  14.         </fileset>
  15.         <pathelement path="${build.dir}" />
  16.     </path>
将代码反向工程到 UML 中
生成javadoc 文档,这里要说明的是<packageset dir="${source.dir}/dao" />,如果你的项目里面像我这样来安排程序结构:那么你就要把你所有src下的目录都加上, 
如果你只是全部放到src下那么,只要一个<packageset dir="${source.dir} " />就可以了。
使用 Doxygen 生成源代码文档,结合使用 UMLGraph 和 Javadoc 在 Javadoc HTML 报告内部生成一些基本的 UML 类图。为了自定义展示在每一个类图中的信息
  1. <!-- ================================= 
  2.           target: javadoc              
  3.          ================================= -->
  4.     <patternset id="java.files.pattern" includes="**/*.java"/>
  5.     
  6.     <target name="javadoc" depends="init, mkdir" description="--> Begin Generate Javadoc Of The Project">
  7.         <mkdir dir="${doc.output.dir}" />
  8.         <delete dir="${javadoc.output.dir}" />
  9.         <mkdir dir="${javadoc.output.dir}" />
  10.         <javadoc destdir="${javadoc.output.dir}" encoding="UTF-8" docencoding="UTF-8" access="private">
  11.             <classpath refid="classpath" />
  12.             <packageset dir="${source.dir}/dao" />
  13.             <packageset dir="${source.dir}/web" />   
  14.             <packageset dir="${source.dir}/service" />
  15.             <packageset dir="${source.dir}/commons" />
  16.             
  17.             <packageset dir="${test.dir}/dao" />
  18.             <packageset dir="${test.dir}/web" />     
  19.             <packageset dir="${test.dir}/service" />
  20.             <packageset dir="${test.dir}/commons" />
  21.             
  22.             <doclet name="org.umlgraph.doclet.UmlGraphDoc" path="lib/build/UMLGraph.jar">
  23.                 <param name="-attributes" />
  24.                 <param name="-enumerations" />
  25.                 <param name="-enumconstants" />
  26.                 <param name="-operations" />
  27.                 <param name="-qualify" />
  28.                 <param name="-types" />
  29.                 <param name="-inferrel" />
  30.                 <param name="-inferdep" />
  31.                 <param name="-hide" value="java.*" />
  32.                 <param name="-collpackages" value="java.util.*" />
  33.                 <param name="-postfixpackage" />
  34.                 <param name="-nodefontsize" value="9" />
  35.                 <param name="-nodefontpackagesize" value="7" />
  36.                 <param name="-visibility" />
  37.             </doclet>
  38.         </javadoc>
  39.     </target>
  40.     <!-- ================================= 
  41.           target: doxygen              
  42.          ================================= -->
  43.     <target name="doxygen" depends="init, mkdir" description="--> Doxygen Begin run">
  44.         <mkdir dir="${doc.output.dir}" />
  45.         <mkdir dir="${doxygen.output.dir}" />
  46.         <mkdir dir="${doxygen.output.dir}/html" />
  47.     
  48.         <taskdef name="doxygen" classname="org.doxygen.tools.DoxygenTask" classpathref="classpath" />
  49.         <doxygen configFilename="${doxygen.cfg}">
  50.         </doxygen>
  51.         <move todir="${doxygen.output.dir}">
  52.             <fileset dir="doxygen" />
  53.         </move>
  54.         <move todir="${doxygen.output.dir}">
  55.             <fileset dir="${doxygen.output.dir}/html">
  56.                 <include name="**/*.chm" />
  57.             </fileset>
  58.         </move>
  59.     </target>

 
这里就是生成的实际效果。
试用PMD来进行代码检查,对不符合代码规范的可以全部都检查出来,这样以后检查代码规范就可以轻松很多了。
  1. <!-- ================================= 
  2.           target: check.pmd  代码检查            
  3.          ================================= -->
  4.     <target name="check.pmd" depends="init, mkdir" description="--> check pmd">
  5.         <delete dir="${pdm.output.dir}" />
  6.         <mkdir dir="${pdm.output.dir}" />
  7.         <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="classpath" />
  8.         <pmd shortFilenames="true" targetjdk="1.6">
  9.             <ruleset>basic,imports,unusedcode,naming,codesize,controversial,design</ruleset>
  10.             <formatter type="text" toConsole="yes" />
  11.             <formatter type="xml" toFile="${pdm.output.dir}/pmd-report.xml" linkPrefix="http://pmd.sourceforge.net/xref/" />
  12.             <fileset refid="src" />
  13.         </pmd>
  14.         <!--Generate html file-->
  15.         <xslt style="etc/pmd-report-per-class.xslt" in="${pdm.output.dir}/pmd-report.xml" out="${pdm.output.dir}/pmd-report.html">
  16.         </xslt>
  17.     </target>

抱歉!评论已关闭.