我的代码中出现 DU 异常 (PMD)。我不知道如何解决这个问题

问题描述 投票:0回答:1

我必须迭代该请求并创建一个新的实体列表请求,我可以在 JPA 存储库的 saveAll() 方法中使用该请求
我收到 DU 异常 我遇到的错误来自 PMD。

  • DU - 异常:最近定义的变量未定义。这些异常可能会出现在正常的源文本中。
Map<Integer, AlertHeader> alertHeaderMap = findAllAlertRecords(lockAlertRequest);

List<AlertHeader> alertHeaderRequestToUpdate = lockAlertRequest.stream()
        .map(request -> {
            AlertHeader alertHeader = alertHeaderMap.get(request.getAlertId());
            alertValidatorUtil.validateRecordNotFound(alertHeader, request);
            alertValidatorUtil.validateUnauthorizedLock(alertHeader, request);
            alertHeader.setStatus(AlertStatus.valueOf(request.getStatus()));
            alertHeader.setExpediteEmployeeId(request.getExpediteEmployeeId());
            alertHeader.setExpdLockDateTime(parseDateTime(request.getExpediteLockDateTime()));
            return alertHeader;
        })
        .collect(Collectors.toList());

alertHeaderRepository.saveAll(alertHeaderRequestToUpdate);

如果使用此代码片段,我不会收到任何错误,无法理解这里的真正原因。

lockAlertRequest.forEach(request -> { AlertHeader alertHeader = alertHeaderMap.get(request.getAlertId()); alertValidatorUtil.validateRecordNotFound(alertHeader, request); alertValidatorUtil.validateUnauthorizedLock(alertHeader, request); alertHeader.setStatus(AlertStatus.valueOf(request.getStatus())); alertHeader.setExpediteEmployeeId(request.getExpediteEmployeeId()); alertHeader.setExpdLockDateTime(parseDateTime(request.getExpediteLockDateTime())); alertHeaderRequestToUpdate.add(alertHeader); });
java list jpa stream anomaly-detection
1个回答
0
投票

我假设错误消息来自 PMD。 您应该告诉我们这些事情。

当我用 google 搜索该消息时,第一个搜索结果是这个 PMD 问题:https://github.com/pmd/pmd/issues/1304。 对该问题的回应是,这些通常是误报。 它说:

不幸的是,这条规则是迄今为止 PMD 中最差的。数据流代码库早已过时,并且很少或根本不了解 Java 5 或更高版本中引入的任何 Java 构造(for-each-loops、try-with-resources、lambda...),因此这些误报并不罕见。

我们希望在某个时候对其进行修改,但到目前为止,这样的努力还没有计划。它可能是 2019 年一个很好的 GSoC 项目候选者。

GSoC 是 Google Summer of Code,但我的猜测是这个问题当时并没有得到解决……或者从那时起。


您显然没有在帖子中包含所有错误信息。 它应该提到 DU 异常是针对哪个变量的。 但您肯定在那里使用了后 Java 5 的构造。

© www.soinside.com 2019 - 2024. All rights reserved.