<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define">
<title>${project.name}</title>
body table, td, th, p, h1, h2 {
background-color: #ffffff;
border-bottom:none 1px #999999;
background-color:#f0f0f0;
background-color:#f0f0f0;
font: italic bold 110% 'Avenir Next';
background-color:#E0E0E0;
font: normal normal 90% Courier New,
div.content, div.header {
table.border, th.border, td.border {
border-collapse:collapse;
<j:set var="spc" value="&nbsp;&nbsp;" />
<j:when test="${build.result=='SUCCESS'}">
<img src="${rooturl}static/e59dfe28/images/32x32/green.gif" />
<j:when test="${build.result=='FAILURE'}">
<img src="${rooturl}static/e59dfe28/images/32x32/red.gif" />
<j:when test="${build.result=='UNSTABLE'}">
<img src="${rooturl}static/e59dfe28/images/32x32/yellow.gif" />
<img src="${rooturl}static/e59dfe28/images/32x32/green.gif" />
<j:when test="${empty(build.result)}">
<b style="font-size: 170%;">BUILD SUCCESS</b>
<b style="font-size: 170%;">BUILD ${build.result}</b>
<td><b>Build URL</b></td>
<a href="${rooturl}${build.url}">${rooturl}${build.url}</a>
<td><b>Date of build:</b></td>
<td>${it.timestampString}</td>
<td><b>Build duration:</b></td>
<td>${build.durationString}</td>
<td><b>Build cause:</b></td>
<j:forEach var="cause" items="${build.causes}">${cause.shortDescription}
<j:forEach var="changeSet" items="${build.changeSets}" varStatus="loop" begin="0" end="1"/>
<!--j:set var="changeSet" value="${build.changeSet}[0]" / -->
<j:if test="${changeSet!=null}">
<j:set var="hadChanges" value="false" />
<TR><TD class="bg1" colspan="2"><a href="${rooturl}${build.url}/changes">
<j:forEach var="cs" items="${changeSet}" varStatus="loop">
<j:set var="hadChanges" value="true" />
<j:set var="aUser" value="${cs.hudsonUser}"/>
<TD colspan="2" class="bg2">${spc}Revision <B>${cs.commitId?:cs.revision?:cs.changeNumber}</B> by
<B>${aUser!=null?aUser.displayName:cs.author.displayName}: </B>
<B>(${cs.msgAnnotated})</B>
<j:forEach var="p" items="${cs.affectedFiles}">
<TD width="10%">${spc}${p.editType.name}</TD>
<j:if test="${!hadChanges}">
<TR><TD colspan="2">No Changes</TD></TR>
<j:set var="healthIconSize" value="16x16" />
<j:set var="healthReports" value="${project.buildHealthReports}" />
<j:if test="${healthReports!=null}">
<j:forEach var="healthReport" items="${healthReports}">
src="${rooturl}${healthReport.getIconUrl(healthIconSize)}" />
<td>${healthReport.description}</td>
<td>${healthReport.score}</td>
<j:set var="junitResultList" value="${it.JUnitTestResult}" />
<j:if test="${junitResultList.isEmpty()!=true}">
<j:forEach var="testResult" items="${junitResultList}">
<j:set var="failCount" value="${failCount + testResult.getFailCount()}"/>
<j:set var="skipCount" value="${skipCount + testResult.getSkipCount()}"/>
<j:set var="passCount" value="${passCount + testResult.getPassCount()}"/>
<a href="${rooturl}${build.url}/testReport">
<span style="color: green">Passed: ${passCount}</span>,
<span style="color: #ff0000">Failed: ${failCount}</span>,
<span style="color: grey">Ignored: ${skipCount}</span>
<img alt="[Test result trend chart]" src="${rooturl}${project.url}/test/trend?failureOnly=false" usemap="#map0" />
<th class="border">Package</th>
<th class="border">Failed</th>
<th class="border">Passed</th>
<th class="border">Skipped</th>
<th class="border">Total</th>
<j:forEach var="junitResult" items="${it.JUnitTestResult}">
<j:forEach var="packageResult" items="${junitResult.getChildren()}">
<tt>${packageResult.getName()}</tt>
<td class="border test_failed">${packageResult.getFailCount()}</td>
<td class="border test_passed">${packageResult.getPassCount()}</td>
<td class="border test_skipped">${packageResult.getSkipCount()}</td>
<b>${packageResult.getPassCount()+packageResult.getFailCount()+packageResult.getSkipCount()}
<j:forEach var="failed_test"
items="${packageResult.getFailedTests()}">
<td class="test_failed" colspan="5">
<tt>${failed_test.getFullName()}</tt>
<!-- COBERTURA TEMPLATE -->
<j:set var="coberturaAction" value="${it.coberturaAction}" />
<j:if test="${coberturaAction!=null}">
<j:set var="coberturaResult" value="${coberturaAction.result}" />
<j:if test="${coberturaResult!=null}">
<a href="${rooturl}${build.url}/cobertura">
<h1>Cobertura Report</h1>
<h2>Project Coverage Summary</h2>
<img src="${rooturl}${build.url}cobertura/graph" />
<h3>Project Coverage summary</h3>
<th class="border">Name</th>
<j:forEach var="metric" items="${coberturaResult.metrics}">
<th class="border">${metric.name}</th>
<td class="border">${coberturaResult.name}</td>
<j:forEach var="metric" items="${coberturaResult.metrics}">
data="${coberturaResult.getCoverage(metric).percentageFloat}">${coberturaResult.getCoverage(metric).percentage}%
(${coberturaResult.getCoverage(metric)})
<j:if test="${coberturaResult.sourceCodeLevel}">
<j:when test="${coberturaResult.sourceFileAvailable}">
<div style="overflow-x:scroll;">
<th colspan="3">${coberturaResult.relativeSourcePath}
${coberturaResult.sourceFileContent}
<i>Source code is unavailable</i>
<j:forEach var="element" items="${coberturaResult.childElements}">
<j:set var="childMetrics"
value="${coberturaResult.getChildMetrics(element)}" />
<h2>Coverage Breakdown by ${element.displayName}</h2>
<th class="border">Name</th>
<j:forEach var="metric" items="${childMetrics}">
<th class="border">${metric.name}</th>
<j:forEach var="c" items="${coberturaResult.children}">
<j:set var="child" value="${coberturaResult.getChild(c)}" />
${child.xmlTransform(child.name)}
<j:forEach var="metric" items="${childMetrics}">
<j:set var="childResult" value="${child.getCoverage(metric)}" />
<j:when test="${childResult!=null}">
<td class="border" data="${childResult.percentageFloat}">${childResult.percentage}%
<td class="border" data="101">N/A</td>
<j:set var="actions" value="${it.staticAnalysisActions}" />
<j:if test="${!actions.isEmpty()}">
<h1>Static Analysis Results</h1>
<j:forEach var="action" items="${actions}">
<img src="${rooturl}${action.smallImageName}" />
<a href="${rooturl}${build.url}/${action.urlName}">${action.displayName}</a>
<j:when test="${action.result.pluginResult=='SUCCESS'}">
<img src="${rooturl}static/e59dfe28/images/16x16/blue.gif" />
<j:when test="${action.result.pluginResult=='FAILURE'}">
<img src="${rooturl}static/e59dfe28/images/16x16/red.gif" />
<img src="${rooturl}static/e59dfe28/images/16x16/yellow.gif" />
<td class="center">${action.result.numberOfAnnotations} </td>
<td class="center">${action.result.getNumberOfAnnotations('HIGH')} </td>
<td class="center">${action.result.getNumberOfAnnotations('NORMAL')} </td>
<td class="center">${action.result.getNumberOfAnnotations('LOW')} </td>
<!-- clangScan Analysis -->
<j:set var="clangScanAction" value='${it.getAction("jenkins.plugins.clangscanbuild.actions.ClangScanBuildAction")}' />
<j:if test="${clangScanAction!=null}">
<a href="${rooturl}${build.url}clangScanBuildBugs">
<h1>Clang Scan Static Analysis Results</h1>
<img lazymap="${rooturl}${project.url}clangScanBuildTrend/graph" alt="[Clang Scan Static Analysis Results trend chart]" src="${rooturl}${project.url}clangScanBuildTrend/graph" usemap="#map0" />
<j:set var="summary" value="${clangScanAction.loadBugSummary()}" />
<p> There are ${summary.getBugCount()} clang Scan bugs </p>
<j:if test="${summary.getBugCount() !=0 }">
<table border="1px" class="pane">
<j:forEach var="clangBug" items="${summary.getBugs()}">
<j:when test="${clangBug.isNewBug()}">
<j:set var="isNew" value="new" />
<j:set var="isNew" value="" />
<td>${clangBug.getSourceFile()}</td>
<td>${clangBug.getBugType()}</td>
<td>${clangBug.getBugCategory()}</td>
<td>${clangBug.getBugDescription()}</td>
<a href="${rooturl}${build.url}/clangScanBuildBugs/browse/${clangBug.getReportFile()}#EndPath"> detail </a>
<j:set var="artifacts" value="${build.artifacts}" />
<j:if test="${artifacts!=null and artifacts.size()>0}">
<j:forEach var="f" items="${artifacts}">
<a href="${rooturl}${build.url}artifact/${f}">${f}</a>
<j:set var="mbuilds" value="${build.moduleBuilds}" />
<j:if test="${mbuilds!=null}">
<j:forEach var="m" items="${mbuilds}">
<h2>${m.key.displayName}</h2>
<j:forEach var="mvnbld" items="${m.value}">
<j:set var="artifacts" value="${mvnbld.artifacts}" />
<j:if test="${artifacts!=null and artifacts.size()>0}">
<j:forEach var="f" items="${artifacts}">
<a href="${rooturl}${mvnbld.url}artifact/${f}">${f}</a>