使用PHP_Depend和PHP_PMD时出错

时间:2013-07-11 11:18:30

标签: sonarqube pmd pdepend

我使用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-&gt; run()/usr/share/php/PHP/Depend/TextUI/Command.php:679       PHP 4. PHP_Depend_TextUI_Runner-&gt; run()/usr/share/php/PHP/Depend/TextUI/Command.php:206       PHP 5. PHP_Depend-&gt; analyze()/usr/share/php/PHP/Depend/TextUI/Runner.php:331       PHP 6. PHP_Depend-&gt; performParseProcess()/ usr / share / php / PHP / Depend.php:30       PHP 7. PHP_Depend_Parser-&gt; parse()/ usr / share / php / PHP / Depend.php:560       PHP 8. PHP_Depend_Parser-&gt; parseOptionalStatement()/usr/share/php/PHP/Depend/Parser.php:370       PHP 9. PHP_Depend_Parser-&gt; parseIfStatement()/usr/share/php/PHP/Depend/Parser.php:5474       PHP 10. PHP_Depend_Parser-&gt; parseStatementBody()/ usr / share / php / PHP / Depend /Parser.php:3195       PHP 11. PHP_Depend_Parser-&gt; parseStatement()/usr/share/php/PHP/Depend/Parser.php:2320       PHP 12. PHP_Depend_Parser_UnexpectedTokenException-&gt; __ 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的实例,给定整数,在5444行的/usr/share/php/PHP/Depend/Parser.php中调用并在第70行的/usr/share/php/PHP/Depend/Parser/UnexpectedTokenException.php   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

¿任何消化?感谢。

1 个答案:

答案 0 :(得分: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 /中定义第121行的Token.php

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