Skip to content

Commit 1adb848

Browse files
authored
Replace UnusedVariable with UnusedParameter for parameters (#195)
* Replace UnusedVariable with UnusedParameter for parameters * Add new sniff codes in README
1 parent 3fd0109 commit 1adb848

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Plugin for PHP_CodeSniffer static analysis tool that adds analysis of problemati
66

77
- Warns if variables are used without being defined. (Sniff code: `VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable`)
88
- Warns if variables are set or declared but never used. (Sniff code: `VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable`)
9+
- Warns if function parameters are declared but never used. (Sniff code: `VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedParameter`)
10+
- Warns if function parameters are declared but never used before other parameters that are used. (Sniff code: `VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedParameterBeforeUsed`)
911
- Warns if `$this`, `self::$static_member`, `static::$static_member` is used outside class scope. (Sniff codes: `VariableAnalysis.CodeAnalysis.VariableAnalysis.SelfOutsideClass` or `VariableAnalysis.CodeAnalysis.VariableAnalysis.StaticOutsideClass`)
1012

1113
## Installation

VariableAnalysis/Sniffs/CodeAnalysis/VariableAnalysisSniff.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,6 +1684,15 @@ protected function processScopeCloseForVariable(File $phpcsFile, VariableInfo $v
16841684
if ($this->allowUnusedVariablesBeforeRequire && Helpers::isRequireInScopeAfter($phpcsFile, $varInfo, $scopeInfo)) {
16851685
return;
16861686
}
1687+
1688+
if ($varInfo->scopeType === ScopeType::PARAM && Helpers::areFollowingArgumentsUsed($varInfo, $scopeInfo)) {
1689+
$this->warnAboutUnusedParameterBeforeUsed($phpcsFile, $varInfo);
1690+
return;
1691+
}
1692+
if ($varInfo->scopeType === ScopeType::PARAM) {
1693+
$this->warnAboutUnusedParameterAfterUsed($phpcsFile, $varInfo);
1694+
return;
1695+
}
16871696
$this->warnAboutUnusedVariable($phpcsFile, $varInfo);
16881697
}
16891698

@@ -1707,4 +1716,46 @@ protected function warnAboutUnusedVariable(File $phpcsFile, VariableInfo $varInf
17071716
);
17081717
}
17091718
}
1719+
1720+
/**
1721+
* @param File $phpcsFile
1722+
* @param VariableInfo $varInfo
1723+
*
1724+
* @return void
1725+
*/
1726+
protected function warnAboutUnusedParameterAfterUsed(File $phpcsFile, VariableInfo $varInfo) {
1727+
foreach (array_unique($varInfo->allAssignments) as $indexForWarning) {
1728+
Helpers::debug("variable {$varInfo->name} at end of scope looks unused");
1729+
$phpcsFile->addWarning(
1730+
"Unused %s %s.",
1731+
$indexForWarning,
1732+
'UnusedParameter',
1733+
[
1734+
VariableInfo::$scopeTypeDescriptions[$varInfo->scopeType],
1735+
"\${$varInfo->name}",
1736+
]
1737+
);
1738+
}
1739+
}
1740+
1741+
/**
1742+
* @param File $phpcsFile
1743+
* @param VariableInfo $varInfo
1744+
*
1745+
* @return void
1746+
*/
1747+
protected function warnAboutUnusedParameterBeforeUsed(File $phpcsFile, VariableInfo $varInfo) {
1748+
foreach (array_unique($varInfo->allAssignments) as $indexForWarning) {
1749+
Helpers::debug("variable {$varInfo->name} at end of scope looks unused");
1750+
$phpcsFile->addWarning(
1751+
"Unused %s %s.",
1752+
$indexForWarning,
1753+
'UnusedParameterBeforeUsed',
1754+
[
1755+
VariableInfo::$scopeTypeDescriptions[$varInfo->scopeType],
1756+
"\${$varInfo->name}",
1757+
]
1758+
);
1759+
}
1760+
}
17101761
}

0 commit comments

Comments
 (0)