SonarPHP should flag code which uses a reference in a foreach loop without unsetting that reference immediately after.
Noncompliant code:
foreach ($entries as &$entry) {
$entry += 1;
}
Compliant code:
foreach ($entries as &$entry) {
$entry += 1;
}
unset($entry);
External references:
- Rule implemented in PHP Inspections EA analysis tool: https://github.com/kalessil/phpinspectionsea/blob/master/src/main/java/com/kalessil/phpStorm/phpInspectionsEA/inspectors/forEach/AlterInForeachInspector.java
- https://schlueters.de/blog/archives/141-references-and-foreach.html
- https://alephnull.uk/call-unset-after-php-foreach-loop-values-passed-by-reference
Type: Bug