XSLT Code Coverage using Saxon trace output?
Added by Anubhuti Gautam 8 months ago
Hi Folks,
I am able to get the trace in an xml using Saxon. I am looking to get the code coverage of my XSLT which is being run & for which the trace is generated. Final output needed is to know the number of lines/total Lines *100.
Can someone help here if that has already been achieved. Or if there is an alternate approach apart from Saxon.
Replies (7)
Please register to reply
RE: XSLT Code Coverage using Saxon trace output? - Added by Michael Kay 8 months ago
We don't have a tool that does this directly.
You might find that the timing profile (-TL) gives you output that is more geared towards this requirement than the regular -T output - at any rate, it gives you execution counts for every top-level template and function.
If you don't mind doing some coding, you could write your own TraceListener, using the TimingTraceListener as a guide, to give output that is more focused on your requirement.
Amanda Galtman seems to have been trying to achieve similar things: see the issue she raised at https://saxonica.plan.io/issues/6302. I think she has been trying to put the output of -T tracing through an XML parser, and hitting problems because it isn't actually well-formed XML - it makes no attempt, for example, to close element tags properly in the event of a try/catch being executed.
RE: XSLT Code Coverage using Saxon trace output? - Added by Anubhuti Gautam 8 months ago
using -TL command gives error - Command line option -TL is not recognized.
my command looks something like this : java -jar c:\SaxonEE\SaxonEE12-4J\saxon-ee-12.4.jar -opt:0 -TL -Tlevel:high -xsl:transform.xsl -s:input.xml -o:output.xml 2>trace-transform.xml
Also one more question : why the -TP:trace.html & 2>trace-transform.xml does not work together
RE: XSLT Code Coverage using Saxon trace output? - Added by Michael Kay 8 months ago
Sorry, I meant -TP.
When you say these options don't work together, what results would you expect and how does it fail?
RE: XSLT Code Coverage using Saxon trace output? - Added by Anubhuti Gautam 8 months ago
Here I expect the trace to be written in an xml which is done using 2>trace-transform.xml The Profiling details on how much time spent on each xsl is done using -TP:trace.html
When I used these 2 together, it gives an error while if used individually, I get trace as well as Profiling.
RE: XSLT Code Coverage using Saxon trace output? - Added by Martin Honnen 8 months ago
Can you tell us exactly which error message you get? Is that a Saxon error message or one from the command shell? Is that on Windows? Is that a cmd shell or a Powershell shell you use?
RE: XSLT Code Coverage using Saxon trace output? - Added by Michael Kay 8 months ago
The parameter 2>trace-transform.xml
is simply an instruction to the command line processor to redirect standard error output to a named file. It isn't even passed to Saxon and it doesn't change Saxon's behaviour in any way. To switch tracing on you need the -T option.
I believe you can probably attach two TraceListeners to the same transformation using the Java API, but you can't do it from the command line.
RE: XSLT Code Coverage using Saxon trace output? - Added by Christophe Marchand 8 months ago
Have a look at XSpec implementation, which provides code coverage for unit tests : https://github.com/xspec/xspec/tree/master/java
Main class produces an XML file, and then, combined with source XSLT, another XSL produces code coverage visualization (https://github.com/xspec/xspec/blob/master/src/reporter/coverage-report.xsl)
Best regards, Christophe
Please register to reply