-
Notifications
You must be signed in to change notification settings - Fork 0
/
.swiftlint.yml
144 lines (129 loc) · 3.64 KB
/
.swiftlint.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Swiftlint configuration file.
# Part of Aurora Editor.
# Please do not remove optional rules, feel free to add some if needed.
# Disabled rule, reason.
disabled_rules:
- todo # New project, we have a lot of // TODO:
# paths to ignore during linting.
excluded:
- AuroraEditorModules/.build # Where Swift Package Manager checks out dependency sources
- AuroraEditorCli/Package.swift # Package.swift should not be linted
- Tools
# Exclude triggering type names.
type_name:
excluded:
- ID
# Exclude triggering identifier names.
identifier_name:
excluded:
- id
- vc
# (short) File extensions:
- c
- m
- h
- js
- md
- py
- go
- ts
- txt
- sh
- pf
- r
- q
- tp
- xl
- hy
- d
- cs
# cyclomatic_complexity (ignore case)
cyclomatic_complexity:
ignores_case_statements: true
# Opt in rules, we want it more stricter.
opt_in_rules:
- file_header # All files should have a same header.
- empty_count
- closure_spacing
- contains_over_first_not_nil
- missing_docs
- modifier_order
- convenience_type
- pattern_matching_keywords
- identical_operands
- empty_string
- multiline_parameters
- closure_end_indentation
- operator_usage_whitespace
- closure_parameter_position
- collection_alignment
- last_where
- unused_optional_binding
- toggle_bool # use .toggle() instead of !variable
- explicit_init # .init is not needed
- fallthrough
- no_fallthrough_only
# Custom configuration for nesting, this needs to be removed at some point.
nesting:
type_level:
warning: 2 # warning if you nest 2 level deep instead of 1
error: 3 # error if you nest 3 level deep instead of 1
# Custom rules
custom_rules:
# Prefer spaces over tabs.
spaces_over_tabs:
included: ".*\\.swift"
name: "Spaces over Tabs"
regex: "\t"
message: "Prefer spaces for indents over tabs. See Xcode setting: 'Text Editing' -> 'Indentation'"
severity: warning
# @Something needs a new line
at_attributes_newlining:
name: "Significant attributes"
message: "Significant @attributes should be on an extra line"
included: ".*.swift"
regex: '(@objc\([^\)]+\)|@nonobjc|@discardableResult|@propertyWrapper|@UIApplicationMain|@dynamicMemberLookup|@_cdecl\([^\)]+\))[^\n]'
severity: error
# forbid multiple empty lines
multiple_empty_lines:
included: ".*.swift"
name: "Multiple Empty Lines"
regex: '((?:\s*\n){3,})'
message: "There are too many line breaks"
severity: error
# one space after a comma
comma_space_rule:
regex: ",[ ]{2,}"
message: "Expected only one space after ',"
severity: error
# Disable usage of // swiftlint:disable (rulename)
swiftlint_file_disabling:
included: ".*.swift"
name: "SwiftLint File Disabling"
regex: "swiftlint:disable\\s"
match_kinds: comment
message: "Use swiftlint:disable:next or swiftlint:disable:this"
severity: error
# Don't use print
disallow_print:
included: ".*.swift"
name: "No print"
regex: "print(.*)"
message: "Please do not use print(), use `Log.info()`."
severity: warning
# Disable Xcode placeholders like <#Description#>
no_placeholders:
included: ".*.swift"
name: "No Placeholders"
regex: "\\<\\#([a-zA-Z]+)\\#\\>"
message: "Please do not use Xcode's placeholders."
severity: warning
file_header:
required_pattern: |
\/\/
\/\/ .*?\.swift
\/\/ Aurora Editor(| UITests| Tests)
\/\/
\/\/ Created by .*? on .*?\.
\/\/ Copyright © \d{4} Aurora Company. All rights reserved.
\/\/