Неиспользуемое значение foreach в статических анализаторах кода

#php #phpmd

#php #phpmd

Вопрос:

Статические анализаторы кода, такие как (в данном конкретном случае) PHPMD, жалуются на ошибку в следующем фрагменте кода PHP:

 foreach ($aSomething as $key => $value) {
    ... do something with the $key only
}
 

Ошибка:

 Avoid unused local variables such as '$value'.
 

Теперь я не знаю ни одного способа создать цикл foreach только с ключами. Каким было бы «безопасное для анализатора» решение для выражения этих строк?

В данный момент я решаю эту проблему с помощью вызова array_keys , а затем запрашиваю это, но это кажется излишним. Другое решение — всегда отключать анализатор для этого цикла.

Каков «правильный» способ соответствовать качеству кода и «понятности» требований к коду?

Комментарии:

1. просто используйте array_keys , если вам нужны только ключи .. в этом смысл функции.. для получения ключей …

2. @LelioFaieta потому что ключи не всегда имеют индекс 0?

3. » Каков «правильный» способ соответствовать качеству кода и «понятности» требований к коду? » — Это зависит от человека. Не существует «правильного» способа сделать это.

4. Подавите эту проверку для этой конкретной строки кода соответствующим комментарием; если ваш анализатор поддерживает такую вещь. По сути, сообщите анализатору, что я знаю, что я делаю в данном конкретном случае.

5. Также, как я вижу из документов, в phpmd есть allow-unused-foreach-variables свойство для правила.

Ответ №1:

Как я читал в некоторых документах allow-unused-foreach-variables phpmd, для правила есть свойство UnusedLocalVariable , подробнее читайте здесь:

https://phpmd.org/rules/unusedcode.html

Кроме того, согласно теме github здесь https://github.com/phpmd/phpmd/pull/329 , должна быть возможность

белый список переменных в UnusedLocalVariable правиле

Что касается использования переменной like $_ , которая означает «значение не требуется» или «выбросить его», есть другой поток git https://github.com/phpmd/phpmd/issues/326 , который в конце отсылает вас к предыдущему с возможностью «внести переменные в белый список в UnusedLocalVariable правиле».

Итак, есть два варианта — разрешить неиспользуемые переменные, что я не думаю хорошей идеей. Второй вариант — внести в белый список переменные, которые будут игнорироваться ( $_ например, указанные выше), и использовать их, когда вам не нужны данные в этих переменных.

Хотя я не знаю, как настроить phpmd , я полагаю, кто-нибудь сможет отредактировать мой ответ с правильной конфигурацией для вышеуказанных параметров.

Комментарии:

1. В частности, PHPMD жалуется $_ на отсутствие имени в camelCase, но добавление * @SuppressWarnings(PHPMD.UnusedLocalVariable) в doc-блок метода (без использования $_ в качестве параметра в foreach ) приведет к отключению ошибки.