[pmd-devel] pmd/rulesets newrules.xml,1.87,1.88
A source code analyzer
Brought to you by:
adangel,
juansotuyo
From: Tom C. <tom...@us...> - 2004-01-21 21:36:23
|
Update of /cvsroot/pmd/pmd/rulesets In directory sc8-pr-cvs1:/tmp/cvs-serv20870/rulesets Modified Files: newrules.xml Log Message: Added Chad Loder's implementation of FinalizeDoesNotCallSuperFinalize Index: newrules.xml =================================================================== RCS file: /cvsroot/pmd/pmd/rulesets/newrules.xml,v retrieving revision 1.87 retrieving revision 1.88 diff -C2 -d -r1.87 -r1.88 *** newrules.xml 21 Jan 2004 17:03:22 -0000 1.87 --- newrules.xml 21 Jan 2004 21:36:19 -0000 1.88 *************** *** 192,196 **** <![CDATA[ //MethodDeclaration ! [MethodDeclarator[@Image="finalize"][FormalParameters/*]] ]]> </value> --- 192,196 ---- <![CDATA[ //MethodDeclaration ! [MethodDeclarator[@Image='finalize'][FormalParameters/*]] ]]> </value> *************** *** 209,212 **** --- 209,246 ---- </rule> + <rule name="FinalizeDoesNotCallSuperFinalize" + message="Last statement in finalize method should be a call to super.finalize()" + class="net.sourceforge.pmd.rules.XPathRule"> + <description> + If the finalize() is implemented, its last action should be to call super.finalize + </description> + <properties> + <property name="xpath"> + <value> + <!-- in english: a method declaration of finalize(), with no arguments, containing + a block whose last statement is NOT a call to super.finalize --> + <![CDATA[ + //MethodDeclaration[MethodDeclarator[@Image='finalize'][not(FormalParameters/*)]] + /Block + /BlockStatement[last()] + [not(Statement/StatementExpression/PrimaryExpression/PrimaryPrefix[@Image='finalize'])] + ]]> + </value> + </property> + </properties> + <priority>3</priority> + <example> + <![CDATA[ + public class Foo { + public void finalize() { + something(); + // neglected to call super.finalize() + } + } + ]]> + </example> + </rule> + + </ruleset> |