Rule Request: [Constructor Parameters Count]
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
New rule request
The idea is pretty simple: to put a warning where more than X arguments are used in the constructor.
The X value should be a parameter with some reasonable default (5?).
One could also think about parametrizing whether we apply the rule to all types or just to classes. Some DTO structs may be fragile, yet we can always use // swiftlint:disable in such cases.
- Why should this rule be added? It is a common rule used by static analyzer tools, and is a rule that limits the responsibilities of class and keeps it small.
- Provide several examples of what would and wouldn't trigger violations.
Using more than 5 parameters would trigger a warning.
init(dependencyA parent: DependencyA,
with dependencyB: DependencyB,
dependencyC: DependencyC,
dependencyD: DependencyD,
dependencyE: DependencyE,
dependencyF: DependencyF)
Using "just" 5 parameters would be ok.
init(dependencyA parent: DependencyA,
with dependencyB: DependencyB,
dependencyC: DependencyC,
dependencyD: DependencyD,
dependencyE: DependencyE)
- Should the rule be configurable, if so what parameters should be configurable? max parameters that are allowed without warning
- Should the rule be opt-in or enabled by default? Why? opt-in
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
The issue names no files, tests, or entry points. Start by locating SwiftLint's existing rule implementations, configuration handling, and rule tests; compare how they count constructor parameters and how opt-in rules are configured. Done means the requested threshold and scope behavior are implemented with coverage for five versus six parameters.
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
- 38/100