We’d have to rename things the way we shouldn’t have to?
We reference the presenter like this: SomethingContract.Presenter instead of as just “Presenter” so it’s very clear, but Sonarqube is flagging the interface as an issue.
What you are discussing sounds strange to me, this rule is about respecting a convention everywhere (that you can adapt to your needs by the way), I’m not sure to understand why the context in which it is declared/used should influence it.
Even if it will always be used with a prefix, seeing something like:
class MyClass implements SomethingContract.presenter {
is strange to me, it still makes sense to respect the convention.
Actually, it’s this one: squid:S2176
“Class names should not shadow interfaces or superclasses”
" While it’s perfectly legal to give a class the same simple name as a class in another package that it extends or interface it implements, it’s confusing and could cause problems in the future.
Noncompliant Code Example
public class Foo implements a.b.Foo { // Noncompliant
##Compliant
public class FooJr implements a.b.Foo {
"