-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Setting goals for a 1.0.0 milestone #427
Comments
Something I've brought up in the past is that using swiftlint in an enterprise setting usually means that we want only a subset of rules to be enabled (i.e. a whitelist single source of truth that overrides opt-in and disabled rules lists). The lack of such support has made upgrading swiftlint a real pain, as the rules often change and cause new unexpected violations. I would be happy to contribute something like this, and would hate to have to maintain a fork to achieve the same behavior. Note, this was completed in #256 |
Thanks for taking the initiative to bring this up, @scottrhoyt! This is something I've thought of occasionally but never really pinned down what it would mean for SwiftLint to be 1.0. A few ideas:
|
Is there an easy way to specify the version of SwiftLint to use per-project, like one might specify the version of a Pod? If so, that could be a good way to sidestep the issue of breaking changes, because you could just pin the version of SwiftLint per-project. Guessing that would have to be external, i.e. specifying a version of SwiftLint for |
@ZevEisenberg yeah, I think that should be considered, which is why I linked to the issue you opened about this in my comment above (#221). |
I, like @daniel-beard would be interested in supporting a configuration that explicitly enables rules, rather than explicitly disabling rules, for exactly the same reason -- violations which are introduced in new versions of SwiftLint cause unanticipated errors, and may also reflect rules that we don't want implemented on our team. I'd be happy to work on this if I know there is interest in this kind of change, or just to participate in the conversation. |
@tamarnachmany there is now a new configuration in the .swiftlint.yml files called |
@what about a model like GCC/Clang warnings and |
When I tried to use that functionality - I just whitelisted the rules I want to lint for - some of the rules I did not explicitly disable but did not whitelist were still linted. |
@tamarnachmany this is only present in the latest master builds, there has not been a release yet with this functionality. If this was happening from a source build from master, can you raise a ticket for it? |
Hm. So it sounds like I saw that PR, added a whitelist to my config file, and then my config file must have been ignored since it was invalid (the configuration was invalid, since the whitelist functionality is unreleased). Cool. Looking forward to that change. |
Almost one year later, I'd like to share my thoughts on what should be done to reach 1.0 IMO: PerformanceThese already have pending PRs, but should improve drastically SwiftLint performance
Documentation/Experience
Configuration handlingWe have several opened issues on how configurations are handled: #1075, #987, #736, #676, #606, #551, #550, #554. Stability
Bugs
There are lots of issues linked here but IMO most of the hardest ones are being tackled already. The ones that probably deserved an special attention are the ones related to configuration as no progress has been done on that area for a while. |
If API stability is a goal for 1.0 (which it should be IMHO), then conforming to the Swift 3 API Guidelines is also a must. |
Cache implemented by @marcelofabri in #1073 |
Checked off a few items from #427 (comment). Big pieces left to do are (loosely):
I propose we push to get these done in the coming weeks. It'd be nice to finally mark SwiftLint as 1.0. |
I'd love to get some feedback about #1843 to see if it's something we want to do or not. If it is, IMO we should do it before 1.0. |
Never really took a good luck at that to be honest. Was a bit scared off by the size. |
I don't particularly care about the implementation, it's more about its goals and (breaking) changes. |
This issue has been automatically marked as stale because it has not had any recent activity. Please comment to prevent this issue from being closed. Thank you for your contributions! |
/cc @realm/swiftlint
I think it might be good to start a discussion about creating a 1.0.0 release milestone. We could nominate outstanding issues, create new issues, and add to this milestone where appropriate. That way collaborators can have clear direction on how to get the project to that point, and users could vote for what features are most important to them. Obviously stabilizing the public interface of both
swiftlint
andSwiftLintFramework
should be primary focuses.Another consideration should be what a breaking change is? Do we consider introducing a new rule that defaults to on or changing the default parameters of an old rule to be breaking changes? How about removing or combining old rules? These changes should not break the CLI on one hand, however they have the potential to cause failing build scripts both locally and on CI machines via a
swiftlint
upgrade.What do you guys think, or is this too early to discuss?
If we want to start this now, I would nominate the following issues to be part of a 1.0.0 release milestone:
The text was updated successfully, but these errors were encountered: