2016-12-27 5 views
1

.travis.yml является:sensiolabs прозрение не смог разобрать travis.yml

sudo: false 

language: php 

php: 
    - 5.6 
    - 7.0 
    - 7.1 
    - hhvm 

matrix: 
    allow_failures: 
    - php: 7.1 

before_script: 
    - composer install --no-suggest ; 

script: 
    - if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
     vendor/bin/phpunit --coverage-clover clover.xml ; 
     vendor/bin/phpcs ; 
    else 
     vendor/bin/phpunit ; 
    fi 

after_script: 
    - if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
     vendor/bin/coveralls --coverage_clover=clover.xml -v ; 
    fi 

https://lint.travis-ci.org/ не найдены ошибки и оболочки на travis-ci.org работы тонкой

но https://insight.sensiolabs.com марки Критическая ошибкаYAML files should not contain syntax error с:

Unable to parse at line 20 (near " vendor/bin/phpunit --coverage-clover clover.xml ;"). 

Как я могу это исправить?

ответ

1

Анализатором PHP YAML является documented разобрать подмножество YAML файлы конфигурация.

Он поддерживает только необходимые функции для обработки файлов конфигурации.

Одно то, что более трудно получить права, и то, что осталось из обрабатывает скалярных строк многострочных, документация даже заявляет, что гораздо проще реализовать многострочный цитируемый сообщений (т.е. скалярные строки) не поддерживаются.

Codebeautify, которые утверждают, что являются лучшим онлайн-сертификатором YAML, не могут обрабатывать этот правильный документ YAML с той же ошибкой, поэтому они, похоже, используют неполный парсер PHP YAML.

Если вы застряли с PHP, то вы можете сделать три вещи, тем более читаемым использует literal style scalars, как показано ниже (обратите внимание на | после индикатора последовательности элементов -):

sudo: false 

language: php 

php: 
    - 5.6 
    - 7.0 
    - 7.1 
    - hhvm 

matrix: 
    allow_failures: 
    - php: 7.1 

before_script: 
    - composer install --no-suggest ; 

script: 
    - | 
    if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
     vendor/bin/phpunit --coverage-clover clover.xml ; 
     vendor/bin/phpcs ; 
    else 
     vendor/bin/phpunit ; 
    fi 

after_script: 
    - | 
    if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
     vendor/bin/coveralls --coverage_clover=clover.xml -v ; 
    fi 

это, однако изменяет строки в том, что новые строки сохранены.

Как и в случае с folded style scalar string, если бы не для отступов, это позволило бы удалить символы перевода строки в режиме загрузки YAML. Так что, если выше не работает, вы можете сделать:

sudo: false 

language: php 

php: 
    - 5.6 
    - 7.0 
    - 7.1 
    - hhvm 

matrix: 
    allow_failures: 
    - php: 7.1 

before_script: 
    - composer install --no-suggest ; 

script: 
    - >- 
    if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
    vendor/bin/phpunit --coverage-clover clover.xml ; 
    vendor/bin/phpcs ; 
    else 
    vendor/bin/phpunit ; 
    fi 

after_script: 
    - >- 
    if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
    vendor/bin/coveralls --coverage_clover=clover.xml -v ; 
    fi 

И последний вариант переписать скалярные строки в одну строку:

sudo: false 

language: php 

php: 
    - 5.6 
    - 7.0 
    - 7.1 
    - hhvm 

matrix: 
    allow_failures: 
    - php: 7.1 

before_script: 
    - composer install --no-suggest ; 

script: 
    - if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then vendor/bin/phpunit --coverage-clover clover.xml ; vendor/bin/phpcs ; else vendor/bin/phpunit ; fi 

after_script: 
    - if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then vendor/bin/coveralls --coverage_clover=clover.xml -v ; fi 

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

0

Найдено answer, one more: используйте literal scalar

sudo: false 

language: php 

php: 
    - 5.6 
    - 7.0 
    - 7.1 
    - hhvm 

matrix: 
    allow_failures: 
    - php: 7.1 

before_script: 
    - composer install --no-suggest ; 

script: 
    - | 
    if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
     vendor/bin/phpunit --coverage-clover clover.xml ; 
     vendor/bin/phpcs ; 
    else 
     vendor/bin/phpunit ; 
    fi 

after_script: 
    - | 
    if [ "$TRAVIS_PHP_VERSION" == "7.0" ] ; then 
     vendor/bin/coveralls --coverage_clover=clover.xml -v ; 
    fi 
+0

Это изменяет скаляр, вводя новые строки, которые могут не повлиять на результат в программе, но вы должны были указать это. – Anthon

+0

Не понял, что это ответ на вопрос, я думаю, что буквальные скаляры стиля работают на Travis ** и ** Sensiolabs. – Anthon

+0

~ @ Anthon Спасибо за подробный ответ! – 1f7