Skip to content

Commit aae12c8

Browse files
authored
Make allowUnusedParametersBeforeUsed default to true (#59)
* Tests: Make allowUnusedParametersBeforeUsed default to true * Make allowUnusedParametersBeforeUsed default to true * Tests: Set allowUnusedParametersBeforeUsed in more tests * Tests: Add test for unused after anonymous function * Update README for allowUnusedParametersBeforeUsed
1 parent 0776f89 commit aae12c8

File tree

4 files changed

+85
-9
lines changed

4 files changed

+85
-9
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ The available options are as follows:
6464

6565
- `allowUnusedFunctionParameters` (bool, default `false`): if set to true, function arguments will never be marked as unused.
6666
- `allowUnusedCaughtExceptions` (bool, default `false`): if set to true, caught Exception variables will never be marked as unused.
67-
- `allowUnusedParametersBeforeUsed` (bool, default `false`): if set to true, unused function arguments will be ignored if they are followed by used function arguments.
67+
- `allowUnusedParametersBeforeUsed` (bool, default `true`): if set to true, unused function arguments will be ignored if they are followed by used function arguments.
6868
- `validUnusedVariableNames` (string, default `null`): a space-separated list of names of placeholder variables that you want to ignore from unused variable warnings. For example, to ignore the variables `$junk` and `$unused`, this could be set to `'junk unused'`.
6969
- `ignoreUnusedRegexp` (string, default `null`): a PHP regexp string (note that this requires explicit delimiters) for variables that you want to ignore from unused variable warnings. For example, to ignore the variables `$_junk` and `$_unused`, this could be set to `'/^_/'`.
7070
- `validUndefinedVariableNames` (string, default `null`): a space-separated list of names of placeholder variables that you want to ignore from undefined variable warnings. For example, to ignore the variables `$post` and `$undefined`, this could be set to `'post undefined'`.

VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class VariableAnalysisSniff implements Sniff {
6565
* Allows unused arguments in a function definition if they are
6666
* followed by an argument which is used.
6767
*/
68-
public $allowUnusedParametersBeforeUsed = false;
68+
public $allowUnusedParametersBeforeUsed = true;
6969

7070
public function register() {
7171
return [

VariableAnalysis/Tests/CodeAnalysis/VariableAnalysisTest.php

Lines changed: 70 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ public function testFunctionWithUseReferenceWarnings() {
4747
public function testFunctionWithDefaultParamErrors() {
4848
$fixtureFile = $this->getFixture('FunctionWithDefaultParamFixture.php');
4949
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
50+
$phpcsFile->ruleset->setSniffProperty(
51+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
52+
'allowUnusedParametersBeforeUsed',
53+
'false'
54+
);
5055
$phpcsFile->process();
5156
$lines = $this->getErrorLineNumbersFromFile($phpcsFile);
5257
$expectedErrors = [];
@@ -56,6 +61,11 @@ public function testFunctionWithDefaultParamErrors() {
5661
public function testFunctionWithDefaultParamWarnings() {
5762
$fixtureFile = $this->getFixture('FunctionWithDefaultParamFixture.php');
5863
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
64+
$phpcsFile->ruleset->setSniffProperty(
65+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
66+
'allowUnusedParametersBeforeUsed',
67+
'false'
68+
);
5969
$phpcsFile->process();
6070
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
6171
$expectedWarnings = [
@@ -182,6 +192,11 @@ public function testFunctionsOutsideClassWarnings() {
182192
public function testFunctionWithClosureErrors() {
183193
$fixtureFile = $this->getFixture('FunctionWithClosureFixture.php');
184194
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
195+
$phpcsFile->ruleset->setSniffProperty(
196+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
197+
'allowUnusedParametersBeforeUsed',
198+
'false'
199+
);
185200
$phpcsFile->process();
186201
$lines = $this->getErrorLineNumbersFromFile($phpcsFile);
187202
$expectedErrors = [
@@ -193,6 +208,11 @@ public function testFunctionWithClosureErrors() {
193208
public function testFunctionWithClosureWarnings() {
194209
$fixtureFile = $this->getFixture('FunctionWithClosureFixture.php');
195210
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
211+
$phpcsFile->ruleset->setSniffProperty(
212+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
213+
'allowUnusedParametersBeforeUsed',
214+
'false'
215+
);
196216
$phpcsFile->process();
197217
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
198218
$expectedWarnings = [
@@ -369,6 +389,11 @@ public function testClassReferenceWarnings() {
369389
public function testCompactErrors() {
370390
$fixtureFile = $this->getFixture('CompactFixture.php');
371391
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
392+
$phpcsFile->ruleset->setSniffProperty(
393+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
394+
'allowUnusedParametersBeforeUsed',
395+
'false'
396+
);
372397
$phpcsFile->process();
373398
$lines = $this->getErrorLineNumbersFromFile($phpcsFile);
374399
$expectedErrors = [];
@@ -378,6 +403,11 @@ public function testCompactErrors() {
378403
public function testCompactWarnings() {
379404
$fixtureFile = $this->getFixture('CompactFixture.php');
380405
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
406+
$phpcsFile->ruleset->setSniffProperty(
407+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
408+
'allowUnusedParametersBeforeUsed',
409+
'false'
410+
);
381411
$phpcsFile->process();
382412
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
383413
$expectedWarnings = [
@@ -419,6 +449,11 @@ public function testAnonymousClassAllowsThis() {
419449
public function testVariableFunctionCallsCountAsUsage() {
420450
$fixtureFile = $this->getFixture('FunctionWithVariableCallFixture.php');
421451
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
452+
$phpcsFile->ruleset->setSniffProperty(
453+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
454+
'allowUnusedParametersBeforeUsed',
455+
'false'
456+
);
422457
$phpcsFile->process();
423458
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
424459
$expectedWarnings = [18];
@@ -455,6 +490,11 @@ public function testAnonymousClassAllowPropertyDefinitions() {
455490
public function testUnusedParamsAreReported() {
456491
$fixtureFile = $this->getFixture('FunctionWithUnusedParamsFixture.php');
457492
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
493+
$phpcsFile->ruleset->setSniffProperty(
494+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
495+
'allowUnusedParametersBeforeUsed',
496+
'false'
497+
);
458498
$phpcsFile->process();
459499
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
460500
$expectedWarnings = [
@@ -472,6 +512,11 @@ public function testUnusedParamsAreReported() {
472512
public function testValidUnusedVariableNamesIgnoresUnusedVariables() {
473513
$fixtureFile = $this->getFixture('FunctionWithUnusedParamsFixture.php');
474514
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
515+
$phpcsFile->ruleset->setSniffProperty(
516+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
517+
'allowUnusedParametersBeforeUsed',
518+
'false'
519+
);
475520
$phpcsFile->ruleset->setSniffProperty(
476521
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
477522
'validUnusedVariableNames',
@@ -493,6 +538,11 @@ public function testValidUnusedVariableNamesIgnoresUnusedVariables() {
493538
public function testAllowUnusedFunctionParametersIgnoresUnusedVariables() {
494539
$fixtureFile = $this->getFixture('FunctionWithUnusedParamsFixture.php');
495540
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
541+
$phpcsFile->ruleset->setSniffProperty(
542+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
543+
'allowUnusedParametersBeforeUsed',
544+
'false'
545+
);
496546
$phpcsFile->ruleset->setSniffProperty(
497547
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
498548
'allowUnusedFunctionParameters',
@@ -509,6 +559,11 @@ public function testAllowUnusedFunctionParametersIgnoresUnusedVariables() {
509559
public function testAllowUnusedCaughtExceptionsIgnoresUnusedVariables() {
510560
$fixtureFile = $this->getFixture('FunctionWithUnusedParamsFixture.php');
511561
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
562+
$phpcsFile->ruleset->setSniffProperty(
563+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
564+
'allowUnusedParametersBeforeUsed',
565+
'false'
566+
);
512567
$phpcsFile->ruleset->setSniffProperty(
513568
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
514569
'allowUnusedCaughtExceptions',
@@ -530,6 +585,11 @@ public function testAllowUnusedCaughtExceptionsIgnoresUnusedVariables() {
530585
public function testIgnoreUnusedRegexpIgnoresUnusedVariables() {
531586
$fixtureFile = $this->getFixture('FunctionWithUnusedParamsFixture.php');
532587
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
588+
$phpcsFile->ruleset->setSniffProperty(
589+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
590+
'allowUnusedParametersBeforeUsed',
591+
'false'
592+
);
533593
$phpcsFile->ruleset->setSniffProperty(
534594
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
535595
'ignoreUnusedRegexp',
@@ -598,30 +658,33 @@ public function testValidUndefinedVariableNamesIgnoresUndefinedProperties() {
598658
$this->assertEquals($expectedWarnings, $lines);
599659
}
600660

601-
public function testUnusedArgumentsBeforeUsedArgumentsAreFound() {
661+
public function testUnusedArgumentsBeforeUsedArgumentsAreFoundIfFalse() {
602662
$fixtureFile = $this->getFixture('UnusedAfterUsedFixture.php');
603663
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
664+
$phpcsFile->ruleset->setSniffProperty(
665+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
666+
'allowUnusedParametersBeforeUsed',
667+
'false'
668+
);
604669
$phpcsFile->process();
605670
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
606671
$expectedWarnings = [
607672
5,
608673
8,
674+
16,
675+
19,
609676
];
610677
$this->assertEquals($expectedWarnings, $lines);
611678
}
612679

613-
public function testUnusedArgumentsBeforeUsedArgumentsAreIgnoredIfSet() {
680+
public function testUnusedArgumentsBeforeUsedArgumentsAreIgnoredByDefault() {
614681
$fixtureFile = $this->getFixture('UnusedAfterUsedFixture.php');
615682
$phpcsFile = $this->prepareLocalFileForSniffs($this->getSniffFiles(), $fixtureFile);
616-
$phpcsFile->ruleset->setSniffProperty(
617-
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
618-
'allowUnusedParametersBeforeUsed',
619-
'true'
620-
);
621683
$phpcsFile->process();
622684
$lines = $this->getWarningLineNumbersFromFile($phpcsFile);
623685
$expectedWarnings = [
624686
8,
687+
19,
625688
];
626689
$this->assertEquals($expectedWarnings, $lines);
627690
}

VariableAnalysis/Tests/CodeAnalysis/fixtures/UnusedAfterUsedFixture.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,16 @@ function check_thumbnail_updated_post_meta(
1010
echo $post_id;
1111
echo $meta_key;
1212
}
13+
14+
function inner_function() {
15+
$foo = function(
16+
$meta_id,
17+
$post_id,
18+
$meta_key,
19+
$foobar
20+
) {
21+
echo $post_id;
22+
echo $meta_key;
23+
}
24+
$foo();
25+
}

0 commit comments

Comments
 (0)