resources.report.rules.pmd.CallSuperLast.html Maven / Gradle / Ivy
CallSuperLast
CallSuperLast
Super should be called at the end of the method
//MethodDeclaration[MethodDeclarator[
@Image='finish' or
@Image='onDestroy' or
@Image='onPause' or
@Image='onSaveInstanceState' or
@Image='onStop' or
@Image='onTerminate'
]]
/Block/BlockStatement[last()]
[not(Statement/StatementExpression/PrimaryExpression[./PrimaryPrefix[@SuperModifier='true']]/PrimarySuffix[@Image= ancestor::MethodDeclaration/MethodDeclarator/@Image])]
[ancestor::ClassOrInterfaceDeclaration[ExtendsList/ClassOrInterfaceType[
typeof(@Image, 'android.app.Activity', 'Activity') or
typeof(@Image, 'android.app.Application', 'Application') or
typeof(@Image, 'android.app.Service', 'Service')
]]]
Example(s):
public class DummyActivity extends Activity {
public void onPause() {
foo();
// missing call to super.onPause()
}
}