如何解决 SonarQube 主要问题“重构代码以便使用流管道”?

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

我正在 Java 17 项目中工作,我有以下方法:

public List<String> getUserroles(List<UserRoleDTO> userRoles) {

    return userRoles.stream().filter(UserRoleDTO::getRight).map(UserRoleDTO::getActionId)
      .toList();
}

我的构建失败,因为 SonarQube 发现了一个主要问题:

重构代码以便使用流管道

关于如何调整我的代码以使其符合声纳标准,有什么建议吗?

java sonarqube java-stream
2个回答
7
投票

方法

Stream.toList()
已经在Java分析器规则中提到过。而最新的SonarQube的版本9.5根据其描述应该支持Java 16。

首先,尝试更新 SonarQube。

如果仍不能解决问题,您可以将

toList()
替换为
collect(Collectors.toList())


2
投票
据我所知,Java 16 中引入了

toList()

您能否看看您的 sonarqube 版本是否也与您在代码中使用的版本一致?

toList()
是终端操作,因此您正在正确使用流。这仅会导致 Sonarqube 版本出现问题,该版本可能引用早于 16 的 java。

尝试使用 sonarqube 9.x 或更高版本,它可能支持 java 16 及以上版本。

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