Skip to content

Performance/StringInclude doesn't consider assignment context #519

Description

@forthrin

Steps to reproduce the problem

items = %w[A B]
one = items.map { it.match(/A/)&.to_s }
# Use `String#include?` instead of a regex match with literal-only pattern. [[Correctable] Performance/StringInclude]
two = items.map { it.include?('A') } # "Whatever you say" -- Bugs Bunny
# Much, much later ...
pp [one, two] # [["A", nil], [true, false]]

Expected behavior

We're assigning the result to a variable in order to do unmentionable stuff with the match later if it was found.

Actual behavior

Cop doesn't see the broader picture and writes us a ticket thinking we just want to test for existence.

RuboCop version

ruby      2025-08-01 30a20bc16
rubocop   2025-10-04 a08091813
System Version: macOS 15.6 (24G84)
Model Identifier: MacBookAir10,1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions