Как проверить синтаксис php файлов в Travis CI?

1

Я хотел бы выполнить строгую проверку синтаксиса:

$ php -d error_reporting=32767 -l test.php

для всех php файлов внутри моего проекта в Travis CI.

Я пытался использовать find, но он всегда возвращает 0, даже если команда для флага exec не выполняется

$ find . -type f -name "*.php" -exec php -d error_reporting=32767 -l {} \;
PHP Parse error:  syntax error, unexpected end of file, expecting ',' or ';' in ./test.php on line 3
$ echo $?
0
Теги:
continuous-integration
syntax-error
travis-ci

1 ответ

4
Лучший ответ

Я решил это, проверив, возвращает ли find + php что-то в STDERR.

before_script:
  - '! find . -type f -name "*.php" -exec php -d error_reporting=32767 -l {} \; 2>&1 >&- | grep "^"'

Как это работает? Добавление:

2>&1 >&-

после любой команды удаляет STDOUT и перенаправляет STDERR на STDOUT.

Затем мы можем просто проверить, содержит ли вывод строки с grep:

| grep "^"

Тогда, поскольку grep возвращает 0, если он находит что-либо и 1, если он не находит ничего, что нам нужно, чтобы отрицать конечный результат, используя восклицательный знак в начале этой команды. В противном случае эта команда потерпит неудачу, когда все будет в порядке и удастся, когда ситуация потерпит неудачу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню