[英]SonarQube: Magic numbers should not be used (squid:S109)
根据定义,
“幻数”是一个应该被赋予一个符号名称的值,但它被作为文字滑入代码中,通常在多个地方。
这是一个神奇数字的完美例子
for(int i = 0; i < 4; i++){ // Noncompliant, 4 is a magic number
...
并且应该更改为有意义的东西,例如
for(int i = 0; i < NUMBER_OF_CYCLES ; i++){
...
但是 Sonar 也会为 indexNumbers 抛出错误。 例如,我有一个 DAO 类,其中插入语句有近 50 多列,声纳抛出错误
ps.setString(1 ,...)
我相信这比
ps.setString(INDEX_ONE ,...)
我的理解有什么问题吗? 还是声纳中的错误?
从技术上和事实上,这不是一个错误:规则发现代码使用了任意数字。
但是,我认为这个非常特殊的用例(列号的固定索引)应该被视为误报是合理的。 事实上,我认为尝试“修复”代码没有意义。 所以我的建议是在 SonarQube 中将这些个别问题标记为False positive
或Won't fix
,或者从分析您的 DAO 类中排除此规则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.