From a71f33b21d61198cf36912fced7a7a8de4235ab0 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Wed, 29 May 2019 20:27:13 +0200 Subject: [PATCH] :sparkles: Improve display of deprecation warning --- TwigCS/Linter.php | 40 ++++++++++++++---------- TwigCS/Report/SniffViolation.php | 14 ++++----- TwigCS/Sniff/AbstractPostParserSniff.php | 4 +-- TwigCS/Sniff/AbstractPreParserSniff.php | 7 ++++- 4 files changed, 38 insertions(+), 27 deletions(-) diff --git a/TwigCS/Linter.php b/TwigCS/Linter.php index cbb15a3..b762e74 100644 --- a/TwigCS/Linter.php +++ b/TwigCS/Linter.php @@ -70,19 +70,6 @@ public function run($files, Ruleset $ruleset) // setUp $report = new Report(); - set_error_handler(function ($type, $msg) use ($report) { - if (E_USER_DEPRECATED === $type) { - $sniffViolation = new SniffViolation( - SniffInterface::MESSAGE_TYPE_NOTICE, - $msg, - null, - null - ); - - $report->addMessage($sniffViolation); - } - }); - foreach ($ruleset->getSniffs() as $sniff) { if ($sniff instanceof PostParserSniffInterface) { $this->sniffsExtension->addSniff($sniff); @@ -93,14 +80,15 @@ public function run($files, Ruleset $ruleset) // Process foreach ($files as $file) { + $this->setErrorHandler($report, $file); $this->processTemplate($file, $ruleset, $report); // Add this file to the report. $report->addFile($file); } + restore_error_handler(); // tearDown - restore_error_handler(); foreach ($ruleset->getSniffs() as $sniff) { if ($sniff instanceof PostParserSniffInterface) { $this->sniffsExtension->removeSniff($sniff); @@ -132,8 +120,8 @@ public function processTemplate($file, $ruleset, $report) $sniffViolation = new SniffViolation( SniffInterface::MESSAGE_TYPE_ERROR, $e->getRawMessage(), - $e->getTemplateLine(), - $e->getSourceContext()->getName() + $e->getSourceContext()->getName(), + $e->getTemplateLine() ); $report->addMessage($sniffViolation); @@ -148,7 +136,6 @@ public function processTemplate($file, $ruleset, $report) $sniffViolation = new SniffViolation( SniffInterface::MESSAGE_TYPE_ERROR, sprintf('Unable to tokenize file'), - null, (string) $file ); @@ -167,4 +154,23 @@ public function processTemplate($file, $ruleset, $report) return true; } + + /** + * @param Report $report + * @param string|null $file + */ + protected function setErrorHandler(Report $report, $file = null) + { + set_error_handler(function ($type, $message) use ($report, $file) { + if (E_USER_DEPRECATED === $type) { + $sniffViolation = new SniffViolation( + SniffInterface::MESSAGE_TYPE_NOTICE, + $message, + $file + ); + + $report->addMessage($sniffViolation); + } + }); + } } diff --git a/TwigCS/Report/SniffViolation.php b/TwigCS/Report/SniffViolation.php index 4f0b6a2..29644eb 100644 --- a/TwigCS/Report/SniffViolation.php +++ b/TwigCS/Report/SniffViolation.php @@ -26,7 +26,7 @@ class SniffViolation /** * Line number for the violation. * - * @var int + * @var int|null */ protected $line; @@ -52,12 +52,12 @@ class SniffViolation protected $sniff; /** - * @param int $level - * @param string $message - * @param int $line - * @param string $filename + * @param int $level + * @param string $message + * @param string $filename + * @param int|null $line */ - public function __construct($level, $message, $line, $filename) + public function __construct($level, $message, $filename, $line = null) { $this->level = $level; $this->message = $message; @@ -129,7 +129,7 @@ public function getMessage() /** * Get the line number where this violation occured. * - * @return int + * @return int|null */ public function getLine() { diff --git a/TwigCS/Sniff/AbstractPostParserSniff.php b/TwigCS/Sniff/AbstractPostParserSniff.php index df6ad59..ab6f6b5 100644 --- a/TwigCS/Sniff/AbstractPostParserSniff.php +++ b/TwigCS/Sniff/AbstractPostParserSniff.php @@ -47,8 +47,8 @@ public function addMessage($messageType, $message, Node $node) $sniffViolation = new SniffViolation( $messageType, $message, - $this->getTemplateLine($node), - $this->getTemplateName($node) + $this->getTemplateName($node), + $this->getTemplateLine($node) ); $this->getReport()->addMessage($sniffViolation); diff --git a/TwigCS/Sniff/AbstractPreParserSniff.php b/TwigCS/Sniff/AbstractPreParserSniff.php index 0ac7739..930d0fd 100644 --- a/TwigCS/Sniff/AbstractPreParserSniff.php +++ b/TwigCS/Sniff/AbstractPreParserSniff.php @@ -52,7 +52,12 @@ public function isTokenMatching(Token $token, $type, $value = null) */ public function addMessage($messageType, $message, Token $token) { - $sniffViolation = new SniffViolation($messageType, $message, $token->getLine(), $token->getFilename()); + $sniffViolation = new SniffViolation( + $messageType, + $message, + $token->getFilename(), + $token->getLine() + ); $sniffViolation->setLinePosition($token->getPosition()); $this->getReport()->addMessage($sniffViolation);