自动化构建的过程,在我项目里面试用了,非常不错
使用自动化持续集成可以做。…
可以进行代码检查,单元测试,测试覆盖率,代码风格,代码重复性,优化建议,代码文档,代码方向工程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.
-
- <path id="classpath">
- <fileset dir="${lib.dir}" id="lib">
- <include name="**/*.jar" />
- </fileset>
- <fileset dir="${lib2.dir}" id="lib2">
- <include name="**/*.jar" />
- </fileset>
- <fileset dir="${tomcat_lib}" id="tomcat_lib">
- <include name="**/*.jar" />
- </fileset>
- <fileset dir="${tomcat_lib2}" id="tomcat_lib2">
- <include name="**/*.jar" />
- </fileset>
- <pathelement path="${build.dir}" />
- </path>
将代码反向工程到 UML 中
生成javadoc 文档,这里要说明的是<packageset dir="${source.dir}/dao" />,如果你的项目里面像我这样来安排程序结构:那么你就要把你所有src下的目录都加上,
如果你只是全部放到src下那么,只要一个<packageset dir="${source.dir} " />就可以了。
使用 Doxygen 生成源代码文档,结合使用 UMLGraph 和 Javadoc 在 Javadoc HTML 报告内部生成一些基本的 UML 类图。为了自定义展示在每一个类图中的信息
- <!-- =================================
- target: javadoc
- ================================= -->
- <patternset id="java.files.pattern" includes="**/*.java"/>
-
- <target name="javadoc" depends="init, mkdir" description="--> Begin Generate Javadoc Of The Project">
- <mkdir dir="${doc.output.dir}" />
- <delete dir="${javadoc.output.dir}" />
- <mkdir dir="${javadoc.output.dir}" />
- <javadoc destdir="${javadoc.output.dir}" encoding="UTF-8" docencoding="UTF-8" access="private">
- <classpath refid="classpath" />
- <packageset dir="${source.dir}/dao" />
- <packageset dir="${source.dir}/web" />
- <packageset dir="${source.dir}/service" />
- <packageset dir="${source.dir}/commons" />
-
- <packageset dir="${test.dir}/dao" />
- <packageset dir="${test.dir}/web" />
- <packageset dir="${test.dir}/service" />
- <packageset dir="${test.dir}/commons" />
-
- <doclet name="org.umlgraph.doclet.UmlGraphDoc" path="lib/build/UMLGraph.jar">
- <param name="-attributes" />
- <param name="-enumerations" />
- <param name="-enumconstants" />
- <param name="-operations" />
- <param name="-qualify" />
- <param name="-types" />
- <param name="-inferrel" />
- <param name="-inferdep" />
- <param name="-hide" value="java.*" />
- <param name="-collpackages" value="java.util.*" />
- <param name="-postfixpackage" />
- <param name="-nodefontsize" value="9" />
- <param name="-nodefontpackagesize" value="7" />
- <param name="-visibility" />
- </doclet>
- </javadoc>
- </target>
- <!-- =================================
- target: doxygen
- ================================= -->
- <target name="doxygen" depends="init, mkdir" description="--> Doxygen Begin run">
- <mkdir dir="${doc.output.dir}" />
- <mkdir dir="${doxygen.output.dir}" />
- <mkdir dir="${doxygen.output.dir}/html" />
-
- <taskdef name="doxygen" classname="org.doxygen.tools.DoxygenTask" classpathref="classpath" />
- <doxygen configFilename="${doxygen.cfg}">
- </doxygen>
- <move todir="${doxygen.output.dir}">
- <fileset dir="doxygen" />
- </move>
- <move todir="${doxygen.output.dir}">
- <fileset dir="${doxygen.output.dir}/html">
- <include name="**/*.chm" />
- </fileset>
- </move>
- </target>
这里就是生成的实际效果。
试用PMD来进行代码检查,对不符合代码规范的可以全部都检查出来,这样以后检查代码规范就可以轻松很多了。
- <!-- =================================
- target: check.pmd 代码检查
- ================================= -->
- <target name="check.pmd" depends="init, mkdir" description="--> check pmd">
- <delete dir="${pdm.output.dir}" />
- <mkdir dir="${pdm.output.dir}" />
- <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="classpath" />
- <pmd shortFilenames="true" targetjdk="1.6">
- <ruleset>basic,imports,unusedcode,naming,codesize,controversial,design</ruleset>
- <formatter type="text" toConsole="yes" />
- <formatter type="xml" toFile="${pdm.output.dir}/pmd-report.xml" linkPrefix="http://pmd.sourceforge.net/xref/" />
- <fileset refid="src" />
- </pmd>
-
- <xslt style="etc/pmd-report-per-class.xslt" in="${pdm.output.dir}/pmd-report.xml" out="${pdm.output.dir}/pmd-report.html">
- </xslt>
- </target>