假设我有这样的代码块:
Map<String, Object> mappy =
(Map<String, Object>)pExtraParameters.get(ServiceClientConstants.EXTRA_PARAMETERS);
if (pSSResponseBean!=null) {
mappy.put(AddressResearchContext.CSI_RESPONSE_BEAN, (AddressNotFoundResponseBean)pSSResponseBean); // this line may throw null pointer
}是否有Sonar、Findbug或PMD规则将"mappy“标记为潜在空?显然,CodePro标记这一点,我需要提供类似的东西,如果可能的话。
发布于 2013-04-18 05:32:18
问题是,FindBugs把未注释的项目当作是用@Nullable注释的,这导致它忽略了对它们的空检查。您可以创建一个带有自定义@ReturnValuesAreCheckForNullByDefault注释(修改@ReturnValuesAreNonnullByDefault)注释的空@ReturnValuesAreCheckForNullByDefault包,但它将应用于该包中每个类中的每个方法。
@ReturnValuesAreCheckForNullByDefault
package java.util;
import edu.umd.cs.findbugs.annotations.ReturnValuesAreCheckForNullByDefault;另一个选项是创建使用Map注释的@CheckForNull外观。
public class AnnotatedMap<K, E> implements Map<K, E>
{
private final Map<K, E> wrapped;
@CheckForNull
public E get(K key) {
return wrapped.get(key);
}
...
}更新:有关实现此建议的完整细节,请参阅我的previous answer以获得类似的问题。
https://stackoverflow.com/questions/16071978
复制相似问题