java - SonarQube:不应使用魔数(Magic Number)(鱿鱼:S109)

标签 java sonarqube magic-numbers

根据定义,

"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 类,其中插入语句有近 50 多列, Sonar 为

抛出错误
ps.setString(1 ,...)

我相信这比

更具可读性
ps.setString(INDEX_ONE ,...)

我的理解有问题吗?还是 Sonar 中的错误?

最佳答案

从技术上和事实上,这不是错误:规则发现代码使用了任意数字。

但是,我认为这种具有固定列号索引的非常特殊的用例应该被视为误报是合理的。事实上,我认为尝试“修复”代码毫无意义。所以我的建议是在 SonarQube 中将这些个别问题标记为 False positiveWon't fix,或者将此规则排除在分析您的 DAO 类之外。

关于java - SonarQube:不应使用魔数(Magic Number)(鱿鱼:S109),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557990/

相关文章:

java - JMeter Beanshell 共享类定义

Java固定线程池等待线程上下文切换

java - 运行 Sonar 扫描仪时出错

c++ - 反射格雷码到二进制转换中的魔数(Magic Number)

c++ - 避免 eof C++ 的 "magic number"

java - 将魔数(Magic Number)映射到枚举值,反之亦然

java - 关于打包 Java EE 应用程序,正确的是

java - 选择列并从其他选择中隐藏

java - 未记录的 API Sonar 规则在 sonarqube 6.5 中不起作用?

java - java类中的Imports Order是什么以及如何解决它