resources.report.rules.pmd.FinalizeDoesNotCallSuperFinalize.html Maven / Gradle / Ivy
FinalizeDoesNotCallSuperFinalize
FinalizeDoesNotCallSuperFinalize
If the finalize() is implemented, its last action should be to call super.finalize.
//MethodDeclaration[MethodDeclarator[@Image='finalize'][not(FormalParameters/*)]]
/Block
/BlockStatement[last()]
[not(Statement/StatementExpression/PrimaryExpression
[./PrimaryPrefix[@SuperModifier='true']]
[./PrimarySuffix[@Image='finalize']]
)
]
[not(Statement/TryStatement/FinallyStatement
/Block/BlockStatement/Statement/StatementExpression/PrimaryExpression
[./PrimaryPrefix[@SuperModifier='true']]
[./PrimarySuffix[@Image='finalize']]
)
]
Example(s):
protected void finalize() {
something();
// neglected to call super.finalize()
}