Commit Graph

267 Commits

Author SHA1 Message Date
Marcelo Fabri 4c8df19c84 Use SourceKit to validate associatedtype and typealias in type_name rule when linting with Swift 4.1
Part of #2021
2018-01-26 22:08:59 -08:00
Marcelo Fabri 19edf2608b Fix enclosedSwiftAttributes in Swift 4.1
Fixes #2019
2018-01-25 09:47:11 -08:00
JP Simard e70710bedb Don't log if indentation isn't set in config
Fixes #1998
2018-01-10 10:08:39 -08:00
JP Simard 34d2fb3949 Move Configuration.defaultIndentation() to IndentationStyle init 2018-01-03 23:31:12 -08:00
JP Simard fa13551af1 Rename Configuration.Indentation to IndentationStyle
and move to its own file
2018-01-03 23:21:23 -08:00
Noah McCann ab29b75d20 Addressed most linting errors 2018-01-03 23:05:48 -08:00
Noah McCann 093367073a Renamed IndentationMode to Indentation, better handled default value 2018-01-03 23:05:48 -08:00
Noah McCann 38f869bf81 Added indentationMode to configuration, updated parsing to handle it 2018-01-03 23:05:48 -08:00
JP Simard 93ded518a7 Remove uses of String.characters, deprecated in Swift 4.0.2 2017-11-10 14:37:53 -08:00
JP Simard 170ad413f0 Lock accesses to assert handler storage
This fixes races seen "in the wild" causing crashes.
2017-11-09 12:28:45 -08:00
JP Simard aa73566b39 Convert Cache struct to a class
to avoid having to lock calls to mutating functions that don't
actually perform mutating operations.

This fixes races seen "in the wild" causing crashes.
2017-11-09 12:28:45 -08:00
JP Simard 34f429b0a3 Fix caching on Linux
This has never worked for two reasons:

1. We've used dictionaries to represent cache descriptions, which
   don't guarantee stable ordering of keys across invocations.
   This is true both on Darwin and Linux, but in practice ordering
   varies significantly more on Linux.
2. Storing a `TimeInterval` value in a `[String: Any]` dictionary
   and retrieving it again will not be dynamically castable to
   `Double` or `TimeInterval` but will be castable to `Int`.
2017-10-26 12:23:13 -07:00
JP Simard 3a32d6b479 Speed up reading cached results by about 200%
also slightly speed up writing to the cache.

For example, on the Lyft codebase with 1,500 Swift files:

