PHPMD捕获/抑制致命错误
我正在尝试自动化我的测试。作为冒烟测试,在继续进行实际的单元测试之前,我想用PHPMD检查我的PHP代码。听起来很合理,对吗 问题是,当PHP文件中出现致命错误时,PHPMD似乎会崩溃。对于一个测试,我在函数定义中添加了额外的荣誉,如下所示:PHPMD捕获/抑制致命错误,php,testing,phpmd,Php,Testing,Phpmd,我正在尝试自动化我的测试。作为冒烟测试,在继续进行实际的单元测试之前,我想用PHPMD检查我的PHP代码。听起来很合理,对吗 问题是,当PHP文件中出现致命错误时,PHPMD似乎会崩溃。对于一个测试,我在函数定义中添加了额外的荣誉,如下所示: function foo() {{ // Stuff } 如果我预期会出现1退出代码,PHPMD似乎会完全崩溃,并返回0退出代码。使我的自动脚本无效。有没有办法抑制这些错误并返回预期的退出代码?对于PHPUnit,--进程隔离选项解决了这个问题,
function foo() {{
// Stuff
}
如果我预期会出现1
退出代码,PHPMD似乎会完全崩溃,并返回0
退出代码。使我的自动脚本无效。有没有办法抑制这些错误并返回预期的退出代码?对于PHPUnit,--进程隔离
选项解决了这个问题,但我似乎找不到PHPMD的此类选项
相关自动测试代码
#!/usr/bin/php
<?php
exec('meta/phpmd', $output, $returnCode);
if ($returnCode == 1) {
echo '[Fail] PHP code is breaking', PHP_EOL;
exit(1);
} elseif ($returnCode == 2) {
echo '[Warn] PHP code is unclean', PHP_EOL;
} else {
echo '[OK] Code is clean! ', PHP_EOL;
}
#/usr/bin/php
作为一种解决方法(以及可能的解决方案),可以在将语法传递给PHPMD之前检查语法。我将测试代码更改为:
#!/usr/bin/php
<?php
$dir_root = dirname(dirname(__DIR__));
$dir_php = $dir_root . DIRECTORY_SEPARATOR . 'api' . DIRECTORY_SEPARATOR . 'App';
exec('find ' . $dir_php . ' -iname *.php | xargs -n1 php -l 2>/dev/null', $output, $returnCode);
if ($returnCode != 0) {
echo '[Fail] PHP contains syntax errors', PHP_EOL,
implode(PHP_EOL, $output), PHP_EOL;
exit($returnCode);
}
exec('meta/phpmd', $output, $returnCode);
if ($returnCode == 1) {
echo '[Fail] PHP code is breaking', PHP_EOL;
exit(1);
} elseif ($returnCode == 2) {
echo '[Warn] PHP code is unclean', PHP_EOL;
}
#/usr/bin/php