PHPCS sniff for un-restored switch_to_blog() calls
switch_to_blog() is called but not properly "closed" via
restore_current_blog(), havoc ensues. The most recent instance of this is #15170.
We should introduce a PHPCS sniff to our custom ruleset that looks for
switch_to_blog(), and then ensures that all code paths out of the method have a
restore_current_blog() before returning.
#1 Updated by Boone Gorges 4 months ago
I just spent five minutes looking, and it's not immediately obvious to me how to do this in PHPCS. Here's the one custom sniff I've written: https://github.com/cuny-academic-commons/cac/blob/1.19.x/developer/phpcs/CAC/Sniffs/Database/RequirePrimaryKeySniff.php I think it would work similar to this https://github.com/cuny-academic-commons/cac/blob/dbaafcd561fa7a646a947e11d7158183610ae262/developer/phpcs/CAC/Sniffs/Database/RequirePrimaryKeySniff.php#L91, in that you'd find instances of `
switch_to_blog()`, then parse all remaining tokens until you get to the end of the method. You'd have to identify the difference between various code paths (like stuff in an if block - not sure how to do that) and look for all possible ways to return from the method; then verify that each of the paths has a
Let's file this away as a project we can tackle once our scope for the academic year becomes clearer.