```bash
$ time swiftlint lint --quiet
swiftlint --quiet  3.53s user 0.27s system 388% cpu 0.979 total
$ rm -rf ~/Library/Caches/SwiftLint && time swiftlint lint --quiet
swiftlint --quiet  35.20s user 1.22s system 371% cpu 9.806 total
$ time swiftlint lint --quiet
swiftlint lint --quiet  0.90s user 0.13s system 218% cpu 0.472 total
$ rm -rf ~/Library/Caches/SwiftLint && time swiftlint lint --quiet
swiftlint lint --quiet  31.78s user 1.18s system 360% cpu 9.146 total
```
2017-10-19 23:17:01 -07:00
Marcelo Fabri e84100eed4 Remove SwiftExpressionKind.other 2017-10-05 14:33:32 -03:00
Marcelo Fabri 0be8c855d2 Move functions to properties and Sets instead of Arrays 2017-10-04 14:34:00 -07:00
JP Simard c57c47d66f Remove unnecessary Swift version differences 2017-10-04 13:49:40 -07:00
Marcelo Fabri ee02e0f8e5 Remove support for building with Swift 3.1 2017-10-04 13:48:17 -07:00
Marcelo Fabri 81f90e6326 Add custom rule to enforce using queuedFatalError 2017-10-01 20:05:46 -03:00
Marcelo Fabri 05685785f2 Merge pull request #1864 from marcelofabri/improve-allowed-symbols
Fix false negatives when using allowed_symbols
2017-10-01 01:11:46 -03:00
Marcelo Fabri ffa4e8a3fb Workaround union not working on Linux on Swift 3.1 2017-10-01 00:45:52 -03:00
Marcelo Fabri be341f90b9 Introduce queuedFatalError
`fatalError` prints the full path of the file, which leaks filesystem information from the machine that built the binary. Now that we release via CocoaPods, this is more critical.
2017-09-30 15:07:23 -03:00
Marcelo Fabri e24d847596 Prevent crash on Swift 3.x 2017-09-30 01:38:26 -03:00
Marcelo Fabri d21262d1bc Ignore SwiftLint commands in file_header rule
Fixes #1810
2017-09-30 00:29:23 -03:00
JP Simard 06781c7ddd Simplify CharacterSet+LinuxHack.swift 2017-09-17 17:28:32 -07:00
Marcelo Fabri de6809b40f Remove hack for SR-3485 when building with Swift 4 2017-09-16 13:23:49 -03:00
JP Simard 01e4831a7c Update for Swift 4 in Xcode 9 beta 6 and latest Linux snapshot 2017-09-10 13:48:37 -07:00
Marcelo Fabri 53380531ff Improve unneeded_parentheses_in_closure_argument 2017-08-29 16:43:56 -03:00
Marcelo Fabri 54f9c22c60 Fix existing violations 2017-08-26 10:05:56 -03:00
JP Simard 5c1c9389c7 produce an error when a 'disable' command doesn't silence any rules 2017-08-20 23:27:48 +02:00
Marcelo Fabri 843ca9c535 Use configuration rootDirectory 2017-08-17 19:59:23 +02:00
Marcelo Fabri ffd7be5919 Fix picking the wrong configuration with —path
Fixes #1744
2017-08-17 19:59:23 +02:00
JP Simard 48aaff433f remove unused code in File+Cache.swift 2017-08-08 09:13:32 -07:00
JP Simard b829893b7d lower ACL of declarations that should be private 2017-08-08 09:10:31 -07:00
Marcelo Fabri a300409798 Support non Swift files in --file argument
Fixes #1721.
2017-08-07 23:10:04 +02:00
JP Simard db95f5d3cd use explicit ACL keywords for HashableRule 2017-08-02 13:29:24 -07:00
Stéphane Copin 3ad4842bcd Small changes and refactoring based on github Feedback 2017-08-02 13:05:26 -07:00
Stéphane Copin 9f1f454cf9 Refactor the way Configuration objects are created with regards to rules 2017-08-02 13:05:26 -07:00
Stéphane Copin f5f63c9072 Update tests to reflect nested configuration changes 2017-08-02 13:05:26 -07:00
Stéphane Copin 97c1dcd0fa Add support for nested configuration
Original commit here: https://github.com/realm/SwiftLint/commit/9eef125245e43a8ff333d45abd13f9f0177d7258

Significant modifications made by @jpsim
2017-08-02 13:05:26 -07:00
Marcelo Fabri 70fc1a197d Ignore shebang in all rules
By making a creative use of regions.
Fixes #1294.
2017-07-26 00:24:23 +02:00
Marcelo Fabri 0bf1179c83 Validating trailing closure even if there's only one param 2017-07-24 00:50:31 +02:00
Marcelo Fabri 374731d92f Fix mark rule corrections generating invalid code in some cases
Apparently, we never invalidated the file cache when autocorrecting 😬
2017-07-23 02:08:15 +02:00
Marcelo Fabri c01f4bd19f Enable extension_access_modifier rule 2017-07-21 21:08:52 +02:00
JP Simard 41513a55d5 fix compilation with Swift 3.2 2017-07-17 15:37:08 -07:00
JP Simard 40bd4e7d4f move parsing functionality to Configuration+Parsing 2017-07-17 12:05:05 -07:00
JP Simard e6f95d5723 move merging functionality to Configuration+Merging 2017-07-17 12:05:04 -07:00
JP Simard 8f8e5d1fc2 move "lintable files" functionality to Configuration+LintableFiles 2017-07-17 11:45:32 -07:00
JP Simard 6b8d2ba28a move Configuration+Cache.swift into Extensions/ 2017-07-17 11:42:05 -07:00
JP Simard 7acacf6bdb update dependencies, mostly for SourceKitten 0.18 2017-07-12 10:11:27 -07:00
JP Simard 57d4dc7c52 change an empty #if body for #if ! 2017-07-10 15:56:02 -07:00