realm / realm/SwiftLint

Rule Request: Switch Case RawValue

Open
#2,906 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

rule-request
Dominant language
Swift
Stars
19.7k
Forks
2.3k
Avg merge
1d 1h
Merged PRs (30d)
11

Description

New Issue Checklist
New rule request

Switch case rawValue

  1. Trigger a warning if using myEnum.rawValue to evaluate switch cases. This style forces the use of a default. Good practice could be to convert the switched value to the enum (perhaps with guard) prior to setting it as the switch parameter.

  2. Triggers
    Trigger example:

    func myFunc(myParam: String) {
      switch myParam {
      case myEnum.opt1.rawValue:
        // do something
      case myEnum.opt2.rawValue :  
        // do something else
      default:
        break // needed since myParam could be anything
      }
    }

note: spacing after rawValue extra space should still trigger the warning

Not triggered if .rawValue isn't used

  1. Only severity should be configurable

  2. Rule should be Opt-in since there may be some reason the code requires a switch on rawValue

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating SwiftLint's existing opt-in rule implementations and their tests, then compare their configuration and severity handling with the requested behavior. The work is done when switches matching the rawValue examples warn, non-rawValue cases do not, spacing does not prevent detection, severity is configurable, and the rule remains opt-in.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.