【问题标题】:SonarQube: Magic numbers should not be used (squid:S109)SonarQube:不应使用幻数(鱿鱼:S109)
【发布时间】:2019-06-30 15:55:57
【问题描述】:

根据定义,

“幻数”是一个应该被赋予符号名称的值,但是 而是作为文字滑入代码中,通常超过 一处。

这是一个完美的幻数示例

    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 类,其中 insert 语句有近 50 多列,声纳为

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

我相信这比

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

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

【问题讨论】:

    标签: java sonarqube magic-numbers


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 1970-01-01
      • 2016-04-23
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      相关资源
      最近更新 更多