PHPMD捕获/抑制致命错误
发布时间:2020-12-13 22:24:30 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试自动化我的测试.作为一个冒烟测试,我想在继续实际的单元测试之前用 PHPMD检查我的 PHP代码.听起来足够明智吧? 事实是,当我的PHP文件出现致命错误时,PHPMD似乎崩溃了.对于测试,我在函数定义中添加了额外的荣誉,如下所示: function foo() {{ // St
我正在尝试自动化我的测试.作为一个冒烟测试,我想在继续实际的单元测试之前用
PHPMD检查我的
PHP代码.听起来足够明智吧?
事实是,当我的PHP文件出现致命错误时,PHPMD似乎崩溃了.对于测试,我在函数定义中添加了额外的荣誉,如下所示: function foo() {{ // Stuff } 如果我期望1退出代码,PHPMD似乎完全崩溃,而是返回0退出代码.渲染我的自动脚本无用.有没有办法抑制这些错误并返回预期的退出代码?对于PHPUnit,– process-isolation选项解决了这个问题,但我似乎无法为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; } 解决方法
作为一种解决方法(和可能的解决方案),可以在将语法传递给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',$returnCode); if ($returnCode != 0) { echo '[Fail] PHP contains syntax errors',PHP_EOL,implode(PHP_EOL,$output),PHP_EOL; exit($returnCode); } exec('meta/phpmd',$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; } 感谢Reddit的Winglian的大量php -l代码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |