You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I might be missing something, but basically, I have places in the code where I have a call to subscribeToNotifications()
And I need a way to assert that unsubscribeFromNotifications is called when subscribeToNotifications is.
This is to prevent developers from misusing our internal APIs.
I can't find a way using custom rules to do so...
And I'm not sure the swiftlint yaml syntax could be adapted for it?
I admittedly can't make heads or tails of your examples. addScrubberFeatureTip isn't called at all and so isn't observeTip. viewWillDisappear calls or doesn't call cancelTipObservations. Where is the connection to observeTip?
But generally multiline matches work. So finding cases where observeTip is not immediately followed by cancelTipObservations should be possible. For more complex cases, custom rules might not be sufficient.
I changed the description of my issue to remove personal context from our app and make it more generic.
That makes it much clearer.
So I think that your use case is impossible to achieve with a custom rule, at least not in its full generality. But there are so called Swift Custom Rules (as opposed to the default Regex Custom Rules) which would allow you to implement this check based on SwiftSyntax.
However, this requires you to build SwiftLint yourself with Bazel.
New Issue Checklist
New rule request
Hi there
I might be missing something, but basically, I have places in the code where I have a call to
subscribeToNotifications()
And I need a way to assert that
unsubscribeFromNotifications
is called whensubscribeToNotifications
is.This is to prevent developers from misusing our internal APIs.
I can't find a way using custom rules to do so...
And I'm not sure the swiftlint yaml syntax could be adapted for it?
Thanks
Triggering example
Non triggering example
The text was updated successfully, but these errors were encountered: