【问题标题】:SonarQube Java Analyser, rule S2183, why should I remove this useless shift?SonarQube Java Analyser,规则 S2183,我为什么要删除这个无用的转变?
【发布时间】:2015-09-13 11:20:31
【问题描述】:

我写过:

public static final int MY_GREAT_COLOR = (91 << 16) + (155 << 8) + 213 + (255 << 32);

声纳说:

新:Squid:S2183 严重性:CRITICAL,消息:删除这个无用的转变

谁能告诉我为什么?这仅仅是因为不应该对文字进行计算,即使它增加了可读性?

【问题讨论】:

  • 它可能与(255 &lt;&lt; 32) 连接,这样做没有任何意义,因为它总是为零。尝试删除它,看看是否出现相同的错误。
  • 只有我一个人把问题的最后一个单词读错了吗?
  • @AdamSkywalker:没有。:D
  • 题外话,但有点误读了这个问题.. :) 是的,Sonar 是一个粗鲁的人。
  • 作为 SonarSource 开发团队的成员:@AdamSkywalker 嗯,我们可能会改写:D 否则:jira.sonarsource.com/browse/RSPEC-2183 Doc 清楚地说明了为什么会出现问题。我们目前正在努力改进报告问题,不仅在线,而且在专栏中准确指出问题所在。

标签: java sonarqube


【解决方案1】:

我猜 255 是你的 alpha 通道,在这种情况下我猜你想要255 &lt;&lt; 24

SonarQube 不知道您的意图,但正如 Toby 所说,它有一个有效的观点。

至于可读性,您也可以尝试使用 hexa 代码(例如 0xFF5B9BD5),许多开发人员已经习惯了。当然,十进制数字完全不可读且丑陋。

【讨论】:

    【解决方案2】:

    255 &lt;&lt; 32 溢出 Java(32 位)int,变为零。

    你想要long255L &lt;&lt; 32吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-11
      • 2019-02-23
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多