为什么此私有静态属性被sonarlint显示为未使用?

时间:2019-04-04 07:20:50

标签: phpstorm sonarlint

Sonarlint似乎认为未使用在类内(通过类名,而不是通过self访问的私有静态属性)。我不太清楚为什么会这样:可能是因为它被认为是通过名称而不是通过self甚至是static来访问当前类的代码中的错误,但是我希望成为错误,因为这意味着您可以安全地删除该属性,实际情况并非如此。当然,这可能是声纳的错误(误报)

我已经写了这个例子:

class TestClass
{
    private static $used = 'foobar';

    public static function echoUsed()
    {
        echo TestClass::$used;
    }

}

TestClass::echoUsed();

这可以正常运行,但确实会在下面产生“ php s1068”警告。我添加了弹出窗口和完整错误的图片。

有人知道这是否是如上所述的目的或错误吗?


错误:

example of the warning in phpstorm

“更多”链接显示了完整的错误:


如果声明了private字段但未在程序中使用它,则可以将其视为无效代码,因此应将其删除。这将 提高开发人员的可维护性,因为开发人员不会怀疑该变量的用途。

不兼容的代码示例

class MyClass {
  private $foo = 4;                       //foo is unused

  public function compute($a) {
    return $a * 4;
  }
}

兼容解决方案

class MyClass {

  public function compute($a) {
    return $a * 4;
  }
}

0 个答案:

没有答案