|
|
@@ -84,303 +84,303 @@ import java.io.*; |
|
|
|
* @author <a href="sbailliez@imediation.com">Stephane Bailliez</a> |
|
|
|
*/ |
|
|
|
public class CovReport extends Task { |
|
|
|
/* |
|
|
|
jpcoverport [options] -output=file -snapshot=snapshot.jpc |
|
|
|
jpcovreport [options] [-paramfile=file] -output=<fileName> -snapshot=<fileName> |
|
|
|
|
|
|
|
Generate a report based on the indicated snapshot |
|
|
|
/* |
|
|
|
jpcoverport [options] -output=file -snapshot=snapshot.jpc |
|
|
|
jpcovreport [options] [-paramfile=file] -output=<fileName> -snapshot=<fileName> |
|
|
|
|
|
|
|
-paramfile=file |
|
|
|
A text file containing the report generation options. |
|
|
|
Generate a report based on the indicated snapshot |
|
|
|
|
|
|
|
-format=(html|text|xml) defaults to html |
|
|
|
The format of the generated report. |
|
|
|
-paramfile=file |
|
|
|
A text file containing the report generation options. |
|
|
|
|
|
|
|
-type=(executive|summary|detailed|verydetailed) defaults to detailed |
|
|
|
The type of report to be generated. For -format=xml, |
|
|
|
use -type=verydetailed to include source code lines. |
|
|
|
-format=(html|text|xml) defaults to html |
|
|
|
The format of the generated report. |
|
|
|
|
|
|
|
Note: A very detailed report can be VERY large. |
|
|
|
-type=(executive|summary|detailed|verydetailed) defaults to detailed |
|
|
|
The type of report to be generated. For -format=xml, |
|
|
|
use -type=verydetailed to include source code lines. |
|
|
|
|
|
|
|
-percent=num Min 1 Max 101 Default 101 |
|
|
|
An integer representing a percentage of coverage. |
|
|
|
Only methods with test case coverage less than the |
|
|
|
percentage are included in reports. |
|
|
|
Note: A very detailed report can be VERY large. |
|
|
|
|
|
|
|
-filters=string |
|
|
|
A comma-separated list of filters in the form |
|
|
|
<package>.<class>:V, where V can be I for Include or |
|
|
|
E for Exclude. For the default package, omit <package>. |
|
|
|
-percent=num Min 1 Max 101 Default 101 |
|
|
|
An integer representing a percentage of coverage. |
|
|
|
Only methods with test case coverage less than the |
|
|
|
percentage are included in reports. |
|
|
|
|
|
|
|
-filters_method=string |
|
|
|
Optional. A comma-separated list of methods that |
|
|
|
correspond one-to-one with the entries in -filters. |
|
|
|
-filters=string |
|
|
|
A comma-separated list of filters in the form |
|
|
|
<package>.<class>:V, where V can be I for Include or |
|
|
|
E for Exclude. For the default package, omit <package>. |
|
|
|
|
|
|
|
-output=string Must be specified |
|
|
|
The absolute path and file name for the generated |
|
|
|
report file. |
|
|
|
-filters_method=string |
|
|
|
Optional. A comma-separated list of methods that |
|
|
|
correspond one-to-one with the entries in -filters. |
|
|
|
|
|
|
|
-snapshot=string Must be specified |
|
|
|
The absolute path and file name of the snapshot file. |
|
|
|
-output=string Must be specified |
|
|
|
The absolute path and file name for the generated |
|
|
|
report file. |
|
|
|
|
|
|
|
-inc_src_text=(on|off) defaults to on |
|
|
|
Include text of the source code lines. |
|
|
|
Only applies for -format=xml and -type=verydetailed. |
|
|
|
-snapshot=string Must be specified |
|
|
|
The absolute path and file name of the snapshot file. |
|
|
|
|
|
|
|
-sourcepath=string defaults to . |
|
|
|
A semicolon-separated list of source paths. |
|
|
|
|
|
|
|
/* |
|
|
|
-inc_src_text=(on|off) defaults to on |
|
|
|
Include text of the source code lines. |
|
|
|
Only applies for -format=xml and -type=verydetailed. |
|
|
|
|
|
|
|
/** coverage home, mandatory */ |
|
|
|
private File home = null; |
|
|
|
|
|
|
|
/** format of generated report, optional */ |
|
|
|
private String format = null; |
|
|
|
|
|
|
|
/** the name of the output snapshot, mandatory */ |
|
|
|
private File tofile = null; |
|
|
|
|
|
|
|
/** type of report, optional */ |
|
|
|
private String type = null; |
|
|
|
|
|
|
|
/** threshold value for printing methods, optional */ |
|
|
|
private Integer percent = null; |
|
|
|
|
|
|
|
/** comma separated list of filters (???)*/ |
|
|
|
private String filters = null; |
|
|
|
|
|
|
|
/** name of the snapshot file to create report from */ |
|
|
|
private File snapshot = null; |
|
|
|
|
|
|
|
/** sourcepath to use */ |
|
|
|
private Path sourcePath = null; |
|
|
|
|
|
|
|
/** include the text for each line of code (xml report verydetailed)*/ |
|
|
|
private boolean includeSource = true; |
|
|
|
|
|
|
|
private Path coveragePath = null; |
|
|
|
|
|
|
|
/** */ |
|
|
|
private Reference reference = null; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Set the coverage home. it must point to JProbe coverage |
|
|
|
* directories where are stored native libraries and jars. |
|
|
|
*/ |
|
|
|
public void setHome(File value) { |
|
|
|
this.home = value; |
|
|
|
} |
|
|
|
|
|
|
|
public static class ReportFormat extends EnumeratedAttribute { |
|
|
|
public String[] getValues(){ |
|
|
|
return new String[]{"html", "text", "xml"}; |
|
|
|
} |
|
|
|
} |
|
|
|
/** set the format of the report html|text|xml*/ |
|
|
|
public void setFormat(ReportFormat value){ |
|
|
|
this.format = value.getValue(); |
|
|
|
} |
|
|
|
|
|
|
|
public static class ReportType extends EnumeratedAttribute { |
|
|
|
public String[] getValues(){ |
|
|
|
return new String[]{"executive", "summary", "detailed", "verydetailed"}; |
|
|
|
} |
|
|
|
} |
|
|
|
/** sets the report type executive|summary|detailed|verydetailed */ |
|
|
|
public void setType(ReportType value){ |
|
|
|
this.type = value.getValue(); |
|
|
|
} |
|
|
|
|
|
|
|
/** include source code lines. XML report only */ |
|
|
|
public void setIncludesource(boolean value){ |
|
|
|
this.includeSource = value; |
|
|
|
} |
|
|
|
|
|
|
|
/** sets the threshold printing method 0-100*/ |
|
|
|
public void setPercent(Integer value){ |
|
|
|
this.percent = value; |
|
|
|
} |
|
|
|
|
|
|
|
/** set the filters */ |
|
|
|
public void setFilters(String values){ |
|
|
|
this.filters = values; |
|
|
|
} |
|
|
|
|
|
|
|
public Path createSourcepath(){ |
|
|
|
if (sourcePath == null) { |
|
|
|
sourcePath = new Path(project); |
|
|
|
} |
|
|
|
return sourcePath.createPath(); |
|
|
|
} |
|
|
|
|
|
|
|
public void setSnapshot(File value){ |
|
|
|
this.snapshot = value; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the output snapshot file |
|
|
|
*/ |
|
|
|
public void setTofile(File value) { |
|
|
|
this.tofile = value; |
|
|
|
} |
|
|
|
|
|
|
|
//@todo to remove |
|
|
|
public Path createCoveragepath(){ |
|
|
|
if (coveragePath == null) { |
|
|
|
coveragePath = new Path(project); |
|
|
|
} |
|
|
|
return coveragePath.createPath(); |
|
|
|
} |
|
|
|
|
|
|
|
public Reference createReference(){ |
|
|
|
if (reference == null){ |
|
|
|
reference = new Reference(); |
|
|
|
} |
|
|
|
return reference; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public CovReport() { |
|
|
|
} |
|
|
|
|
|
|
|
/** check for mandatory options */ |
|
|
|
protected void checkOptions() throws BuildException { |
|
|
|
if (tofile == null) { |
|
|
|
throw new BuildException("'tofile' attribute must be set."); |
|
|
|
} |
|
|
|
if (snapshot == null) { |
|
|
|
throw new BuildException("'snapshot' attribute must be set."); |
|
|
|
} |
|
|
|
if (home == null) { |
|
|
|
throw new BuildException("'home' attribute must be set to JProbe home directory"); |
|
|
|
} |
|
|
|
home = new File(home,"Coverage"); |
|
|
|
File jar = new File(home, "coverage.jar"); |
|
|
|
if (!jar.exists()) { |
|
|
|
throw new BuildException("Cannot find Coverage directory: " + home); |
|
|
|
} |
|
|
|
if (reference != null && !"xml".equals(format)){ |
|
|
|
log("Ignored reference. It cannot be used in non XML report."); |
|
|
|
reference = null; // nullify it so that there is no ambiguity |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void execute() throws BuildException { |
|
|
|
checkOptions(); |
|
|
|
try { |
|
|
|
Commandline cmdl = new Commandline(); |
|
|
|
// we need to run Coverage from his directory due to dll/jar issues |
|
|
|
cmdl.setExecutable( new File(home, "jpcovreport").getAbsolutePath() ); |
|
|
|
String[] params = getParameters(); |
|
|
|
for (int i = 0; i < params.length; i++) { |
|
|
|
cmdl.createArgument().setValue(params[i]); |
|
|
|
} |
|
|
|
|
|
|
|
// use the custom handler for stdin issues |
|
|
|
LogStreamHandler handler = new LogStreamHandler(this,Project.MSG_INFO,Project.MSG_WARN); |
|
|
|
Execute exec = new Execute( handler ); |
|
|
|
log(cmdl.toString(), Project.MSG_VERBOSE); |
|
|
|
exec.setCommandline(cmdl.getCommandline()); |
|
|
|
int exitValue = exec.execute(); |
|
|
|
if (exitValue != 0) { |
|
|
|
throw new BuildException("JProbe Coverage Report failed (" + exitValue + ")"); |
|
|
|
} |
|
|
|
log("coveragePath: " + coveragePath, Project.MSG_VERBOSE); |
|
|
|
log("format: " + format, Project.MSG_VERBOSE); |
|
|
|
if (reference != null && "xml".equals(format)){ |
|
|
|
reference.createEnhancedXMLReport(); |
|
|
|
} |
|
|
|
|
|
|
|
} catch (IOException e){ |
|
|
|
throw new BuildException("Failed to execute JProbe Coverage Report.", e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected String[] getParameters(){ |
|
|
|
Vector v = new Vector(); |
|
|
|
if (format != null) { |
|
|
|
v.addElement("-format=" + format); |
|
|
|
} |
|
|
|
if (type != null) { |
|
|
|
v.addElement("-type=" + type); |
|
|
|
} |
|
|
|
if (percent != null) { |
|
|
|
v.addElement("-percent=" + percent); |
|
|
|
} |
|
|
|
if (filters != null) { |
|
|
|
v.addElement("-filters=" + filters); |
|
|
|
} |
|
|
|
v.addElement("-output=" + project.resolveFile(tofile.getPath())); |
|
|
|
v.addElement("-snapshot=" + project.resolveFile(snapshot.getPath())); |
|
|
|
// as a default -sourcepath use . in JProbe, so use project . |
|
|
|
if (sourcePath == null) { |
|
|
|
sourcePath = new Path(project); |
|
|
|
sourcePath.createPath().setLocation(project.resolveFile(".")); |
|
|
|
} |
|
|
|
v.addElement("-sourcepath=" + sourcePath); |
|
|
|
|
|
|
|
if ("verydetailed".equalsIgnoreCase(format) && "xml".equalsIgnoreCase(type)) { |
|
|
|
v.addElement("-inc_src_text=" + (includeSource ? "on" : "off")); |
|
|
|
} |
|
|
|
|
|
|
|
String[] params = new String[v.size()]; |
|
|
|
v.copyInto(params); |
|
|
|
return params; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public class Reference { |
|
|
|
protected Path classPath; |
|
|
|
protected ReportFilters filters; |
|
|
|
public Path createClasspath(){ |
|
|
|
if (classPath == null) { |
|
|
|
classPath = new Path(project); |
|
|
|
} |
|
|
|
return classPath.createPath(); |
|
|
|
} |
|
|
|
public ReportFilters createFilters(){ |
|
|
|
if (filters == null){ |
|
|
|
filters = new ReportFilters(); |
|
|
|
} |
|
|
|
return filters; |
|
|
|
} |
|
|
|
protected void createEnhancedXMLReport() throws BuildException { |
|
|
|
// we need a classpath element |
|
|
|
if (classPath == null){ |
|
|
|
throw new BuildException("Need a 'classpath' element."); |
|
|
|
} |
|
|
|
// and a valid one... |
|
|
|
String[] paths = classPath.list(); |
|
|
|
if (paths.length == 0){ |
|
|
|
throw new BuildException("Coverage path is invalid. It does not contain any existing path."); |
|
|
|
} |
|
|
|
// and we need at least one filter include/exclude. |
|
|
|
if (filters == null || filters.size() == 0){ |
|
|
|
createFilters(); |
|
|
|
log("Adding default include filter to *.*()", Project.MSG_VERBOSE); |
|
|
|
ReportFilters.Include include = new ReportFilters.Include(); |
|
|
|
filters.addInclude( include ); |
|
|
|
} |
|
|
|
try { |
|
|
|
log("Creating enhanced XML report", Project.MSG_VERBOSE); |
|
|
|
XMLReport report = new XMLReport(CovReport.this, tofile); |
|
|
|
report.setReportFilters(filters); |
|
|
|
report.setJProbehome( new File(home.getParent()) ); |
|
|
|
Document doc = report.createDocument(paths); |
|
|
|
TransformerFactory tfactory = TransformerFactory.newInstance(); |
|
|
|
Transformer transformer = tfactory.newTransformer(); |
|
|
|
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); |
|
|
|
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); |
|
|
|
Source src = new DOMSource(doc); |
|
|
|
Result res = new StreamResult( "file:///" + tofile.toString() ); |
|
|
|
transformer.transform(src, res); |
|
|
|
} catch (Exception e){ |
|
|
|
throw new BuildException("Error while performing enhanced XML report from file " + tofile, e); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
-sourcepath=string defaults to . |
|
|
|
A semicolon-separated list of source paths. |
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
/** coverage home, mandatory */ |
|
|
|
private File home = null; |
|
|
|
|
|
|
|
/** format of generated report, optional */ |
|
|
|
private String format = null; |
|
|
|
|
|
|
|
/** the name of the output snapshot, mandatory */ |
|
|
|
private File tofile = null; |
|
|
|
|
|
|
|
/** type of report, optional */ |
|
|
|
private String type = null; |
|
|
|
|
|
|
|
/** threshold value for printing methods, optional */ |
|
|
|
private Integer percent = null; |
|
|
|
|
|
|
|
/** comma separated list of filters (???)*/ |
|
|
|
private String filters = null; |
|
|
|
|
|
|
|
/** name of the snapshot file to create report from */ |
|
|
|
private File snapshot = null; |
|
|
|
|
|
|
|
/** sourcepath to use */ |
|
|
|
private Path sourcePath = null; |
|
|
|
|
|
|
|
/** include the text for each line of code (xml report verydetailed)*/ |
|
|
|
private boolean includeSource = true; |
|
|
|
|
|
|
|
private Path coveragePath = null; |
|
|
|
|
|
|
|
/** */ |
|
|
|
private Reference reference = null; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Set the coverage home. it must point to JProbe coverage |
|
|
|
* directories where are stored native libraries and jars. |
|
|
|
*/ |
|
|
|
public void setHome(File value) { |
|
|
|
this.home = value; |
|
|
|
} |
|
|
|
|
|
|
|
public static class ReportFormat extends EnumeratedAttribute { |
|
|
|
public String[] getValues(){ |
|
|
|
return new String[]{"html", "text", "xml"}; |
|
|
|
} |
|
|
|
} |
|
|
|
/** set the format of the report html|text|xml*/ |
|
|
|
public void setFormat(ReportFormat value){ |
|
|
|
this.format = value.getValue(); |
|
|
|
} |
|
|
|
|
|
|
|
public static class ReportType extends EnumeratedAttribute { |
|
|
|
public String[] getValues(){ |
|
|
|
return new String[]{"executive", "summary", "detailed", "verydetailed"}; |
|
|
|
} |
|
|
|
} |
|
|
|
/** sets the report type executive|summary|detailed|verydetailed */ |
|
|
|
public void setType(ReportType value){ |
|
|
|
this.type = value.getValue(); |
|
|
|
} |
|
|
|
|
|
|
|
/** include source code lines. XML report only */ |
|
|
|
public void setIncludesource(boolean value){ |
|
|
|
this.includeSource = value; |
|
|
|
} |
|
|
|
|
|
|
|
/** sets the threshold printing method 0-100*/ |
|
|
|
public void setPercent(Integer value){ |
|
|
|
this.percent = value; |
|
|
|
} |
|
|
|
|
|
|
|
/** set the filters */ |
|
|
|
public void setFilters(String values){ |
|
|
|
this.filters = values; |
|
|
|
} |
|
|
|
|
|
|
|
public Path createSourcepath(){ |
|
|
|
if (sourcePath == null) { |
|
|
|
sourcePath = new Path(project); |
|
|
|
} |
|
|
|
return sourcePath.createPath(); |
|
|
|
} |
|
|
|
|
|
|
|
public void setSnapshot(File value){ |
|
|
|
this.snapshot = value; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the output snapshot file |
|
|
|
*/ |
|
|
|
public void setTofile(File value) { |
|
|
|
this.tofile = value; |
|
|
|
} |
|
|
|
|
|
|
|
//@todo to remove |
|
|
|
public Path createCoveragepath(){ |
|
|
|
if (coveragePath == null) { |
|
|
|
coveragePath = new Path(project); |
|
|
|
} |
|
|
|
return coveragePath.createPath(); |
|
|
|
} |
|
|
|
|
|
|
|
public Reference createReference(){ |
|
|
|
if (reference == null){ |
|
|
|
reference = new Reference(); |
|
|
|
} |
|
|
|
return reference; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public CovReport() { |
|
|
|
} |
|
|
|
|
|
|
|
/** check for mandatory options */ |
|
|
|
protected void checkOptions() throws BuildException { |
|
|
|
if (tofile == null) { |
|
|
|
throw new BuildException("'tofile' attribute must be set."); |
|
|
|
} |
|
|
|
if (snapshot == null) { |
|
|
|
throw new BuildException("'snapshot' attribute must be set."); |
|
|
|
} |
|
|
|
if (home == null) { |
|
|
|
throw new BuildException("'home' attribute must be set to JProbe home directory"); |
|
|
|
} |
|
|
|
home = new File(home,"Coverage"); |
|
|
|
File jar = new File(home, "coverage.jar"); |
|
|
|
if (!jar.exists()) { |
|
|
|
throw new BuildException("Cannot find Coverage directory: " + home); |
|
|
|
} |
|
|
|
if (reference != null && !"xml".equals(format)){ |
|
|
|
log("Ignored reference. It cannot be used in non XML report."); |
|
|
|
reference = null; // nullify it so that there is no ambiguity |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void execute() throws BuildException { |
|
|
|
checkOptions(); |
|
|
|
try { |
|
|
|
Commandline cmdl = new Commandline(); |
|
|
|
// we need to run Coverage from his directory due to dll/jar issues |
|
|
|
cmdl.setExecutable( new File(home, "jpcovreport").getAbsolutePath() ); |
|
|
|
String[] params = getParameters(); |
|
|
|
for (int i = 0; i < params.length; i++) { |
|
|
|
cmdl.createArgument().setValue(params[i]); |
|
|
|
} |
|
|
|
|
|
|
|
// use the custom handler for stdin issues |
|
|
|
LogStreamHandler handler = new LogStreamHandler(this,Project.MSG_INFO,Project.MSG_WARN); |
|
|
|
Execute exec = new Execute( handler ); |
|
|
|
log(cmdl.toString(), Project.MSG_VERBOSE); |
|
|
|
exec.setCommandline(cmdl.getCommandline()); |
|
|
|
int exitValue = exec.execute(); |
|
|
|
if (exitValue != 0) { |
|
|
|
throw new BuildException("JProbe Coverage Report failed (" + exitValue + ")"); |
|
|
|
} |
|
|
|
log("coveragePath: " + coveragePath, Project.MSG_VERBOSE); |
|
|
|
log("format: " + format, Project.MSG_VERBOSE); |
|
|
|
if (reference != null && "xml".equals(format)){ |
|
|
|
reference.createEnhancedXMLReport(); |
|
|
|
} |
|
|
|
|
|
|
|
} catch (IOException e){ |
|
|
|
throw new BuildException("Failed to execute JProbe Coverage Report.", e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected String[] getParameters(){ |
|
|
|
Vector v = new Vector(); |
|
|
|
if (format != null) { |
|
|
|
v.addElement("-format=" + format); |
|
|
|
} |
|
|
|
if (type != null) { |
|
|
|
v.addElement("-type=" + type); |
|
|
|
} |
|
|
|
if (percent != null) { |
|
|
|
v.addElement("-percent=" + percent); |
|
|
|
} |
|
|
|
if (filters != null) { |
|
|
|
v.addElement("-filters=" + filters); |
|
|
|
} |
|
|
|
v.addElement("-output=" + project.resolveFile(tofile.getPath())); |
|
|
|
v.addElement("-snapshot=" + project.resolveFile(snapshot.getPath())); |
|
|
|
// as a default -sourcepath use . in JProbe, so use project . |
|
|
|
if (sourcePath == null) { |
|
|
|
sourcePath = new Path(project); |
|
|
|
sourcePath.createPath().setLocation(project.resolveFile(".")); |
|
|
|
} |
|
|
|
v.addElement("-sourcepath=" + sourcePath); |
|
|
|
|
|
|
|
if ("verydetailed".equalsIgnoreCase(format) && "xml".equalsIgnoreCase(type)) { |
|
|
|
v.addElement("-inc_src_text=" + (includeSource ? "on" : "off")); |
|
|
|
} |
|
|
|
|
|
|
|
String[] params = new String[v.size()]; |
|
|
|
v.copyInto(params); |
|
|
|
return params; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public class Reference { |
|
|
|
protected Path classPath; |
|
|
|
protected ReportFilters filters; |
|
|
|
public Path createClasspath(){ |
|
|
|
if (classPath == null) { |
|
|
|
classPath = new Path(CovReport.this.project); |
|
|
|
} |
|
|
|
return classPath.createPath(); |
|
|
|
} |
|
|
|
public ReportFilters createFilters(){ |
|
|
|
if (filters == null){ |
|
|
|
filters = new ReportFilters(); |
|
|
|
} |
|
|
|
return filters; |
|
|
|
} |
|
|
|
protected void createEnhancedXMLReport() throws BuildException { |
|
|
|
// we need a classpath element |
|
|
|
if (classPath == null){ |
|
|
|
throw new BuildException("Need a 'classpath' element."); |
|
|
|
} |
|
|
|
// and a valid one... |
|
|
|
String[] paths = classPath.list(); |
|
|
|
if (paths.length == 0){ |
|
|
|
throw new BuildException("Coverage path is invalid. It does not contain any existing path."); |
|
|
|
} |
|
|
|
// and we need at least one filter include/exclude. |
|
|
|
if (filters == null || filters.size() == 0){ |
|
|
|
createFilters(); |
|
|
|
log("Adding default include filter to *.*()", Project.MSG_VERBOSE); |
|
|
|
ReportFilters.Include include = new ReportFilters.Include(); |
|
|
|
filters.addInclude( include ); |
|
|
|
} |
|
|
|
try { |
|
|
|
log("Creating enhanced XML report", Project.MSG_VERBOSE); |
|
|
|
XMLReport report = new XMLReport(CovReport.this, tofile); |
|
|
|
report.setReportFilters(filters); |
|
|
|
report.setJProbehome( new File(home.getParent()) ); |
|
|
|
Document doc = report.createDocument(paths); |
|
|
|
TransformerFactory tfactory = TransformerFactory.newInstance(); |
|
|
|
Transformer transformer = tfactory.newTransformer(); |
|
|
|
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); |
|
|
|
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); |
|
|
|
Source src = new DOMSource(doc); |
|
|
|
Result res = new StreamResult( "file:///" + tofile.toString() ); |
|
|
|
transformer.transform(src, res); |
|
|
|
} catch (Exception e){ |
|
|
|
throw new BuildException("Error while performing enhanced XML report from file " + tofile, e); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |