phpstan-src icon indicating copy to clipboard operation
phpstan-src copied to clipboard

Generated baseline can't be used if regex can't be compilated to UTF-8 chars

Open staabm opened this issue 9 months ago • 4 comments
trafficstars

closes https://github.com/phpstan/phpstan/issues/12629

observations:

  • baseline generation crashed PHPStan before this fix
Fatal error: Uncaught Nette\Neon\Exception: Invalid UTF-8 sequence: #^Regex pattern is invalid\: Compilation failed\: UTF\-8 error\: byte 2 top bits not 0x80 at offset 0 in pattern\: \!�\[�\-�\]\!u$# in /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/StringNode.php:84
Stack trace:
#0 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\StringNode->toString()
#1 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#2 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\BlockArrayNode->toString()
#3 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#4 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\BlockArrayNode->toString()
#5 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#6 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/ArrayItemNode.php(63): Nette\Neon\Node\BlockArrayNode->toString()
#7 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Node/BlockArrayNode.php(32): Nette\Neon\Node\ArrayItemNode::itemsToBlockString(Array)
#8 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Encoder.php(35): Nette\Neon\Node\BlockArrayNode->toString()
#9 /Users/staabm/workspace/phpstan-src/vendor/nette/neon/src/Neon/Neon.php(32): Nette\Neon\Encoder->encode(Array)
#10 /Users/staabm/workspace/phpstan-src/src/Command/ErrorFormatter/BaselineNeonErrorFormatter.php(76): Nette\Neon\Neon::encode(Array, true)

staabm avatar Feb 22 '25 11:02 staabm

This pull request has been marked as ready for review.

phpstan-bot avatar Feb 22 '25 11:02 phpstan-bot

(sorry for too many pushes. trial and error debugging in github actions is sometimes not avoidable)

staabm avatar Feb 22 '25 13:02 staabm

I feel like this can happen in any rule that will report something about a ConstantStringType and prints it with VerbosityLevel::value().

This needs a fix in the neon library directly, or when encoding/decoding the value.

Maybe in ConstantStringType::describe(). Not sure.

ondrejmirtes avatar Feb 23 '25 06:02 ondrejmirtes

I just found https://github.com/nette/neon/issues/72 in which there was a similar discussion with other control characters. will investigate. opened a new upstream issue in https://github.com/nette/neon/issues/76

staabm avatar Feb 23 '25 06:02 staabm