F
Fabien Bergeret
Here is sample of an XML I try to parse :
<?xml version="1.0" encoding="UTF-8"?>
<checkstyle version="3.5">
<file name="C:\java\analyses\moca\sources\Services\source\fr\mplusx\commun\domaine\donnees\bancaires\Agence.java">
<error line="37" column="1" severity="info" message="Le DAC (Data
Abstraction Coupling) de la classe est de 15 alors que le maximum
autorisé est de 7."
source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheck"/>
<error line="37" column="1" severity="info" message="Le Fan-Out
Complexity de la classe est de 29 alors que le maximum autorisé est
de 20." source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassFanOutComplexityCheck"/>
</file>
<file name="C:\java\analyses\moca\sources\Services\source\fr\mplusx\commun\domaine\donnees\bancaires\AgenceFactory.java">
<error line="47" column="1" severity="info" message="Le DAC (Data
Abstraction Coupling) de la classe est de 10 alors que le maximum
autorisé est de 7."
source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheck"/>
<error line="47" column="1" severity="info" message="Le Fan-Out
Complexity de la classe est de 24 alors que le maximum autorisé est
de 20." source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassFanOutComplexityCheck"/>
<error line="157" column="9" severity="info" message="La métrique
NCSS pour cette méthode vaut 56 alors que le maximum autorisé est de
50." source="com.puppycrawl.tools.checkstyle.checks.metrics.JavaNCSSCheck"/>
<error line="247" column="9" severity="info" message="La métrique
NCSS pour cette méthode vaut 53 alors que le maximum autorisé est de
50." source="com.puppycrawl.tools.checkstyle.checks.metrics.JavaNCSSCheck"/>
<error line="335" column="9" severity="info" message="La complexité
cyclomatique de la classe est de 11 alors que le maximum autorisé est
de 10." source="com.puppycrawl.tools.checkstyle.checks.metrics.CyclomaticComplexityCheck"/>
</file>
</checkstyle>
What I try to do is to count, for each file/error/source, the number
of times the source exists.
Here is the code sample I currently use :
<xsl:for-each select="file/error">
<xsl:variable name="first">
<xsl:call-template name="isfirst">
<xsl:with-param name="source" select="@source"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="source" select="@source" />
<xsl:if test="$first = 'true'">
<tr><xsl:call-template name="alternated-row"/>
<td nowrap="nowrap"><xsl:value-of select="@source"/></td>
<td><xsl:value-of
select="count(file/error[@source=$source])"/></td>
</tr>
</xsl:if>
</xsl:for-each>
<xsl:template name="isfirst">
<xslaram name="source"/>
<xsl:choose>
<xsl:when test="count(preceding-sibling::*[@source = $source])=0">
<xsl:value-of select="count(parent::*/preceding-sibling::*/error[@source
= $source])=0"/>
</xsl:when>
<xsltherwise>
'false'
</xsltherwise>
</xsl:choose>
</xsl:template>
This code is awfully slow on big files (>10Mo) ; any ideas to optimize
?
Thanks.
<?xml version="1.0" encoding="UTF-8"?>
<checkstyle version="3.5">
<file name="C:\java\analyses\moca\sources\Services\source\fr\mplusx\commun\domaine\donnees\bancaires\Agence.java">
<error line="37" column="1" severity="info" message="Le DAC (Data
Abstraction Coupling) de la classe est de 15 alors que le maximum
autorisé est de 7."
source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheck"/>
<error line="37" column="1" severity="info" message="Le Fan-Out
Complexity de la classe est de 29 alors que le maximum autorisé est
de 20." source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassFanOutComplexityCheck"/>
</file>
<file name="C:\java\analyses\moca\sources\Services\source\fr\mplusx\commun\domaine\donnees\bancaires\AgenceFactory.java">
<error line="47" column="1" severity="info" message="Le DAC (Data
Abstraction Coupling) de la classe est de 10 alors que le maximum
autorisé est de 7."
source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassDataAbstractionCouplingCheck"/>
<error line="47" column="1" severity="info" message="Le Fan-Out
Complexity de la classe est de 24 alors que le maximum autorisé est
de 20." source="com.puppycrawl.tools.checkstyle.checks.metrics.ClassFanOutComplexityCheck"/>
<error line="157" column="9" severity="info" message="La métrique
NCSS pour cette méthode vaut 56 alors que le maximum autorisé est de
50." source="com.puppycrawl.tools.checkstyle.checks.metrics.JavaNCSSCheck"/>
<error line="247" column="9" severity="info" message="La métrique
NCSS pour cette méthode vaut 53 alors que le maximum autorisé est de
50." source="com.puppycrawl.tools.checkstyle.checks.metrics.JavaNCSSCheck"/>
<error line="335" column="9" severity="info" message="La complexité
cyclomatique de la classe est de 11 alors que le maximum autorisé est
de 10." source="com.puppycrawl.tools.checkstyle.checks.metrics.CyclomaticComplexityCheck"/>
</file>
</checkstyle>
What I try to do is to count, for each file/error/source, the number
of times the source exists.
Here is the code sample I currently use :
<xsl:for-each select="file/error">
<xsl:variable name="first">
<xsl:call-template name="isfirst">
<xsl:with-param name="source" select="@source"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="source" select="@source" />
<xsl:if test="$first = 'true'">
<tr><xsl:call-template name="alternated-row"/>
<td nowrap="nowrap"><xsl:value-of select="@source"/></td>
<td><xsl:value-of
select="count(file/error[@source=$source])"/></td>
</tr>
</xsl:if>
</xsl:for-each>
<xsl:template name="isfirst">
<xslaram name="source"/>
<xsl:choose>
<xsl:when test="count(preceding-sibling::*[@source = $source])=0">
<xsl:value-of select="count(parent::*/preceding-sibling::*/error[@source
= $source])=0"/>
</xsl:when>
<xsltherwise>
'false'
</xsltherwise>
</xsl:choose>
</xsl:template>
This code is awfully slow on big files (>10Mo) ; any ideas to optimize
?
Thanks.