0

我在使用 php Depend 和 PMD 时遇到问题。当我使用:

pdepend --summary-xml=/home/<mydirectory>/.sonar/pdepend.xml --suffix=php,php3,php4,php5,phtml,inc /home/<mydirectory>

这是结果:

解析
……………………………………………………………………………………………………………………………………………… .... 1260
.........................PHP Catchable 致命错误:传递给 PHP_Depend_Parser_UnexpectedTokenException::__construct() 的参数 1 必须是 PHP_Depend_Token 的实例,给定整数,调用在第 5444 行的 /usr/share/php/PHP/Depend/Parser.php 中并在第 70 行的 /usr/share/php/PHP/Depend/Parser/UnexpectedTokenException.php 中定义 PHP 堆栈跟踪:PHP 1. {main} () /usr/bin/pdepend:0 PHP 2. PHP_Depend_TextUI_Command::main() /usr/bin/pdepend:78 PHP 3. PHP_Depend_TextUI_Command->run() /usr/share/php/PHP/Depend/TextUI/Command .php:679 PHP 4. PHP_Depend_TextUI_Runner->run() /usr/share/php/PHP/Depend/TextUI/Command.php:206 PHP 5. PHP_Depend->analyze() /usr/share/php/PHP/Depend /TextUI/Runner.php:331 PHP 6. PHP_Depend->performParseProcess() /usr/share/php/PHP/Depend.php:306 PHP 7.PHP_Depend_Parser->parse() /usr/share/php/PHP/Depend.php:560 PHP 8. PHP_Depend_Parser->parseOptionalStatement() /usr/share/php/PHP/Depend/Parser.php:370 PHP 9. PHP_Depend_Parser- >parseIfStatement() /usr/share/php/PHP/Depend/Parser.php:5474 PHP 10. PHP_Depend_Parser->parseStatementBody() /usr/share/php/PHP/Depend/Parser.php:3195 PHP 11. PHP_Depend_Parser- >parseStatement() /usr/share/php/PHP/Depend/Parser.php:2320 PHP 12. PHP_Depend_Parser_UnexpectedTokenException->__construct() /usr/share/php/PHP/Depend/Parser.php:5444PHP_Depend_Parser->parseStatementBody() /usr/share/php/PHP/Depend/Parser.php:3195 PHP 11. PHP_Depend_Parser->parseStatement() /usr/share/php/PHP/Depend/Parser.php:2320 PHP 12. PHP_Depend_Parser_UnexpectedTokenException->__construct() /usr/share/php/PHP/Depend/Parser.php:5444PHP_Depend_Parser->parseStatementBody() /usr/share/php/PHP/Depend/Parser.php:3195 PHP 11. PHP_Depend_Parser->parseStatement() /usr/share/php/PHP/Depend/Parser.php:2320 PHP 12. PHP_Depend_Parser_UnexpectedTokenException->__construct() /usr/share/php/PHP/Depend/Parser.php:5444

同样的情况发生在:

phpmd /home/<mydirectory> xml /home/<mydirectory>/Sonar_Way_php.xml 

PHP Catchable 致命错误:传递给 PHP_Depend_Parser_UnexpectedTokenException::__construct() 的参数 1 必须是 PHP_Depend_Token 的实例,给定整数,在 /usr/share/php/PHP/Depend/Parser.php 的第 5444 行调用并在 /usr/ 中定义share/php/PHP/Depend/Parser/UnexpectedTokenException.php 在第 70 行 PHP 堆栈跟踪:

PHP   1. {main}() /usr/bin/phpmd:0
PHP   2. PHP_PMD_TextUI_Command::main() /usr/bin/phpmd:48
PHP   3. PHP_PMD_TextUI_Command->run() /usr/share/php/PHP/PMD/TextUI/Command.php:151
PHP   4. PHP_PMD->processFiles() /usr/share/php/PHP/PMD/TextUI/Command.php:129
PHP   5. PHP_PMD_Parser->parse() /usr/share/php/PHP/PMD.php:203
PHP   6. PHP_Depend->analyze() /usr/share/php/PHP/PMD/Parser.php:128
PHP   7. PHP_Depend->performParseProcess() /usr/share/php/PHP/Depend.php:306
PHP   8. PHP_Depend_Parser->parse() /usr/share/php/PHP/Depend.php:560
PHP   9. PHP_Depend_Parser->parseOptionalStatement() /usr/share/php/PHP/Depend/Parser.php:370
PHP  10. PHP_Depend_Parser->parseIfStatement() /usr/share/php/PHP/Depend/Parser.php:5474
PHP  11. PHP_Depend_Parser->parseStatementBody() /usr/share/php/PHP/Depend/Parser.php:3195
PHP  12. PHP_Depend_Parser->parseStatement() /usr/share/php/PHP/Depend/Parser.php:2320
PHP  13. PHP_Depend_Parser_UnexpectedTokenException->__construct() /usr/share/php/PHP/Depend/Parser.php:5444

¿ 有什么建议吗?谢谢。

4

1 回答 1

0

这是 pdepend 和 pmd 的错误。在 /usr/share/php/PHP/Depend/parser.php 我改变了:

private function parseStatement()
{
    if (null === ($stmt = $this->parseOptionalStatement())) {
        throw new PHP_Depend_Parser_UnexpectedTokenException(
            $this->tokenizer->next(),
            $this->sourceFile->getFileName()
        );
    }
    return $stmt;
}

为了这:

private function parseStatement()
{
    if (null === ($stmt = $this->parseOptionalStatement())) {
        throw new PHP_Depend_Parser_UnexpectedTokenException(
            new PHP_Depend_Token,
            $this->sourceFile->getFileName()
        );
    }
    return $stmt;
}

我只收到警告,过程继续:

PHP 警告:缺少 PHP_Depend_Token::__construct() 的参数 1,在第 5442 行的 /usr/share/php/PHP/Depend/Parser.php 中调用并在 /usr/share/php/PHP/Depend/Token.php 中定义在第 121 行

我们可以等待下一次升级;)

于 2013-07-17T15:05:55.500 回答