Skip to content

Commit dcb325d

Browse files
committed
Precise line only for BleedingEdge
1 parent 425d464 commit dcb325d

File tree

4 files changed

+30
-5
lines changed

4 files changed

+30
-5
lines changed

conf/config.neon

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,8 @@ services:
10431043

10441044
-
10451045
class: PHPStan\Rules\UnusedFunctionParametersCheck
1046+
arguments:
1047+
reportExactLine: %featureToggles.bleedingEdge%
10461048

10471049
-
10481050
class: PHPStan\Rules\TooWideTypehints\TooWideParameterOutTypeCheck

src/Rules/UnusedFunctionParametersCheck.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
final class UnusedFunctionParametersCheck
1919
{
2020

21-
public function __construct(private ReflectionProvider $reflectionProvider)
21+
public function __construct(
22+
private ReflectionProvider $reflectionProvider,
23+
private bool $reportExactLine,
24+
)
2225
{
2326
}
2427

@@ -52,9 +55,11 @@ public function getUnusedParameters(
5255
}
5356
$errors = [];
5457
foreach ($unusedParameters as $name => $variable) {
55-
$errors[] = RuleErrorBuilder::message(
56-
sprintf($unusedParameterMessage, $name),
57-
)->identifier($identifier)->line($variable->getStartLine())->build();
58+
$errorBuilder = RuleErrorBuilder::message(sprintf($unusedParameterMessage, $name))->identifier($identifier);
59+
if ($this->reportExactLine) {
60+
$errorBuilder->line($variable->getStartLine());
61+
}
62+
$errors[] = $errorBuilder->build();
5863
}
5964

6065
return $errors;

tests/PHPStan/Rules/Classes/UnusedConstructorParametersRuleTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,31 @@
1212
class UnusedConstructorParametersRuleTest extends RuleTestCase
1313
{
1414

15+
private bool $reportExactLine = true;
16+
1517
protected function getRule(): Rule
1618
{
1719
return new UnusedConstructorParametersRule(new UnusedFunctionParametersCheck(
1820
$this->createReflectionProvider(),
21+
$this->reportExactLine,
1922
));
2023
}
2124

25+
public function testUnusedConstructorParametersNoExactLine(): void
26+
{
27+
$this->reportExactLine = false;
28+
$this->analyse([__DIR__ . '/data/unused-constructor-parameters.php'], [
29+
[
30+
'Constructor of class UnusedConstructorParameters\Foo has an unused parameter $unusedParameter.',
31+
11,
32+
],
33+
[
34+
'Constructor of class UnusedConstructorParameters\Foo has an unused parameter $anotherUnusedParameter.',
35+
11,
36+
],
37+
]);
38+
}
39+
2240
public function testUnusedConstructorParameters(): void
2341
{
2442
$this->analyse([__DIR__ . '/data/unused-constructor-parameters.php'], [

tests/PHPStan/Rules/Functions/UnusedClosureUsesRuleTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class UnusedClosureUsesRuleTest extends RuleTestCase
1414

1515
protected function getRule(): Rule
1616
{
17-
return new UnusedClosureUsesRule(new UnusedFunctionParametersCheck($this->createReflectionProvider()));
17+
return new UnusedClosureUsesRule(new UnusedFunctionParametersCheck($this->createReflectionProvider(), true));
1818
}
1919

2020
public function testUnusedClosureUses(): void

0 commit comments

Comments
 (0)