Affects PMD Version: 6.22.0
Rule: AbstractClassWithoutAbstractMethod
Description:
When a abstract class contains a abstract inner class which has some abstract methods, then the outer abstract class is not detected, that it has no abstract methods.
Code Sample demonstrating the issue:
Test cases "Abstract class with inner classes false-negative 2" and "Abstract class with inner classes false-negative 3" are failing right now.
<test-code> <description>Abstract class with inner classes false-negative 1</description> <expected-problems>1</expected-problems> <expected-linenumbers>1</expected-linenumbers> <code><![CDATA[ public abstract class Foo { public void concreteMethod() {} public abstract static class MyInner implements Other { } } ]]></code> </test-code> <test-code> <description>Abstract class with inner classes false-negative 2</description> <expected-problems>1</expected-problems> <expected-linenumbers>1</expected-linenumbers> <code><![CDATA[ public abstract class Foo { public void concreteMethod() {} public abstract static class MyInner extends Other { } } ]]></code> </test-code> <test-code> <description>Abstract class with inner classes false-negative 3</description> <expected-problems>1</expected-problems> <expected-linenumbers>1</expected-linenumbers> <code><![CDATA[ public abstract class Foo { public void concreteMethod() {} public abstract static class MyInner { public abstract void someMethod(); } } ]]></code> </test-code> <test-code> <description>Class with abstract inner class false-negative</description> <expected-problems>1</expected-problems> <expected-linenumbers>2</expected-linenumbers> <code><![CDATA[ public class Foo { public abstract static class MyInner { public void concreteMethod() {} } } ]]></code> </test-code>
Expected outcome:
Additional notes:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4