Будет ли совет PHPLint полезен для нашего сообщества?


Недавно я нашел этот статический анализатор кода PHP под названием PHPLint. Одна из вещей, которую он может сделать, - это посмотреть на код следующим образом:

/**
 * @return string
 */
function getText() {
  return 5;
}

И жалуются, что 5 - это не строка. Мне кажется, что это потенциально может уменьшить количество ошибок и, возможно, даже проблемы с безопасностью в нашем коде. Одна приятная вещь заключается в том, что я вижу, что это может дать то, что для возвращаемых значений из функции все, что вам когда-либо нужно было проверить, это (=== null). Если оно не равно нулю, то у вас есть данные, которые вы ожидаемый.

На первый взгляд это кажется, возможно, отличным дополнением к нашим кодовым базам, как основным, так и вспомогательным. Но, возможно, с этим есть проблемы, которых я не вижу?

Я начал применять соответствующие doc-блоки к своим собственным модулям, и одна из проблем, с которой я столкнулся, заключается в том, что, поскольку core часто использует массивы со смешанными данными в них, существуют ограничения на то, какие проверки может выполнять PHPLint, что вызывает множество предупреждений.

Редактировать: Один конкретный примером проблемы, которую это может предотвратить, является это уведомление от php 5.4. Этот код всегда терпел неудачу, просто никто не замечал, пока PHP 5.4 не сделал неявное приведение уведомления. В этом случае ошибка относительно безвредна, но таким образом могут возникнуть более тонкие ошибки и проблемы с безопасностью.

Author: Letharion, 2012-02-17

1 answers

В теории, несомненно, есть преимущества. Однако есть некоторые проблемы с этим, как вы уже частично выяснили сами.

  • Будет около миллиона ложных предупреждений, возможно, будет так же трудно найти реальные проблемы, как и при простом чтении кода.
  • В Drupal существует довольно много пользовательских стандартов кодирования. Например, в настоящее время мы не используем объявления типов в блоках документов, за исключением класса @return$.

Я не знаю, насколько настраивается PHPLint, возможно, есть несколько проверок, которые имело бы смысл выполнить в нашем коде.

Для проблем со стилем кодирования, возможно, имеет больше смысла использовать http://drupal.org/project/drupalcs

 4
Author: Berdir, 2012-02-17 08:28:20