2017-07-20 56 views
0

我想運行嚴格的語法檢查: 如何在Travis CI中語法檢查php文件?

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

我特拉維斯CI項目中的所有PHP文件。

我試圖用找到,但它始終只是返回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 

回答

1

我解決了這個通過檢查發現 + 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的返回如果發現任何東西,如果沒有找到任何東西,我們需要在該命令的開頭使用感嘆號否定最終結果。否則,這個命令會在一切正常時失敗,並在失敗時成功。