Rules that flag suboptimal code.
Since: PMD 5.0
Priority: Medium (3)
Avoid using the ‘following’ or ‘preceding’ axes whenever possible, as these can cut through 100% of the document in the worst case. Also, try to avoid using ‘descendant’ or ‘descendant-or-self’ axes, as if you’re at the top of the Document, it necessarily means cutting through 100% of the document.
This rule is defined by the following XPath expression:
//node()[ contains(@select,'preceding::') or contains(@select,'following::') or contains(@select,'descendant::') or contains(@select,'descendant-self::') or ( ($checkSelfDescendantAbreviation = true() ) and contains(@select,'//') ) ]
<xsl:variable name="var" select="//item/descendant::child"/>
This rule has the following properties:
|checkSelfDescendantAbreviation||false||descendant::self abreviation, ‘//’, will also trigger this rule.||no|
Use this rule with the default properties by just referencing it:
<rule ref="category/xsl/performance.xml/AvoidAxisNavigation" />
Use this rule and customize it:
<rule ref="category/xsl/performance.xml/AvoidAxisNavigation"> <properties> <property name="checkSelfDescendantAbreviation" value="false" /> </properties> </rule>