我使用phpdocumentor进行php代码嗅探。这已经运行了很长时间,但突然间,当它试图将分析的项目转换为工件时,我遇到了致命的错误:
Transform analyzed project into artifacts .. PHP Fatal error: Call to a member function getMethods() on a non-object in /usr/share/php/phpDocumentor/src/phpDocumentor/Descriptor/ClassDescriptor.php on line 176
PHP Stack trace:
PHP 1. {main}() /usr/bin/phpdoc:0
PHP 2. phpDocumentor\Application->run() /usr/bin/phpdoc:29
PHP 3. Symfony\Component\Console\Application->run() /usr/share/php/phpDocumentor/src/phpDocumentor/Application.php:425
PHP 4. Symfony\Component\Console\Application->doRun() /usr/share/php/phpDocumentor/vendor/symfony/console/Symfony/Component/Console/Application.php:121
PHP 5. Symfony\Component\Console\Application->doRunCommand() /usr/share/php/phpDocumentor/vendor/symfony/console/Symfony/Component/Console/Application.php:191
PHP 6. Symfony\Component\Console\Command\Command->run() /usr/share/php/phpDocumentor/vendor/symfony/console/Symfony/Component/Console/Application.php:895
PHP 7. phpDocumentor\Command\Project\RunCommand->execute() /usr/share/php/phpDocumentor/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:241
PHP 8. Symfony\Component\Console\Command\Command->run() /usr/share/php/phpDocumentor/src/phpDocumentor/Command/Project/RunCommand.php:269
PHP 9. phpDocumentor\Transformer\Command\Project\TransformCommand->execute() /usr/share/php/phpDocumentor/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:241
etc..
etc..
我检查了ClassDescriptor.php文件中的第176行,其中包含:
175 foreach($this->getUsedTraits() as $trait) {
176 $inheritedMethods = $inheritedMethods->merge(clone $trait->getMethods());
177 }
在这里,我有点卡住了。我不知道为什么在phpdocumentor中会突然出现错误,但我也不知道它可能是什么。
有人知道如何解决这个问题吗?欢迎任何调试技巧!
答案 0 :(得分:0)
我在2.5.0中遇到了同样的错误,结果我所需要的只是升级。它在2.6.1中得到了解决。
确保在运行新版本之前删除目标phpdoc目录中的所有缓存目录。
(我用sudo peardev upgrade-all
btw升级了