#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 ) приведет к отключению ошибки.