Rule Request: avoid if-not-else
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 19.7k
- Forks
- 2.3k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 11
Description
New Issue Checklist
- Updated SwiftLint to the latest version
- I searched for existing GitHub issues
Rule Request
-
Proposal: when an
ifstatement includes theelseclause, theifclause should not be negated. The same applies to the ternary operator. -
Examples:
// Would trigger:
if !test {
methodA()
} else {
methodB()
}
if !(testA || testB) {
methodA()
} else {
methodB()
}
!test ? methodA() : methodB()
// Would not trigger:
if test {
methodB()
} else {
methodA()
}
if testA || testB {
methodB()
} else {
methodA()
}
if test ? methodB() : methodA()
-
Should the rule be configurable, if so what parameters should be configurable?
Not that I can think of. -
Should the rule be opt-in or enabled by default? Why?
I, personally, would say yes, as if one is handling both possibilities, there is no need to do it with inverted logic.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Locate SwiftLint's existing rule entry points and corresponding rule tests, then compare how conditional and ternary expressions are handled. Verify completion against the listed triggering and non-triggering examples, including negated if statements, negated compound conditions, and ternary expressions.
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
- 35/100