SwiftLint icon indicating copy to clipboard operation
SwiftLint copied to clipboard

Introduce a "rule registry" concept

Open jpsim opened this issue 2 years ago • 3 comments

This will allow for registering rules that aren't compiled as part of SwiftLintFramework.

Specifically this will allow us to split the built-in and extra rules into separate modules, leading to faster incremental compilation when working on rules since the rest of the framework won't need to be rebuilt on every compilation.

jpsim avatar Nov 08 '22 17:11 jpsim

2 Warnings
:warning: Big PR
:warning: If this is a user-facing change, please include a CHANGELOG entry to credit yourself!
You can find it at CHANGELOG.md.
17 Messages
:book: Linting Aerial with this PR took 1.07s vs 1.07s on main (0% slower)
:book: Linting Alamofire with this PR took 1.38s vs 1.38s on main (0% slower)
:book: Linting Brave with this PR took 7.28s vs 7.28s on main (0% slower)
:book: Linting DuckDuckGo with this PR took 3.56s vs 3.56s on main (0% slower)
:book: Linting Firefox with this PR took 9.14s vs 9.12s on main (0% slower)
:book: Linting Kickstarter with this PR took 10.0s vs 10.0s on main (0% slower)
:book: Linting Moya with this PR took 0.56s vs 0.56s on main (0% slower)
:book: Linting NetNewsWire with this PR took 3.06s vs 3.07s on main (0% faster)
:book: Linting Nimble with this PR took 0.64s vs 0.64s on main (0% slower)
:book: Linting PocketCasts with this PR took 7.21s vs 7.23s on main (0% faster)
:book: Linting Quick with this PR took 0.24s vs 0.25s on main (4% faster)
:book: Linting Realm with this PR took 11.46s vs 11.44s on main (0% slower)
:book: Linting Sourcery with this PR took 2.22s vs 2.2s on main (0% slower)
:book: Linting Swift with this PR took 4.65s vs 4.65s on main (0% slower)
:book: Linting VLC with this PR took 1.36s vs 1.36s on main (0% slower)
:book: Linting Wire with this PR took 8.18s vs 8.19s on main (0% faster)
:book: Linting WordPress with this PR took 11.41s vs 11.41s on main (0% slower)

Here's an example of your CHANGELOG entry:

* Introduce a "rule registry" concept.  
  [jpsim](https://github.com/jpsim)
  [#issue_number](https://github.com/realm/SwiftLint/issues/issue_number)

note: There are two invisible spaces after the entry's text.

Generated by :no_entry_sign: Danger

SwiftLintBot avatar Nov 08 '22 18:11 SwiftLintBot

Marking as draft as I fix some test failures

jpsim avatar Nov 08 '22 20:11 jpsim

For easier review it might be better to separate out the SwiftLintTestCase introduction as a non-functional change and then build the registry on top of that.

I split the commits to make this easier to review for that reason.

Thanks for the review.

jpsim avatar Jan 31 '23 14:01 jpsim