-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
[java] MissingStaticMethodInNonInstantiatableClass: false-positive about @Inject #4493
Description
Affects PMD Version:7.0.0-rc1
Rule: MissingStaticMethodInNonInstantiatableClass
Please provide the rule name and a link to the rule documentation:
https://docs.pmd-code.org/latest/pmd_rules_java_errorprone.html#missingstaticmethodinnoninstantiatableclass
Description:
The first code sample uses the annotation javax.inject.Inject, and the second one uses com.google.inject.Inject. The analysis results of the two cases should be equivalent because these two annotations are equivalent. However, PMD reports a warning in the second sample and no warnings in the first one. Actually, PMD should not report a warning in Case 2 like the Case 1 because it has a injection here.
Code Sample demonstrating the issue:
Case 1
import javax.inject.Inject;
public class Foo { // report no warnning
@Inject
private Foo() {}
}
public class Bar extends Foo {
public Bar() {}
}Case 2
import com.google.inject.Inject;
public class Foo { // report a warning
@Inject
private Foo() {}
}
public class Bar extends Foo {
public Bar() {}
}
Expected outcome: The analysis results of the two classes should be the same and report no violation.
PMD reports a violation at line 2 in the second case, but that's wrong. That's a false positive. PMD should report no violation if PMD sees com.google.inject.Inject.
Running PMD through: CLI