github / github/codeql

Java: Nullness: LGTM.com - false positive

未关闭
#3,176 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
false-positive Java
主要语言
CodeQL
星标
10.1k
派生
2.1k
平均合并
2 天 15 小时
30 天内合并 PR
141

描述

**Description of the false positive**

```java
if (!channel.isActive()) {
CompletableFuture currentFuture;
synchronized (channelPool) {
currentFuture = channelPool.get(offset);
if (currentFuture == finalFuture) { // final future is not null since it is used also before
channelPool.set(offset, null);
} else if (currentFuture == null) {
currentFuture = factory.apply(address); // <== assigned here
currentFuture.whenComplete(this::logConnection); // <== used here
channelPool.set(offset, currentFuture);
}
}

if (currentFuture == finalFuture) {
getChannel(address, messageType)
.whenComplete(
(recursiveResult, recursiveError) -> {
completeFuture(future, recursiveResult, recursiveError);
});
} else {
currentFuture.whenComplete( // <== can't be null here
```

We can see that if currentFuture is null then it is assigned a new value, which is used directly afterwards, which means it cant be null later.
**URL to the alert on the project page on LGTM.com**
https://lgtm.com/projects/g/zeebe-io/zeebe/snapshot/e722021d676bdbeee3366fa1c10a915f031bbf0c/files/atomix/cluster/src/main/java/io/atomix/cluster/messaging/impl/ChannelPool.java?sort=name&dir=ASC&mode=heatmap#xa937c5d4af2d26c1:1

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。