Skip to content

Commit a71f33b

Browse files
✨ Improve display of deprecation warning
1 parent 11b5c47 commit a71f33b

File tree

4 files changed

+38
-27
lines changed

4 files changed

+38
-27
lines changed

TwigCS/Linter.php

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -70,19 +70,6 @@ public function run($files, Ruleset $ruleset)
7070

7171
// setUp
7272
$report = new Report();
73-
set_error_handler(function ($type, $msg) use ($report) {
74-
if (E_USER_DEPRECATED === $type) {
75-
$sniffViolation = new SniffViolation(
76-
SniffInterface::MESSAGE_TYPE_NOTICE,
77-
$msg,
78-
null,
79-
null
80-
);
81-
82-
$report->addMessage($sniffViolation);
83-
}
84-
});
85-
8673
foreach ($ruleset->getSniffs() as $sniff) {
8774
if ($sniff instanceof PostParserSniffInterface) {
8875
$this->sniffsExtension->addSniff($sniff);
@@ -93,14 +80,15 @@ public function run($files, Ruleset $ruleset)
9380

9481
// Process
9582
foreach ($files as $file) {
83+
$this->setErrorHandler($report, $file);
9684
$this->processTemplate($file, $ruleset, $report);
9785

9886
// Add this file to the report.
9987
$report->addFile($file);
10088
}
89+
restore_error_handler();
10190

10291
// tearDown
103-
restore_error_handler();
10492
foreach ($ruleset->getSniffs() as $sniff) {
10593
if ($sniff instanceof PostParserSniffInterface) {
10694
$this->sniffsExtension->removeSniff($sniff);
@@ -132,8 +120,8 @@ public function processTemplate($file, $ruleset, $report)
132120
$sniffViolation = new SniffViolation(
133121
SniffInterface::MESSAGE_TYPE_ERROR,
134122
$e->getRawMessage(),
135-
$e->getTemplateLine(),
136-
$e->getSourceContext()->getName()
123+
$e->getSourceContext()->getName(),
124+
$e->getTemplateLine()
137125
);
138126

139127
$report->addMessage($sniffViolation);
@@ -148,7 +136,6 @@ public function processTemplate($file, $ruleset, $report)
148136
$sniffViolation = new SniffViolation(
149137
SniffInterface::MESSAGE_TYPE_ERROR,
150138
sprintf('Unable to tokenize file'),
151-
null,
152139
(string) $file
153140
);
154141

@@ -167,4 +154,23 @@ public function processTemplate($file, $ruleset, $report)
167154

168155
return true;
169156
}
157+
158+
/**
159+
* @param Report $report
160+
* @param string|null $file
161+
*/
162+
protected function setErrorHandler(Report $report, $file = null)
163+
{
164+
set_error_handler(function ($type, $message) use ($report, $file) {
165+
if (E_USER_DEPRECATED === $type) {
166+
$sniffViolation = new SniffViolation(
167+
SniffInterface::MESSAGE_TYPE_NOTICE,
168+
$message,
169+
$file
170+
);
171+
172+
$report->addMessage($sniffViolation);
173+
}
174+
});
175+
}
170176
}

TwigCS/Report/SniffViolation.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class SniffViolation
2626
/**
2727
* Line number for the violation.
2828
*
29-
* @var int
29+
* @var int|null
3030
*/
3131
protected $line;
3232

@@ -52,12 +52,12 @@ class SniffViolation
5252
protected $sniff;
5353

5454
/**
55-
* @param int $level
56-
* @param string $message
57-
* @param int $line
58-
* @param string $filename
55+
* @param int $level
56+
* @param string $message
57+
* @param string $filename
58+
* @param int|null $line
5959
*/
60-
public function __construct($level, $message, $line, $filename)
60+
public function __construct($level, $message, $filename, $line = null)
6161
{
6262
$this->level = $level;
6363
$this->message = $message;
@@ -129,7 +129,7 @@ public function getMessage()
129129
/**
130130
* Get the line number where this violation occured.
131131
*
132-
* @return int
132+
* @return int|null
133133
*/
134134
public function getLine()
135135
{

TwigCS/Sniff/AbstractPostParserSniff.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public function addMessage($messageType, $message, Node $node)
4747
$sniffViolation = new SniffViolation(
4848
$messageType,
4949
$message,
50-
$this->getTemplateLine($node),
51-
$this->getTemplateName($node)
50+
$this->getTemplateName($node),
51+
$this->getTemplateLine($node)
5252
);
5353

5454
$this->getReport()->addMessage($sniffViolation);

TwigCS/Sniff/AbstractPreParserSniff.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ public function isTokenMatching(Token $token, $type, $value = null)
5252
*/
5353
public function addMessage($messageType, $message, Token $token)
5454
{
55-
$sniffViolation = new SniffViolation($messageType, $message, $token->getLine(), $token->getFilename());
55+
$sniffViolation = new SniffViolation(
56+
$messageType,
57+
$message,
58+
$token->getFilename(),
59+
$token->getLine()
60+
);
5661
$sniffViolation->setLinePosition($token->getPosition());
5762

5863
$this->getReport()->addMessage($sniffViolation);

0 commit comments

Comments
 (0)