首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPMD捕获/抑制致命错误

PHPMD捕获/抑制致命错误
EN

Stack Overflow用户
提问于 2015-11-03 08:07:48
回答 1查看 251关注 0票数 4

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

问题是,当PHP文件中出现致命错误时,PHPMD似乎会崩溃。在测试中,我在函数定义中添加了一个额外的荣誉,如下所示:

代码语言:javascript
复制
function foo() {{
    // Stuff
}

如果我期望一个1退出代码,那么PHPMD似乎会完全崩溃,而是返回一个0退出代码。使我的自动脚本毫无用处。是否有一种方法来抑制这些错误并返回预期的退出代码?对于PHPUnit,--process-isolation选项解决了这个问题,但我似乎无法为PHPMD找到这样的选项。

相关自动化测试代码

代码语言:javascript
复制
#!/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;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 12:12:49

作为一种解决方法(以及可能的解决方案),可以在将语法传递给PHPMD之前检查语法。我将测试代码更改为:

代码语言:javascript
复制
#!/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;
}

为大众php -l代码parallel/在Reddit工作的温莲学分

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33494132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档