Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Addresses #5788
The problem is that Regions are created with all of the rule identifiers that are disabled in them, with a new region being created for each
swiftlint:
command, more or less.So an inner region may have multiple rules disabled, when disabled commands are nested, but not all of those rules might be violated within that specific region.
I guess people don't actually nest commands much in practice, at least for custom rules, or this would have created more noise.
This was not as hard to fix as I was afraid it might have been.
The basic idea is to remap the regions before passing them to
superfluousDisableCommandViolations
, so that the new regions describe the specific region that an individual rule is disabled within.We could just calculate the regions that way in the first place, but the regions are used in multiple places, and I didn't want to interfere with any of the other call-sites right now.
Needs more tests in CustomRulesTests for sure.
Probably doesn't need to be a public method, if we're only using it for
superfluousDisableCommandViolations
- I just started with it there, and wanted it exposed right now - the RegionTests changes can probably go as well, once CustomRulesTests have more coverage, but I just wanted to make sure I'd got it right in all the existing cases and some new ones.