gpt4 book ai didi

PHPMD 捕获/抑制 fatal error

转载 作者:可可西里 更新时间:2023-10-31 23:46:38 26 4
gpt4 key购买 nike

我正在尝试自动化我的测试。作为冒烟测试,我想在继续实际的单元测试之前用 PHPMD 检查我的 PHP 代码。听起来很明智吧?

当我的 PHP 文件中出现 fatal error 时,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', $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;
}

感谢 Winglian 在 Reddit 上的大量 php -l 代码 https://www.reddit.com/r/PHP/comments/2t7mvc/lint_an_entire_directory_of_php_files_in_parallel/

关于PHPMD 捕获/抑制 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com