Affects PMD Version: 6.0.0
Rule: SingleMethodSingleton
Description: SingleMethodSingleton
uses a single Set
to determine if any duplication happened. But while traversing the AST multiple classes may be visited. I think that needs to be a Map<Class, Method>
. (Also it should only warn for static
methods.)
Code Sample demonstrating the issue:
// real example that triggered this report final class Outer { private static final Outer INSTANCE = new Outer(); private Outer() {} static Outer getInstance() { return INSTANCE; } static class Factory { private static final Factory FACTORY = new Factory(); private Factory() { } static Factory getInstance() { return FACTORY; } } } // another possible scenario final class Siblings { static class Inner1 { static Inner1 getInstance() { return null; } } static class Inner2 { static Inner2 getInstance() { return null; } } }
Outer.java | 4 | Class contains multiple getInstance methods. Please review.
Outer.java | 9 | Class contains multiple getInstance methods. Please review.
Siblings.java | 3 | Class contains multiple getInstance methods. Please review.
Siblings.java | 6 | Class contains multiple getInstance methods. Please review.
Running PMD through: [CLI | Ant | Maven | Gradle | Designer | Other]: Gradle
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