SonarQube:不应使用幻数(鱿鱼:S109)
SonarQube: Magic numbers should not be used (squid:S109)
根据定义,
"Magic number" is a value that should be given a symbolic name, but
was instead slipped into the code as a literal, usually in more than
one place.
这是一个神奇数字的完美例子
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 class,其中 insert 语句有近 50 多列,声纳为
抛出错误
ps.setString(1 ,...)
我相信这比
更具可读性
ps.setString(INDEX_ONE ,...)
我的理解有问题吗?还是 Sonar 中的错误?
从技术上和事实上,这不是错误:规则发现代码使用了任意数字。
但是,我认为这种具有固定列号索引的非常特殊的用例应该被视为误报。事实上,我认为尝试 "fix" 代码毫无意义。所以我的建议是在 SonarQube 中将这些个别问题标记为 False positive
或 Won't fix
,或者从分析您的 DAO 类.
中排除此规则
根据定义,
"Magic number" is a value that should be given a symbolic name, but was instead slipped into the code as a literal, usually in more than one place.
这是一个神奇数字的完美例子
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 class,其中 insert 语句有近 50 多列,声纳为
抛出错误ps.setString(1 ,...)
我相信这比
更具可读性ps.setString(INDEX_ONE ,...)
我的理解有问题吗?还是 Sonar 中的错误?
从技术上和事实上,这不是错误:规则发现代码使用了任意数字。
但是,我认为这种具有固定列号索引的非常特殊的用例应该被视为误报。事实上,我认为尝试 "fix" 代码毫无意义。所以我的建议是在 SonarQube 中将这些个别问题标记为 False positive
或 Won't fix
,或者从分析您的 DAO 类.