我们正在使用 Java 8 和依赖注入(inject) (GUICE)。 目前我们有一个关于未使用方法的误报 Sonar 问题,尽管由于注入(inject)注释,此方法是通过 GUICE 注入(inject)器的反射调用的。
受影响的代码:
@Inject
private void setTransactionalCommandStack(TransactionalCommandStack transactionalCommandStack) {
...
}
SQ 报告违反规则 squid:UnusedPrivateMethod
Unused "private" methods should be removed
在这个地方说
Private method 'setTransactionalCommandStack' is never used
.
Eclipse 环境也检查未使用的方法,可以正确检测到它,并且只有在我没有该方法的 @Inject 注释时才会发出警告。 我对 SonarQube 的期望也是如此。
我测试了 Annotation javax.inject.Inject 和 com.google.inject.Inject。在这两种情况下,SonarQube 都报告该方法未被使用。
SQ版本:5.3
Java插件版本:3.14
最佳答案
此问题已在 Java 分析器 4.0
版本中修复,仅与 SQ LTS 5.6
兼容。查看相应的 JIRA 工单 SONARJAVA-1179
关于带有@Inject注解的Java方法: False-positive for the rule "Unused "private"methods should be removed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38633700/