Commit Graph

54 Commits

Author SHA1 Message Date
JP Simard 2bcea4b04d Add ability for SwiftLint to lint files with full type-checked AST awareness (#2379)
* Add LintableFilesVisitor

* Move LintCommand logic into LintOrAnalyzeCommand

to prepare for the upcoming analyze command

* Add AnalyzeCommand (not fully implemented yet in SwiftLintFramework)

* Add analyzerRules configuration member

* Add AnalyzerRule protocol

* Pass compiler arguments to validate/correct

* Add requiresFileOnDisk member to RuleDescription

This will be used by AnalyzerRules because they need a file on disk
to pass in the compiler arguments to SourceKit.

* Exclusively run AnalyzerRules when the Linter has compiler arguments

* Enable testing AnalyzerRules in TestHelpers

* Add ExplicitSelfRule

* Update documentation

* Fix `analyze --autocorrect`

* Improve performance of CompilerArgumentsExtractor

* Fix lint command actually running analyze

* Move File operations in TestHelpers into a private extension

* Add analyzer column to rules command and markdown documentation

* Use a Set literal

* Make AnalyzerRule inherit from OptInRule

* Mention analyzer_rules in readme

* Mention that analyzer rules are slow
2018-09-02 00:13:27 -07:00
Marcelo Fabri 8aadb802fb Split RulesTests into several test cases, generating them automatically 2018-07-21 17:23:08 -07:00
JP Simard 2eed8d469d Apply Marcelo Fabri's patch 2018-05-06 10:33:33 -07:00
John Szumski b03b4f0891 Added a new computed property that identifies whether a rule should treat multiple violations at the same location as only one violation. 2018-05-06 10:33:33 -07:00
JP Simard b83e0991b9 Remove all file headers
The MIT license doesn't require that all files be prepended with this
licensing or copyright information. Realm confirmed that they're ok with this
change. This will enable some companies to contribute to SwiftLint and the
date & authorship information will remain accessible via git source control.
2018-05-04 13:42:02 -07:00
JP Simard a49835728b Speed up equality checks for [Rule] values 2017-10-19 22:28:04 -07:00
Marcelo Fabri c01f4bd19f Enable extension_access_modifier rule 2017-07-21 21:08:52 +02:00
JP Simard e54dcae5b7 enable let_var_whitespace rule in SwiftLint itself
and refactor code in a few places to conform to the rule
2017-07-10 15:42:55 -07:00
JP Simard f639ae95f1 add CacheDescriptionProvider protocol
to provide more complete descriptions for cache invalidation
purposes.
2017-05-18 14:31:33 -07:00
JP Simard 9e7cdc3282 update SwiftLintFramework/Protocols to follow Swift 3 API Design Guidelines 2017-01-09 19:19:25 -08:00
Marcelo Fabri 13b0cfe623 Fixing inconsistencies 2016-12-08 18:29:57 -02:00
Norio Nomura 8bf15f1dba Migrate to Swift 3.0 2016-10-09 01:09:50 +09:00
Norio Nomura 9c0a2492e8 Refactor ASTRule and add SourceKitFreeRule
- Make `ASTRule` to generic and remove `ASTBaseRule`
- Add `SourceKitFreeRule` and remove `RuleDescription.needsSourceKit`
2016-04-16 22:32:53 +09:00
Norio Nomura e1e4923867 Use for Xcode 7.3 2016-04-07 23:17:11 +09:00
JP Simard b2d954f655 rename ConfigType to ConfigurationType 2016-02-12 10:53:36 -08:00
JP Simard 7e07e813ca rename RuleConfig to RuleConfiguration 2016-02-12 10:53:36 -08:00
JP Simard 6befe7e5a4 expand many instances of "config" to "configuration" 2016-02-12 10:53:36 -08:00
JP Simard d9cd1d670a rename Rule.init(config:) to Rule.init(configuration:) 2016-02-12 10:53:36 -08:00
JP Simard db71448c47 rename Rule.configDescription to Rule.configurationDescription 2016-02-12 10:53:36 -08:00
JP Simard 3f4b993847 rename ConfigProviderRule to ConfigurationProviderRule 2016-02-12 10:53:36 -08:00
JP Simard 1866edae77 adjust access control levels for many APIs in SwiftLintFramework
this is done in an effort to stabilize the API for SwiftLint 1.0.
2016-02-10 17:26:06 -08:00
JP Simard 368ee9544a fold ConfigurableRule into Rule 2016-02-08 13:08:51 -08:00
JP Simard 71135c6a4b make RulesCommand show a configuration description for all rules 2016-02-07 10:40:51 -08:00
JP Simard b2a7b707ab print rule configuration 2016-02-03 10:31:53 -08:00
Scott Hoyt 943ed306a3 Modified names for brevity. 2016-01-23 17:42:13 -08:00
Scott Hoyt 3230c6413e Replaced things in rule configurations named configuration for config to save space. 2016-01-23 17:42:13 -08:00
Scott Hoyt 05a65afc72 Removed ViolationLeveLRule in favor of ConfigurationProviderRule. 2016-01-23 17:42:13 -08:00
Scott Hoyt d2ec3fb621 Added associated type for ConfigurationProviderRule. 2016-01-23 17:42:13 -08:00
Scott Hoyt ccbcb537b5 Convert ConfigurableRule to throwing init instead of failing. 2016-01-23 17:42:13 -08:00
Scott Hoyt d300eec7cf Added ConfigurationProviderRule 2016-01-23 17:42:13 -08:00
Scott Hoyt e5cbd81002 Switched out count > 0 with !isEmpty. 2016-01-13 19:45:27 -08:00
Scott Hoyt f693279fb5 Removed ParameterizedRule. Deleted unnecessary tests. Switched tests to ViolationLevelRuleMock where needed. 2016-01-13 19:45:27 -08:00
Scott Hoyt 7c6feec509 Added ViolationLevelRule and tests. 2016-01-13 19:45:27 -08:00
Scott Hoyt 592a358d8c Added deprecation warning for ParameterizedRule. 2016-01-13 19:45:27 -08:00
JP Simard 2f3b2096e6 support opt-in rules 2016-01-12 12:11:09 -08:00
Scott Hoyt 47f4889cb2 Removed redundant self. 2016-01-11 13:55:36 -08:00
Scott Hoyt 647371517e Extracted arrayOf to Array extension and used to simplify VariableNameMinLengthRule.init?(config:). 2016-01-11 13:10:17 -08:00
Scott Hoyt 55fa348b6d Made ParameterizedRule protocol inherit from ConfigurableRule with default implementation for conformance. 2016-01-11 11:21:49 -08:00
Scott Hoyt 46838b11f1 Fixed access level issues. 2016-01-11 11:21:49 -08:00
Scott Hoyt d3184c9e28 Switched ParameterizedRule.init?(config:) to use a guard instead of if/else. 2016-01-11 11:21:49 -08:00
Scott Hoyt 811b625243 Generalized ParameterizedRule protocol conformance to ConfigurableRule. 2016-01-11 11:21:49 -08:00
Scott Hoyt 29cad2972a Removed TODOs 2016-01-11 11:21:49 -08:00
Scott Hoyt b654dc0c8b Clean up some linting warnings. 2016-01-11 11:21:49 -08:00
Scott Hoyt 7efb020a4b Added tests for configuring rules from config dictionary. 2016-01-11 11:21:49 -08:00
Scott Hoyt fa7d4024e3 Switched Configurable rule to a failable initializer that takes AnyObject. 2016-01-11 11:21:49 -08:00
Scott Hoyt c2d40c1f94 Extracted all ParameterizedRule conformance to ConfigurableRule out to protocol extension. 2016-01-11 11:21:49 -08:00
Scott Hoyt 3387c0d592 Extracted isEqualTo to protocol extension. 2016-01-11 11:21:49 -08:00
Scott Hoyt 9b6f3070a3 Wrote ConfigurableRule, made ParameterizedRule's conform, moved configuration into rules themselves. 2016-01-11 11:21:49 -08:00
Scott Hoyt 7b2f4bff43 Moved == implementation for [Rule] to more appropriate spot. Wrote missing test. 2016-01-02 15:41:53 -08:00
Scott Hoyt fcf9396a08 Added isEqual for Rule and ParameterizedRule. Made Configuration and RuleParameter conform to Equatable. Wrote tests to verify. All done in support of testing recursive configuration file search. 2016-01-02 15:41:53 -08:00