CallSuperFirst android rule now accepts logging before call to super()

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/branches/pmd/4.2.x@6812 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Xavier Le Vourch 2009-02-04 23:50:51 +00:00
parent ca664ea719
commit b5a90924a7
2 changed files with 44 additions and 10 deletions

View File

@ -17,6 +17,34 @@ public class MyActivity extends Activity {
</test-code>
<test-code>
<description><![CDATA[
Success, first statement is enclosed in Config.LOGD or LOGV
]]></description>
<expected-problems>0</expected-problems>
<code><![CDATA[
public class MyActivity extends Activity {
@Override
protected void onCreate(final Bundle state) {
if (Config.LOGD) { Log.d("Tag", "msg 1"); }
super.onCreate(state);
foo();
}
@Override
protected void onResume() {
if (Config.LOGV) { Log.v("Tag", "msg 1"); }
super.onResume();
foo();
}
@Override
protected void onStart() {
if (booleanValue && Config.LOGD) { Log.d("Tag", "msg 1"); }
super.onStart();
foo();
}
}
]]></code>
</test-code>
<test-code>
<description><![CDATA[
Failure
]]></description>
<expected-problems>1</expected-problems>

View File

@ -12,10 +12,10 @@ To get better results, make sure that the auxclasspath is defined for type resol
<rule name="CallSuperFirst"
since="4.2.5"
message="super must be called at the start of the method"
message="super should be called at the start of the method"
class="net.sourceforge.pmd.rules.XPathRule"
externalInfoUrl="http://pmd.sourceforge.net/rules/android.html#CallSuperFirst">
<description>Super must be called at the start of the method</description>
<description>Super should be called at the start of the method</description>
<priority>3</priority>
<properties>
<property name="xpath">
@ -30,8 +30,14 @@ To get better results, make sure that the auxclasspath is defined for type resol
@Image='onResume' or
@Image='onStart'
]]
/Block/BlockStatement[1]
[not(Statement/StatementExpression/PrimaryExpression/PrimaryPrefix[@Image= ancestor::MethodDeclaration/MethodDeclarator/@Image])]
/Block[not(
(BlockStatement[1]/Statement/StatementExpression/PrimaryExpression/PrimaryPrefix[@Image= ancestor::MethodDeclaration/MethodDeclarator/@Image]) or
((BlockStatement[1]/Statement/IfStatement/Expression[
PrimaryExpression/PrimaryPrefix/Name[@Image='Config.LOGD' or @Image='Config.LOGV']
or
ConditionalAndExpression/PrimaryExpression/PrimaryPrefix/Name[@Image='Config.LOGD' or @Image='Config.LOGV']
]) and
(BlockStatement[2]/Statement/StatementExpression/PrimaryExpression/PrimaryPrefix[@Image= ancestor::MethodDeclaration/MethodDeclarator/@Image])))]
[ancestor::ClassOrInterfaceDeclaration[//ClassOrInterfaceType[
typeof(@Image, 'android.app.Activity', 'Activity') or
typeof(@Image, 'android.app.Application', 'Application') or
@ -54,10 +60,10 @@ To get better results, make sure that the auxclasspath is defined for type resol
<rule name="CallSuperLast"
since="4.2.5"
message="super must be called at the end of the method"
message="super should be called at the end of the method"
class="net.sourceforge.pmd.rules.XPathRule"
externalInfoUrl="http://pmd.sourceforge.net/rules/android.html#CallSuperLast">
<description>Super must be called at the end of the method</description>
<description>Super should be called at the end of the method</description>
<priority>3</priority>
<properties>
<property name="xpath">
@ -94,10 +100,10 @@ To get better results, make sure that the auxclasspath is defined for type resol
</rule>
<rule name="ProtectLogD" since="4.2.5"
message="Log.d must be protected by checking Config.LOGD"
message="Log.d calls should be protected by checking Config.LOGD first"
class="net.sourceforge.pmd.rules.XPathRule"
externalInfoUrl="http://pmd.sourceforge.net/rules/android.html#ProtectLogD">
<description>Log.d must be protected by checking Config.LOGD</description>
<description>Log.d calls should be protected by checking Config.LOGD first</description>
<priority>3</priority>
<properties>
<property name="xpath">
@ -129,10 +135,10 @@ To get better results, make sure that the auxclasspath is defined for type resol
</rule>
<rule name="ProtectLogV" since="4.2.5"
message="Log.v must be protected by checking Config.LOGV"
message="Log.v calls should be protected by checking Config.LOGV first"
class="net.sourceforge.pmd.rules.XPathRule"
externalInfoUrl="http://pmd.sourceforge.net/rules/android.html#ProtectLogV">
<description>Log.v must be protected by checking Config.LOGV</description>
<description>Log.v calls should be protected by checking Config.LOGV first</description>
<priority>3</priority>
<properties>
<property name="xpath">