Skip to content

Instantly share code, notes, and snippets.

@milanpanchal
Last active September 11, 2020 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save milanpanchal/fb43eb32119c05f0f9770b450c2c3051 to your computer and use it in GitHub Desktop.
Save milanpanchal/fb43eb32119c05f0f9770b450c2c3051 to your computer and use it in GitHub Desktop.
Swift Lint Configuration file
reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit, html, emoji)
excluded: # paths to ignore during linting. Takes precedence over `included`.
- Carthage
- Pods
disabled_rules: # rule identifiers to exclude from running
- trailing_whitespace
- force_cast
- force_unwrapping
- force_try
- empty_enum_arguments
- overridden_super_call
- sorted_imports
# - colon # Default configuration: warning, flexible_right_spacing: false, apply_to_dictionaries: true
# - comma # Default configuration: warning
# - opening_brace
# - todo
# - empty_parentheses_with_trailing_closure
# - empty_string
# - unused_closure_parameter
# - unused_setter_value
# - unused_optional_binding
# - redundant_void_return
# - void_return
# - redundant_string_enum_value
# - redundant_objc_attribute
# - closure_parameter_position
# - control_statement
# - notification_center_detachment
# - legacy_constructor
# - for_where
# - unneeded_break_in_switch
# - implicit_getter
# - duplicate_imports
# - trailing_newline
opt_in_rules: # some rules are only opt-in
# - missing_docs
- yoda_condition # Default configuration: warning
- empty_count # Default configuration: error, only_after_dot: false
- empty_string # Default configuration: warning
- closure_end_indentation # Default configuration: warning
- closure_spacing # Default configuration: warning
- explicit_init # Default configuration: warning
- first_where # Default configuration: warning
- number_separator # Default configuration: warning, minimum_length: 0
- explicit_failure_calls
- fatal_error_message
# - extension_access_modifier
# - implicitly_unwrapped_optional
# - operator_usage_whitespace
- vertical_parameter_alignment_on_call
- multiline_parameters
# - multiple_empty_lines # Defined into custom roles
- nesting
- private_outlet
- prohibited_super_call
- protocol_property_accessors_order
- redundant_nil_coalescing
- syntactic_sugar
- comments_space
- comments_capitalized_ignore_possible_code
- comments_capitalized_find_possible_code
line_length:
warning: 200
error: 250
ignores_function_declarations: true
ignores_comments: true
ignores_urls: true
function_body_length:
warning: 80
error: 150
function_parameter_count:
warning: 4
error: 6
type_name: # class name
min_length: 3
max_length:
warning: 60
error: 80
type_body_length:
warning: 300
error: 500
file_length:
warning: 500
error: 800
ignore_comment_only_lines: true
identifier_name: # Variable name
allowed_symbols: "_"
min_length: 1
max_length:
warning: 60
error: 80
excluded:
- id
- URL
- GlobalAPIKey
vertical_whitespace: # warning, max_empty_lines: 1
max_empty_lines: 3
large_tuple:
warning: 4
error: 5
private_outlet:
allow_private_set: true
#nesting:
# type_level:
# warning: 3
# error: 6
# statement_level:
# warning: 5
# error: 10
number_separator:
minimum_length: 8
#cyclomatic complexity below 4 is considered good;
#cyclomatic complexity between 5 and 7 is considered medium complexity,
#between 8 and 10 is high complexity,
#and above that is extreme complexity.
cyclomatic_complexity:
ignores_case_statements: true
warning: 7
error: 11
custom_rules:
comments_space: # From https://github.com/brandenr/swiftlintconfig
name: "Space After Comment"
regex: '(^ *//\w+)'
message: "There should be a space after //"
severity: warning
comments_capitalized_ignore_possible_code:
name: "Capitalize First Word In Comment"
regex: "(^ +// +(?!swiftlint)[a-z]+)"
message: "The first word of a comment should be capitalized"
severity: warning
explicit_failure_calls:
name: “Avoid asserting ‘false’”
regex: ‘((assert|precondition)\(false)’
message: “Use assertionFailure() or preconditionFailure() instead.”
severity: warning
multiple_empty_lines:
name: "Multiple Empty Lines"
regex: '((?:\s*\n){3,})'
message: "There are too many line breaks"
severity: error
force_https: # From https://github.com/Twigz/Game
name: "Force HTTPS over HTTP"
regex: "((?i)http(?!s))"
match_kinds: string
message: "HTTPS should be favored over HTTP"
severity: warning
already_true:
regex: "== true"
message: "Don't compare to true, just use the bool value."
already_bool:
regex: "== false"
message: "Don't compare to false, just use !value."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment