- 浏览: 47912 次
- 性别:
- 来自: 深圳
最新评论
-
txyhl:
给我也发一份吧,谢谢!
txyhl@126.com
CruiseControl(QA) -
wufengjun:
大侠好,最近我也在研究持续集成,但是我找不到这两个jar包,请 ...
CruiseControl(QA)
相关资料:http://confluence.public.thoughtworks.org/display/CC/Home
1:在X:\cruisecontrol-bin-2.8.4\webapps\cruisecontrol目录的main.jsp中添加:
2:新建findbugs.jsp文件
3:在cruisecontrol.css添加格式信息:
4:在xsl目录下创建findbugs-details.xsl:
5:在buildresults.xsl中修改下面这两段 分别是findbugs的总结报告和结果标签:
6:在xsl文件夹下创建findbugs.xsl
7:编辑metrics.jsp页面添加findbugs统计图表:
1:在X:\cruisecontrol-bin-2.8.4\webapps\cruisecontrol目录的main.jsp中添加:
<cruisecontrol:tabsheet> <cruisecontrol:tab name="buildResults" label="Build Results" > <%@ include file="buildresults.jsp" %> </cruisecontrol:tab> <cruisecontrol:tab name="findbugs" label="FindBugs" > <%@ include file="findbugs.jsp" %> </cruisecontrol:tab>
2:新建findbugs.jsp文件
<%@ taglib uri="/WEB-INF/cruisecontrol-jsp11.tld" prefix="cruisecontrol"%> <cruisecontrol:xsl xslFile="/xsl/findbugs-details.xsl"/>
3:在cruisecontrol.css添加格式信息:
.findbugs-oddrow { background-color:#CCCCCC } .findbugs-data { font-family:arial,helvetica,sans-serif; font-size:8pt; color:#000000; } .findbugs-sectionheader { background-color:#000066; font-family:arial,helvetica,sans-serif; font-size:10pt; color:#FFFFFF; } .findbugs-tablerow0 { font-family:arial,helvetica,sans-serif; font-size:8pt; color:#000000; background-color: #FFFFFF; } .findbugs-tablerow1 { font-family:arial,helvetica,sans-serif; font-size:8pt; color:#000000; background- color:#CCCCCC; } .findbugs-detailrow0 { font-family:arial,helvetica,sans-serif; font-size:8pt; color:#000000; background-color: #FFFFFF; } .findbugs-detailrow1 { font-family:arial,helvetica,sans-serif; font-size:8pt; color:#000000; background- color:#CCCCCC; } .findbugs-tableheader { font-family:arial,helvetica,sans-serif; font-size:9pt; font-weight: bold; color:#000080; background-color:#CCDDDD; } .findbugs-warningtable tr.findbugs-tablerow0:hover, .findbugs-warningtable tr.findbugs-tablerow1:hover { background-color: #aaffaa; } .findbugs-priority-1 { color: red; font-weight: bold; } .findbugs-priority-2 { color: orange; font-weight: bold; } .findbugs-priority-3 { color: green; font-weight: bold; } .findbugs-priority-4 { color: blue; font-weight: bold; }
4:在xsl目录下创建findbugs-details.xsl:
<?xml version="1.0" encoding="UTF-8"?> <!-- FindBugs - Find bugs in Java programs Copyright (C) 2004,2005 University of Maryland Copyright (C) 2005, Chris Nappin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --> <!-- A simple XSLT stylesheet to transform FindBugs XML results annotated with messages into HTML. If you want to experiment with modifying this stylesheet, or write your own, you need to generate XML output from FindBugs using a special option which lets it know to include human-readable messages in the XML. Invoke the findbugs script as follows: findbugs -textui -xml:withMessages -project myProject.fb > results.xml Then you can use your favorite XSLT implementation to transform the XML output into HTML. (But don't use xsltproc. It generates well-nigh unreadable output, and generates incorrect output for the <script> element.) Authors: David Hovemeyer Chris Nappin (summary table) Nicholas Cull (adapted for CruiseControl) --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" /> <xsl:template match="/"> <xsl:apply-templates select="." mode="findbugs"/> </xsl:template> <xsl:template match="/" mode="findbugs"> <xsl:variable name="unique-catkey" select="/cruisecontrol/BugCollection/BugCategory/@category"/> <script type="text/javascript"> function toggleRow(elid) { if (document.getElementById) { element = document.getElementById(elid); if (element) { if (element.style.display == 'none') { element.style.display = 'block'; //window.status = 'Toggle on!'; } else { element.style.display = 'none'; //window.status = 'Toggle off!'; } } } } </script> <xsl:if test="count(cruisecontrol/BugCollection) = 0"> FindBugs was not run against this project. </xsl:if> <xsl:if test="count(cruisecontrol/BugCollection) > 0"> <table class="header" align="center" border="0" cellpadding="8" cellspacing="0" width="98%"> <tr> <th class="big">FindBugs Report</th> </tr> </table> <table align="center" cellpadding="8" cellspacing="0" border="0" width="98%"> <tr> <td class="findbugs-sectionheader">Metrics</td> </tr> <xsl:apply-templates select="/cruisecontrol/BugCollection/FindBugsSummary" mode="findbugs"/> <tr> <td> </td> </tr> <tr> <td class="findbugs-sectionheader">Summary</td> </tr> <tr> <td> <table width="500" cellpadding="5" cellspacing="2"> <tr class="findbugs-tableheader"> <th align="left">Warning Type</th> <th align="right">Number</th> </tr> <xsl:for-each select="$unique-catkey"> <xsl:sort select="." order="ascending"/> <xsl:variable name="catkey" select="."/> <xsl:variable name="catdesc" select="/cruisecontrol/BugCollection/BugCategory [@category=$catkey]/Description"/> <xsl:variable name="styleclass"> <xsl:choose> <xsl:when test="position() mod 2 = 1">findbugs-tablerow0</xsl:when> <xsl:otherwise>findbugs-tablerow1</xsl:otherwise> </xsl:choose> </xsl:variable> <tr class="{$styleclass}"> <td><xsl:value-of select="$catdesc"/> Warnings</td> <td align="right"><xsl:value-of select="count (/cruisecontrol/BugCollection/BugInstance[@category=$catkey])"/></td> </tr> </xsl:for-each> <xsl:variable name="styleclass"> <xsl:choose> <xsl:when test="count($unique-catkey) mod 2 = 0">findbugs-tablerow0</xsl:when> <xsl:otherwise>findbugs-tablerow1</xsl:otherwise> </xsl:choose> </xsl:variable> <tr class="{$styleclass}"> <td><b>Total</b></td> <td align="right"><b><xsl:value-of select="count (/cruisecontrol/BugCollection/BugInstance)"/></b></td> </tr> </table> </td> </tr> <tr> <td> </td> </tr> <tr> <td class="findbugs-sectionheader">Warnings</td> </tr> <tr class="findbugs-tablerow0"> <td>Click on a warning row to see full context information.</td> </tr> <tr> <td> <table align="center" cellpadding="8" cellspacing="0" border="0" width="98%"> <xsl:for-each select="$unique-catkey"> <xsl:sort select="." order="ascending"/> <xsl:variable name="catkey" select="."/> <xsl:variable name="catdesc" select="/cruisecontrol/BugCollection/BugCategory [@category=$catkey]/Description"/> <xsl:call-template name="generateWarningTable"> <xsl:with-param name="warningSet" select="/cruisecontrol/BugCollection/BugInstance [@category=$catkey]"/> <xsl:with-param name="sectionTitle"><xsl:value-of select="$catdesc"/> Warnings</xsl:with-param> <xsl:with-param name="sectionId">Warnings_<xsl:value-of select="$catkey"/></xsl:with-param> </xsl:call-template> </xsl:for-each> </table> </td> </tr> <tr> <td> </td> </tr> <tr> <td class="findbugs-sectionheader"><a name="Details">Details</a></td> </tr> <xsl:apply-templates select="/cruisecontrol/BugCollection/BugPattern" mode="findbugs"> <xsl:sort select="@abbrev"/> <xsl:sort select="ShortDescription"/> </xsl:apply-templates> <tr> <td> </td> </tr> </table> </xsl:if> </xsl:template> <xsl:template match="BugInstance" mode="findbugs"> <xsl:variable name="warningId"><xsl:value-of select="generate-id()"/></xsl:variable> <tr class="findbugs-tablerow{position() mod 2}" onclick="toggleRow('{$warningId}');"> <td> <span> <xsl:attribute name="class">findbugs-priority-<xsl:value-of select="@priority"/></xsl:attribute> <xsl:value-of select="@abbrev"/> </span> </td> <td> <xsl:value-of select="LongMessage"/> </td> </tr> <!-- Add bug annotation elements: Class, Method, Field, SourceLine, Field --> <tr class="findbugs-detailrow{position() mod 2}"> <td/> <td> <p id="{$warningId}" style="display: none;"> Bug type <xsl:value-of select="@type"/> <xsl:for-each select="./*/Message"> <br/><xsl:value-of select="text()" disable-output-escaping="no"/> </xsl:for-each> </p> </td> </tr> </xsl:template> <xsl:template match="BugPattern" mode="findbugs"> <tr> <td> <table width="100%" cellspacing="0"> <tr class="findbugs-tableheader"> <td><a name="{@type}"><xsl:value-of select="@type"/>: <xsl:value-of select="ShortDescription"/></a></td> </tr> <tr> <td class="findbugs-tablerow0"> <xsl:value-of select="Details" disable-output-escaping="yes"/> </td> </tr> </table> </td> </tr> </xsl:template> <xsl:template name="generateWarningTable"> <xsl:param name="warningSet"/> <xsl:param name="sectionTitle"/> <xsl:param name="sectionId"/> <tr> <td class="findbugs-sectionheader"> <a name="{$sectionId}"><xsl:value-of select="$sectionTitle"/></a> </td> </tr> <tr> <td> <table class="findbugs-warningtable" width="100%" cellspacing="0"> <tr class="findbugs-tableheader"> <th align="left">Code </th> <th align="left">Warning</th> </tr> <xsl:apply-templates select="$warningSet" mode="findbugs"> <xsl:sort select="@abbrev"/> <xsl:sort select="Class/@classname"/> </xsl:apply-templates> </table> </td> </tr> </xsl:template> <xsl:template match="FindBugsSummary" mode="findbugs"> <xsl:variable name="kloc" select="@total_size div 1000.0"/> <xsl:variable name="format" select="'#######0.00'"/> <tr class="findbugs-tablerow0"> <td> <xsl:value-of select="@total_size"/> lines of code analysed, in <xsl:value-of select="@total_classes"/> classes, in <xsl:value-of select="@num_packages"/> packages. </td> </tr> <tr> <td> <table width="500" cellpadding="5" cellspacing="2"> <tr class="findbugs-tableheader"> <th align="left">Metric</th> <th align="right">Total</th> <th align="right">Density*</th> </tr> <tr class="findbugs-tablerow0"> <td>High Priority Warnings</td> <td align="right"><xsl:value-of select="@priority_1"/></td> <td align="right"><xsl:value-of select="format-number(@priority_1 div $kloc, $format)"/></td> </tr> <tr class="findbugs-tablerow1"> <td>Medium Priority Warnings</td> <td align="right"><xsl:value-of select="@priority_2"/></td> <td align="right"><xsl:value-of select="format-number(@priority_2 div $kloc, $format)"/></td> </tr> <xsl:if test="@priority_3"> <tr class="findbugs-tablerow0"> <td>Low Priority Warnings</td> <td align="right"><xsl:value-of select="@priority_3"/></td> <td align="right"><xsl:value-of select="format-number(@priority_3 div $kloc, $format)"/></td> </tr> </xsl:if> <xsl:variable name="totalClass"> <xsl:choose> <xsl:when test="@priority_3"><xsl:text>findbugs-tablerow1</xsl:text></xsl:when> <xsl:otherwise><xsl:text>findbugs-tablerow0</xsl:text></xsl:otherwise> </xsl:choose> </xsl:variable> <tr class="{$totalClass}"> <td><b>Total Warnings</b></td> <td align="right"><b><xsl:value-of select="@total_bugs"/></b></td> <td align="right"><b><xsl:value-of select="format-number(@total_bugs div $kloc, $format)"/></b></td> </tr> </table> </td> </tr> <tr class="findbugs-tablerow0"> <td><i>(* Defects per Thousand lines of non-commenting source statements)</i></td> </tr> </xsl:template> </xsl:stylesheet>
5:在buildresults.xsl中修改下面这两段 分别是findbugs的总结报告和结果标签:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="maven.xsl"/> <xsl:import href="nant.xsl"/> <xsl:import href="checkstyle.xsl"/> <xsl:import href="pmd.xsl"/> <xsl:import href="findbugs.xsl"/> . . . <xsl:template match="/"> <p><xsl:apply-templates select="$cruisecontrol.list" mode="maven"/></p> <p><xsl:apply-templates select="$cruisecontrol.list" mode="nant"/></p> <p><xsl:apply-templates select="$cruisecontrol.list" mode="checkstyle"/></p> <p><xsl:apply-templates select="$cruisecontrol.list" mode="pmd"/></p> <p><xsl:apply-templates select="$cruisecontrol.list" mode="findbugs"/></p> .
6:在xsl文件夹下创建findbugs.xsl
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <!-- Any FindBugs error with a priority below this threshold are considered warnings and not errors --> <xsl:param name="findbugs.warning.threshold" select="3"/> <xsl:template match="/" mode="findbugs"> <xsl:apply-templates select="/cruisecontrol/BugCollection" mode="findbugs"/> </xsl:template> <xsl:template match="BugCollection" mode="findbugs"> <xsl:variable name="total.error.count" select="count(BugInstance[@priority < $findbugs.warning.threshold])" /> <xsl:variable name="total.warning.count" select="count(BugInstance)" /> <table align="center" cellpadding="2" cellspacing="0" border="0" width="98%"> <colgroup> <col width="45%"></col> <col width="5%"></col> <col width="50%"></col> </colgroup> <tr> <td class="findbugs-sectionheader" colspan="3"> FindBugs errors/warnings (<xsl:value-of select="$total.error.count"/> / <xsl:value-of select="$total.warning.count"/>) </td> </tr> <xsl:for-each select="BugInstance"> <tr> <xsl:if test="position() mod 2 = 1"> <xsl:attribute name="class">findbugs-oddrow</xsl:attribute> </xsl:if> <td class="findbugs-data"><xsl:value-of select="Class/@classname" /></td> <td class="findbugs-data" align="right"><xsl:value-of select="SourceLine[1]/@start" /></td> <td class="findbugs-data"><xsl:value-of select="ShortMessage/text()" /></td> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template match="*" mode="findbugs"/> <xsl:template match="/"> <xsl:apply-templates select="." mode="findbugs"/> </xsl:template> </xsl:stylesheet>
7:编辑metrics.jsp页面添加findbugs统计图表:
<jsp:useBean id="xpathData" class="net.sourceforge.cruisecontrol.chart.XPathChartData" /> <% xpathData.add("CheckStyle", "count(/cruisecontrol/checkstyle/file/error)"); xpathData.add("PMD", "count(/cruisecontrol/pmd/file/violation)"); xpathData.add("FindBugs", "count(/cruisecontrol/BugCollection/BugInstance)"); xpathData.add("Javadoc", "count(/cruisecontrol/build//target/task[@name='javadoc']/message[@priority='warn' or @priority='error'])"); %>
发表评论
-
JavaMail--使用POP3接收邮件
2012-12-28 11:42 1363引用关键技术: javax.mail.Store:该类实现特定 ... -
JavaMail--发送带附件的邮件
2012-12-28 11:40 1127引用关键技术: 发送带 ... -
JavaMail--使用SMTP协议发送简单邮件
2012-12-28 11:39 975引用关键技术: javax.mail.Session:定义了一 ... -
JavaMail--给多人发送邮件
2012-12-28 11:29 958package book.email; import ... -
持续集成
2011-12-06 17:25 1330持续集成——敏捷开发之最佳实践 摘要:可回归性和敏捷性相辅相 ... -
CruiseControl构建时格林威治时间改为北京时间
2011-09-13 17:47 963找到net.sourceforge.cruisecontrol ... -
CruiseControl(QA)
2011-04-28 20:05 14171:ANT部署weblogic时出现Outofmemory: ... -
CruiseControl 实践(三)
2011-04-28 16:47 1343java160.home=C:/Program Files ... -
CruiseControl 实践(二)
2011-04-28 16:46 1209<?xml version="1.0&qu ... -
CruiseControl 实践(一)
2011-04-28 16:44 1212config.xml文件: <cruisecontr ... -
CruiseControl—(配置环境及配置文件介绍)
2011-04-28 16:39 1121CruiseControl简介: CruiseCont ...
相关推荐
主题:持续集成及CruiseControl技术交流 在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持续集成(Continuous Integration,CI)起到重要作用。持续集成能够解决研发工作中的80%任务(日常),...
[CruiseControl]binary安装和启动
cruisecontrol配置定时运行
CruiseControl简介及使用举例
CruiseControl.NET 是 .NET...CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。
cruisecontrol配置文件,很实用
CruiseControl-2.8.4.exe
cruisecontrol简介
cruisecontrol、ant、svn持续集成 己两个多星期以来对持续集成的概念和应用有了一些了解。下面主要对自己配置持续集成的环境进行总结。(看上去简单,但是对我开始对持续集成都没什么了解的人来说确实费了不少周折)
cruisecontrol+maven2配置做持续集成
CruiseControl.NET-1.4.4-Setup.exe
CruiseControl.NET-CCTray-1.8.4.0-Setup.exe
CruiseControl笔记,详细介绍了CruiseControl。net的配置,希望对大家有所帮助
1.认识CruiseControl 2.CruiseControl的安装 3. CruiseControl的配置 4.总结
With the emergence of vehicle-to-vehicle communi-cation technology, cooperative adaptive cruise control (CACC) cars can be expected in the near future. In this paper, novel criteria for string ...
CruiseControl.NET-CCTray-1.5.6804.1-Setup
而现在,CruiseControl已发展成为一个家族式系统,包括CruiseControl.java、CruiseControl.net、CruiseControl.ruby等适应不同语言环境的实现,其强大的插件和扩展能力也是诸多同类系统无法比你的。而在这里,我只...
pyant and cruisecontrol
CruiseControl.NET-1.8.2.0-Setup.exe ccnet 服务端
剖析CruiseControl:在没有应用持续集成之前,传统的开发模式是项目一开始就划分模块,然后等所有的代码都开发完成之后再集成到一起进行测试,软件规模也在扩大,软件需求越来越复杂,软件已经不能简单地通过划分...