feat: add junit support to shellcheck output
This requires us to run shellcheck twice, as the first pass doesn't output anything human readable - both because of the redirect and because shellcheck doesn't directly support it - which increases lint runtime but allows us to have both the junit information and the normal human-readable output. Note that the checkstyle output does not contain timing info.
This commit is contained in:
44
tests/checkstyle2junit.xslt
Normal file
44
tests/checkstyle2junit.xslt
Normal file
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:output encoding="UTF-8" method="xml"></xsl:output>
|
||||
|
||||
<xsl:template match="/">
|
||||
<testsuite>
|
||||
<xsl:attribute name="tests">
|
||||
<xsl:value-of select="count(.//file)" />
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="failures">
|
||||
<xsl:value-of select="count(.//error)" />
|
||||
</xsl:attribute>
|
||||
<xsl:for-each select="//checkstyle">
|
||||
<xsl:apply-templates />
|
||||
</xsl:for-each>
|
||||
</testsuite>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="file">
|
||||
<testcase>
|
||||
<xsl:attribute name="classname">
|
||||
<xsl:value-of select="@name" />
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@name" />
|
||||
</xsl:attribute>
|
||||
<xsl:apply-templates select="node()" />
|
||||
</testcase>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="error">
|
||||
<failure>
|
||||
<xsl:attribute name="type">
|
||||
<xsl:value-of select="@source" />
|
||||
</xsl:attribute>
|
||||
<xsl:text>Line </xsl:text>
|
||||
<xsl:value-of select="@line" />
|
||||
<xsl:text>: </xsl:text>
|
||||
<xsl:value-of select="@message" />
|
||||
<xsl:text> See https://www.shellcheck.net/wiki/</xsl:text>
|
||||
<xsl:value-of select="substring(@source, '12')" />
|
||||
</failure>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
Reference in New Issue
Block a user