New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PhpMetrics v2.0.0 Fatal error on analyze folder (catchable error) #238
Comments
Object of class PhpParser\Node\Expr\PropertyFetch could not be converted to string Environment
Backtrace
|
Hi, did your see the analyzed code in the output ? I cannot reproduce this bug without the parsed code. Can you provide it please ? |
Sorry unfortunately this issue occurs on work proprietary code and I can't publish it but I try to reproduce to another open source code. |
Ok I understand. Maybe you can only provide the code of the analyzed class (you'll find it in the |
Hi, this issue occurs in certain cases where I used the reflection class and variable properties like this: $reflection = new \ReflectionObject($this);
foreach ($reflection->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
$return[$property->name] = $this->{$property->name};
} in this case on functions.php on line 84: return (string) $node->name; $node->name is an object (PhpParser\Node\Expr\PropertyFetch) and cannot be converted to string, if($node->name instanceof \PhpParser\Node\Expr\PropertyFetch) {
return get_class($node->name);
} |
I have submit a pull request to fix this bug #247 |
I have experienced the exact same bug using 2.0.0-rc |
[pounard@guinevere] /var/www/gtd/vendor/makinacorpus/goat
> phpmetrics --exclude="compat,cache,.phan,Tests,benchmarks" --report-html=myreport.html .
680/2408 [=======>--------------------] 28% 24 secsPHP Catchable fatal error: Object of class PhpParser\Node\Expr\ArrayDimFetch could not be converted to string in /home/pounard/.composer/vendor/phpmetrics/phpmetrics/src/functions.php on line 84
PHP Stack trace:
PHP 1. {main}() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/bin/phpmetrics:0
PHP 2. Hal\Application\Application->run() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/bin/phpmetrics:20
PHP 3. Hal\Application\Analyze->run() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/src/Hal/Application/Application.php:56
PHP 4. PhpParser\NodeTraverser->traverse() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/src/Hal/Application/Analyze.php:86
PHP 5. PhpParser\NodeTraverser->traverseArray() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:64
PHP 6. PhpParser\NodeTraverser->traverseNode() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:135
PHP 7. PhpParser\NodeTraverser->traverseArray() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:84
PHP 8. Hal\Metric\Class_\Structural\SystemComplexityVisitor->leaveNode() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:139
PHP 9. iterate_over_node() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/src/Hal/Metric/Class_/Structural/SystemComplexityVisitor.php:64
PHP 10. PhpParser\NodeTraverser->traverse() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/src/functions.php:39
PHP 11. PhpParser\NodeTraverser->traverseArray() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:64
PHP 12. PhpParser\NodeTraverser->traverseNode() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:135
PHP 13. PhpParser\NodeTraverser->traverseArray() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:84
PHP 14. PhpParser\NodeTraverser->traverseNode() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:135
PHP 15. PhpParser\NodeTraverser->traverseArray() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:84
PHP 16. PhpParser\NodeTraverser->traverseNode() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:135
PHP 17. PhpParser\NodeTraverser->traverseArray() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:84
PHP 18. PhpParser\NodeTraverser->traverseNode() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:135
PHP 19. PhpParser\NodeTraverser->traverseArray() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:84
PHP 20. MyVisitor->leaveNode() /home/pounard/.composer/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php:139
PHP 21. Hal\Metric\Class_\Structural\SystemComplexityVisitor->Hal\Metric\Class_\Structural\{closure}() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/src/functions.php:26
PHP 22. getNameOfNode() /home/pounard/.composer/vendor/phpmetrics/phpmetrics/src/Hal/Metric/Class_/Structural/SystemComplexityVisitor.php:62 |
I have error about ArrayDimFetch on this repo and this commit : |
This issue has been fixed8755576 by @clagiordano . I've added unit tests with 1310058ed70c483fd67ccf5dfcc409251587f843 |
My test environment:
The text was updated successfully, but these errors were encountered: