问题描述
Findbugs 对以下代码段发出警告。看起来像一个简单的 Builder
类来添加项目并在最后构造。这里有什么问题?
public static Set<Entity> convert(@NonNull final String id,@NonNull final Collection<SomeEntity> list) {
Builder<Entity> builder = new ImmutableSet.Builder<>();
final Entity entityOfType1 = createEntity(..);
// Bug type RV_RETURN_VALUE_IGnorED
builder.add(entityOfType1);
final Set<Entity> entitiesOfType2 = createEntity(..);
// Bug type RV_RETURN_VALUE_IGnorED
builder.addAll(entitiesOfType2);
final Set<Entity> entitiesOfType3 = createEntity(..);
// Bug type RV_RETURN_VALUE_IGnorED
builder.addAll(entitiesOfType3);
return builder.build();
}
解决方法
您的代码没问题,是 FindBugs 问题。
如果您切换到 SpotBugs,它“是 FindBugs 的精神继承者,在社区的支持下从它停止的地方继续前进”,您将拥有它固定了。 Guava since 23.6 “从 jsr305 @CheckReturnValue
、@GuardedBy
和 @OverridingMethodsMustInvokeSuper
迁移到 Error Prone 等效项”,为此添加了 SpotBugs 支持2018 年在 PR#538。