我有一些Hadoop映射并减少覆盖受保护方法的类。声纳将这些标记为:
Unused protected method
Plugin: squid Key: UnusedProtectedMethod
我知道Sonar中有一个解决方案可以解决这个问题,而且在某些时候我的组织会使用带有该修复的版本。与此同时,我想禁用警告。我试过了:
@SuppressWarnings("UnusedProtectedMethod")
和
@SuppressWarnings("SQUID.UnusedProtectedMethod")
无济于事。
@SuppressWarnings适用于PMD问题,@ edu.umd.cs.findbugs.annotations.SuppressWarnings(value =“blah”)适用于findbugs问题。是否有另一种鱿鱼问题的变种,或者它还没有得到支持?
答案 0 :(得分:4)
使用
@SuppressWarnings("squid:UnusedProtectedMethod")
另见SonarQube Java Plugin FAQ - SuprressWarnings
这已在SonarQube Java插件版本2.8中实现。
答案 1 :(得分:3)
我发现Squid只支持“all”。来自squid插件源,在SuppressWarningsAnnotationUtils.java中:
private static final String VALUE = "\"all\"";
...
public static boolean isSuppressAllWarnings(DetailAST ast) {
DetailAST suppressWarningsAnnotation = getSuppressWarningsAnnotation(ast);
if (suppressWarningsAnnotation != null) {
DetailAST warningHolder = findWarningsHolder(suppressWarningsAnnotation);
for (DetailAST warning = warningHolder.findFirstToken(TokenTypes.EXPR); warning != null; warning = warning.getNextSibling()) {
if (warning.getType() == TokenTypes.EXPR) {
DetailAST fChild = warning.getFirstChild();
if (fChild.getType() == TokenTypes.STRING_LITERAL) {
String text = warning.getFirstChild().getText();
if (VALUE.equals(text)) {
return true;
}
}
}
}
}
return false;
}
这里有讨论:Support the annotation "@SuppressWarnings" at class and method level