forbidigo
forbidigo copied to clipboard
Support a simple way to define exceptions for broad rules
There doesn't seem to be an easy way to specify a broad rule, but add a few exceptions to it. Specifically, I'd like to do the following:
- Disable everything from the
os
package everywhere across k6 - Add
//nolint:forbidigo
in the single place where we assemble our global state from the OS - Add exceptions for certain
os
types likeos.Signal
, which are safe to use and are valid return types even when we'd be mocking this global state in our tests.
Since Go doesn't support negative lookaheads in regular expressions, I am not sure there is an easy way to currently do this?
One way to solve this would be to be able to add a list (or even another regex) for every rule, for defining exceptions to the rule.
Another way would be to specify that only matching a specific group in the regexp constitutes a linter error. Then we'd be able to use "The Greatest Regex Trick Ever" to define rule exceptions :sweat_smile:
@na-- thanks for sharing this use case. Would it be possible to accomplish this by adding exceptions to exclude-rules
in golangci-lint?
Yeah, that should also work :thinking: From what I can see, the regular expressions there would have to be based on the whole error message and not just the Go identifiers, so it's a bit hacky and potentially fragile, but probably much less hacky than any other currently existing workarounds :sweat_smile:
Possibly related is that over at https://github.com/ashanbrown/forbidigo/pull/22#issuecomment-1418268823, I had proposed using tags embedded in comments as a way of targeting sets of rules in the exclude-rules
.