Почему это частное статическое свойство отображается как неиспользуемое sonarlint? - PullRequest
0 голосов
/ 04 апреля 2019

Sonarlint, похоже, считает, что закрытое статическое свойство, доступ к которому осуществляется внутри класса (по имени класса, а не по self), не используется.Я не совсем уверен, почему это так: возможно, это считается ошибкой в ​​коде для доступа к текущему классу по имени, а не по self или даже static, но я ожидаю, что это будет ошибкойпоскольку это подразумевает, что вы можете безопасно удалить имущество, а это не так.Конечно, это может быть ошибкой (ложное срабатывание) в sonarlint

Я написал этот пример:

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

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

}

TestClass::echoUsed();

Это работает нормально, но выдает предупреждение 'php s1068' ниже,Я добавил изображение всплывающего окна и полную ошибку.

Кто-нибудь знает, намеренно ли это, как описано выше, или ошибка?


Ошибки:

example of the warning in phpstorm

Ссылка 'more' показывает полную ошибку:


Если поле 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;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...