sensiolabs洞察力无法解析travis.yml

时间:2016-12-27 18:18:10

标签: php yaml travis-ci

.travis.yml是:

request.getSession().setAttribute("username", nameOfUser);

https://lint.travis-ci.org/找不到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 上的错误和shell工作正常

但是https://insight.sensiolabs.com标记 严重错误 travis-ci.org

YAML files should not contain syntax error

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

PHP YAML解析器documented用于解析配置文件的YAML子集。

  

它仅支持处理配置文件所需的功能。

有些事情比较难以解决,遗漏的是处理多行标量字符串,文档甚至指出实现多行引用消息要简单得多(即标量字符串)不受支持。

声称是最好的在线YAML验证器的

Codebeautify也无法处理这个正确的YAML文档,但是它们似乎也使用了缺陷的PHP YAML解析器。

如果您坚持使用PHP,那么您可以做三件事,使用literal style scalars可读性更高(请注意序列元素指示符|后面的-):< / p>

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源完全相同,通过比PHP使用的更完整的YAML解析器。文字样式加载了不同的东西,但如果您的应用程序以相同的方式处理这些标量字符串中的换行符和空格,那么它可能仍然有用。

答案 1 :(得分:0)

找到answerone 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