gpt4 book ai didi

java - 令人困惑的 Sonar 错误

转载 作者:行者123 更新时间:2023-12-02 12:18:42 25 4
gpt4 key购买 nike

Sonar 显示我有这个错误 A "List<String>" cannot contain a "T" 。错误描述为

Inappropriate "Collection" calls should not be made

See CERT, EXP04-J. - Do not pass arguments to certain Java Collections Framework methods that are a different type than the collection parameter type

这是代码:

List<String> TRUE_VALUES = Arrays.asList("TRUE", "T", "YES", "Y");

这是我用来确定字符串值是否为真值的测试:

TRUE_VALUES.contains(value)

为什么 Sonar 将此标记为错误?

最佳答案

这里有很多事情需要考虑。谁定义了您的 Sonar 规则?您在使用具有自己的自定义规则集的 SonarQube 服务器构建代码时是否遇到此 Sonar 违规问题?您是否使用 SonarLint(一个 Eclipse 插件)及其自己的预定义规则集?如果您不确定规则本身,您可以随时尝试确定它的来源,看看您是否想真正遵循该规则,我以前在当前位置遇到过类似的情况,我们修改了规则集以获取过去的一些规则并不真正适用于我们的项目,只是需要考虑的事情......

现在就您的代码而言,根据您的命名约定“TRUE_VALUES”,我很惊讶 Sonar 没有对此进行更多提示,这是一个最终字段而您没有显示它吗?如果是,您可以考虑仅使用简单的字符串数组而不是集合来存储这些字符串值。如果我的假设是正确的并且您使用 Collection 来存储静态列表,那么它有点违背了使用 Collection 的目的,为什么不只使用 String 数组并将其保留如下所示?

final String[] TRUE_VALUES = {"TRUE", "T", "YES", "Y"};

关于java - 令人困惑的 Sonar 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45962917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com