Merge branch 'pr/3658' into 7.0.x
This commit is contained in:
6 files changed
+100
-40
No files matched your search
@@ -190,8 +190,8 @@
|
||||
<rule ref="category/java/errorprone.xml/AvoidUsingOctalValues"/>
|
||||
<!-- <rule ref="category/java/errorprone.xml/BeanMembersShouldSerialize"/> -->
|
||||
<rule ref="category/java/errorprone.xml/BrokenNullCheck"/>
|
||||
<!-- <rule ref="category/java/errorprone.xml/CallSuperFirst"/> -->
|
||||
<!-- <rule ref="category/java/errorprone.xml/CallSuperLast"/> -->
|
||||
<rule ref="category/java/errorprone.xml/CallSuperFirst"/>
|
||||
<rule ref="category/java/errorprone.xml/CallSuperLast"/>
|
||||
<rule ref="category/java/errorprone.xml/CheckSkipResult"/>
|
||||
<rule ref="category/java/errorprone.xml/ClassCastExceptionWithToArray"/>
|
||||
<rule ref="category/java/errorprone.xml/CloneMethodMustBePublic"/>
|
||||
|
||||
@@ -702,29 +702,27 @@ public String bar(String string) {
|
||||
<property name="xpath">
|
||||
<value>
|
||||
<![CDATA[
|
||||
//MethodDeclaration[
|
||||
@Name='onCreate' or
|
||||
@Name='onConfigurationChanged' or
|
||||
@Name='onPostCreate' or
|
||||
@Name='onPostResume' or
|
||||
@Name='onRestart' or
|
||||
@Name='onRestoreInstanceState' or
|
||||
@Name='onResume' or
|
||||
@Name='onStart'
|
||||
]
|
||||
/Block[not(
|
||||
(BlockStatement[1]/Statement/StatementExpression/PrimaryExpression[./PrimaryPrefix[@SuperModifier= true()]]/PrimarySuffix[@Image= ancestor::MethodDeclaration/@Name]))]
|
||||
[ancestor::ClassOrInterfaceDeclaration[ExtendsList/ClassOrInterfaceType[
|
||||
pmd-java:typeIs('android.app.Activity') or
|
||||
pmd-java:typeIs('android.app.Application') or
|
||||
pmd-java:typeIs('android.app.Service')
|
||||
]]]
|
||||
//ClassOrInterfaceDeclaration
|
||||
[
|
||||
pmd-java:typeIs('android.app.Activity') or
|
||||
pmd-java:typeIs('android.app.Application') or
|
||||
pmd-java:typeIs('android.app.Service')
|
||||
]
|
||||
//MethodDeclaration
|
||||
[
|
||||
@Name=('onCreate', 'onConfigurationChanged', 'onPostCreate', 'onPostResume', 'onRestart',
|
||||
'onRestoreInstanceState', 'onResume', 'onStart')
|
||||
]
|
||||
[not(Block/*[1]/MethodCall[SuperExpression][@MethodName = ancestor::MethodDeclaration/@Name])]
|
||||
]]>
|
||||
</value>
|
||||
</property>
|
||||
</properties>
|
||||
<example>
|
||||
<![CDATA[
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class DummyActivity extends Activity {
|
||||
public void onCreate(Bundle bundle) {
|
||||
// missing call to super.onCreate(bundle)
|
||||
@@ -749,27 +747,25 @@ Super should be called at the end of the method
|
||||
<property name="xpath">
|
||||
<value>
|
||||
<![CDATA[
|
||||
//MethodDeclaration[
|
||||
@Name='finish' or
|
||||
@Name='onDestroy' or
|
||||
@Name='onPause' or
|
||||
@Name='onSaveInstanceState' or
|
||||
@Name='onStop' or
|
||||
@Name='onTerminate'
|
||||
]
|
||||
/Block/BlockStatement[last()]
|
||||
[not(Statement/StatementExpression/PrimaryExpression[./PrimaryPrefix[@SuperModifier= true()]]/PrimarySuffix[@Image= ancestor::MethodDeclaration/@Name])]
|
||||
[ancestor::ClassOrInterfaceDeclaration[ExtendsList/ClassOrInterfaceType[
|
||||
pmd-java:typeIs('android.app.Activity') or
|
||||
pmd-java:typeIs('android.app.Application') or
|
||||
pmd-java:typeIs('android.app.Service')
|
||||
]]]
|
||||
//ClassOrInterfaceDeclaration
|
||||
[
|
||||
pmd-java:typeIs('android.app.Activity') or
|
||||
pmd-java:typeIs('android.app.Application') or
|
||||
pmd-java:typeIs('android.app.Service')
|
||||
]
|
||||
//MethodDeclaration
|
||||
[
|
||||
@Name=('finish', 'onDestroy', 'onPause', 'onSaveInstanceState', 'onStop', 'onTerminate')
|
||||
]
|
||||
[not(Block/*[last()]/MethodCall[SuperExpression][@MethodName = ancestor::MethodDeclaration/@Name])]
|
||||
]]>
|
||||
</value>
|
||||
</property>
|
||||
</properties>
|
||||
<example>
|
||||
<![CDATA[
|
||||
import android.app.Activity;
|
||||
|
||||
public class DummyActivity extends Activity {
|
||||
public void onPause() {
|
||||
foo();
|
||||
|
||||
-1
@@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.java.rule.errorprone;
|
||||
|
||||
import net.sourceforge.pmd.testframework.PmdRuleTst;
|
||||
|
||||
@org.junit.Ignore("Rule has not been updated yet")
|
||||
public class CallSuperFirstTest extends PmdRuleTst {
|
||||
// no additional unit tests
|
||||
}
|
||||
-1
@@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.java.rule.errorprone;
|
||||
|
||||
import net.sourceforge.pmd.testframework.PmdRuleTst;
|
||||
|
||||
@org.junit.Ignore("Rule has not been updated yet")
|
||||
public class CallSuperLastTest extends PmdRuleTst {
|
||||
// no additional unit tests
|
||||
}
|
||||
+39
-2
@@ -8,12 +8,17 @@
|
||||
<description>Success</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class MyActivity extends Activity {
|
||||
@Override
|
||||
protected void onCreate(final Bundle state) {
|
||||
super.onCreate(state);
|
||||
foo();
|
||||
}
|
||||
|
||||
private void foo() { }
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
@@ -22,6 +27,9 @@ public class MyActivity extends Activity {
|
||||
<description>Success</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class MyActivity extends Activity {
|
||||
@Override
|
||||
protected void onCreate(final Bundle state) {
|
||||
@@ -38,19 +46,44 @@ public class MyActivity extends Activity {
|
||||
super.onStart();
|
||||
foo();
|
||||
}
|
||||
private void foo() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>Failure</description>
|
||||
<description>Failure - missing super</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<expected-linenumbers>6</expected-linenumbers>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class MyActivity extends Activity {
|
||||
@Override
|
||||
protected void onCreate(final Bundle state) {
|
||||
foo();
|
||||
}
|
||||
private void foo() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>Failure - super not as first</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<expected-linenumbers>6</expected-linenumbers>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class MyActivity extends Activity {
|
||||
@Override
|
||||
protected void onCreate(final Bundle state) {
|
||||
foo();
|
||||
super.onCreate(state);
|
||||
}
|
||||
private void foo() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
@@ -59,11 +92,15 @@ public class MyActivity extends Activity {
|
||||
<description>#1154 Call super onPause when there is no super</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
|
||||
public class NotAnActivity {
|
||||
Activity a = myActivity;
|
||||
Activity a = getActivity();
|
||||
protected void onResume() {
|
||||
doSomething();
|
||||
}
|
||||
private Activity getActivity() { return null; }
|
||||
private void doSomething() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
+31
-2
@@ -8,25 +8,50 @@
|
||||
<description>Success</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
|
||||
public class MyActivity extends Activity {
|
||||
@Override
|
||||
protected void onPause() {
|
||||
foo();
|
||||
super.onPause();
|
||||
}
|
||||
private void foo() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>Failure</description>
|
||||
<description>Failure - missing super</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<expected-linenumbers>5</expected-linenumbers>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
|
||||
public class MyActivity extends Activity {
|
||||
@Override
|
||||
protected void onPause() {
|
||||
foo();
|
||||
}
|
||||
private void foo() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>Failure - super not as last</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<expected-linenumbers>5</expected-linenumbers>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
|
||||
public class MyActivity extends Activity {
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
foo();
|
||||
}
|
||||
private void foo() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
@@ -35,11 +60,15 @@ public class MyActivity extends Activity {
|
||||
<description>#1154 Call super onPause when there is no super</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
import android.app.Activity;
|
||||
|
||||
public class NotAnActivity {
|
||||
Activity a = myActivity;
|
||||
Activity a = getActivity();
|
||||
protected void onPause() {
|
||||
doSomething();
|
||||
}
|
||||
private Activity getActivity() { return null; }
|
||||
private void doSomething() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
Reference in new issue
Block a user