关于org.springframework.messaging.MessageHeaders.get()的声纳

时间:2018-09-24 08:56:50

标签: java spring sonarqube

Sonar报告org.springframework.messaging.MessageHeaders.get()上的错误。以下代码:

1. MessageHeaders foo = new MessageHeaders(Collections.emptyMap());
2. String bar = foo.get("foobar", String.class);
3. if (bar != null) {
4.     return bar
5. }
6. ...

Sonar讲述了第3行:“删除始终为“ true”的表达式。

当我认为这是Sonar的错误分析时,我错了吗? 我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

根据方法定义

@SuppressWarnings("unchecked")
@Nullable
public <T> T get(Object key, Class<T> type) {
    Object value = this.headers.get(key);
    if (value == null) {
        return null;
    }
    if (!type.isAssignableFrom(value.getClass())) {
        throw new IllegalArgumentException("Incorrect type specified for header '" +
                key + "'. Expected [" + type + "] but actual type is [" + value.getClass() + "]");
    }
    return (T) value;
}

https://github.com/spring-projects/spring-framework/blob/master/spring-messaging/src/main/java/org/springframework/messaging/MessageHeaders.java

您可以将声纳错误标记为误报,因为它可能返回null。