realm / realm/SwiftLint

Rule Request: [Constructor Parameters Count]

Open
#4,217 0 comments 0 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

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.

  1. 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.
  2. 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)
  1. Should the rule be configurable, if so what parameters should be configurable? max parameters that are allowed without warning
  2. Should the rule be opt-in or enabled by default? Why? opt-in

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.