Skip to content

Commit

Permalink
Add "Bitwise Predicate Methods" rule
Browse files Browse the repository at this point in the history
Follow up rubocop/rubocop#13050.

This PR adds "Bitwise Predicate Methods" rule.

Prefer the use of bitwise predicate methods to bitwise operations involving comparisons.

```ruby
# bad - checks any set bits
(variable & flags).positive?

# good
variable.anybits?(flags)

# bad - checks all set bits
(variable & flags) == flags

# good
variable.allbits?(flags)

# bad - checks no set bits
(variable & flags).zero?
(variable & flags) == 0

# good
variable.nobits?(flags)
```
  • Loading branch information
koic authored and bbatsov committed Jul 18, 2024
1 parent 79ad25a commit e66a93a
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -5808,6 +5808,32 @@ if x == 0
end
----

=== Bitwise Predicate Methods [[bitwise-predicate-methods]]

Prefer bitwise predicate methods over direct comparison operations.

[source,ruby]
----
# bad - checks any set bits
(variable & flags).positive?
# good
variable.anybits?(flags)
# bad - checks all set bits
(variable & flags) == flags
# good
variable.allbits?(flags)
# bad - checks no set bits
(variable & flags).zero?
(variable & flags) == 0
# good
variable.nobits?(flags)
----

=== No Cryptic Perlisms [[no-cryptic-perlisms]]

Avoid using Perl-style special variables (like `$:`, `$;`, etc).
Expand Down

0 comments on commit e66a93a

Please sign in to comment.