- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
很抱歉新手的问题,但是: 我最近才发现“=”运算符不只是处理对象/等等。值(value),也是引用。这很酷,但我认为这对变量来说是不一样的,它不会在存储整数或 float 的变量之间创建引用。后来我觉
我是一名优秀的程序员,十分优秀!