From 90c707fb8b7346b3ad8d1ea35c0f5c95b7c89ba6 Mon Sep 17 00:00:00 2001 From: "swiftlintbot@jpsim.com" Date: Sun, 24 Nov 2024 15:09:34 +0000 Subject: [PATCH] Automated deployment to GitHub Pages: 25f2776977e663305bee71309ea1e34d435065f1 --- Classes.html | 672 -- Classes/CodeIndentingRewriter.html | 513 -- .../IndentationStyle.html | 525 -- Classes/CustomRuleTimer.html | 492 -- .../DeclaredIdentifiersTrackingVisitor.html | 777 --- Classes/LinterCache.html | 499 -- Classes/RuleRegistry.html | 571 -- Classes/RuleStorage.html | 461 -- Classes/SwiftLintFile.html | 912 --- Classes/ViolationsSyntaxRewriter.html | 643 -- Classes/ViolationsSyntaxVisitor.html | 904 --- Enums.html | 707 --- Enums/AccessControlLevel.html | 725 --- Enums/ExecutableInfo.html | 432 -- Enums/IdentifierDeclaration.html | 614 -- Enums/Issue.html | 1183 ---- Enums/OptionType.html | 920 --- Enums/RuleIdentifier.html | 662 -- Enums/RuleKind.html | 552 -- Enums/RuleListError.html | 432 -- Enums/SwiftExpressionKind.html | 612 -- Enums/ViolationSeverity.html | 504 -- Extensions.html | 596 -- Extensions/Array.html | 943 --- Extensions/Bool.html | 456 -- Extensions/Double.html | 456 -- Extensions/Int.html | 456 -- Extensions/Optional.html | 465 -- Extensions/Set.html | 465 -- Extensions/String.html | 456 -- Functions.html | 444 -- Global Variables.html | 450 -- Guides.html | 2595 -------- Macros.html | 528 -- Protocols.html | 1003 --- Protocols/ASTRule.html | 666 -- .../AcceptableByConfigurationElement.html | 625 -- Protocols/AnalyzerRule.html | 435 -- Protocols/CacheDescriptionProvider.html | 433 -- Protocols/CollectingRule.html | 838 --- Protocols/CorrectableRule.html | 617 -- Protocols/Documentable.html | 534 -- Protocols/Reporter.html | 576 -- Protocols/Rule.html | 1230 ---- Protocols/RuleConfiguration.html | 595 -- Protocols/SeverityBasedRuleConfiguration.html | 465 -- Protocols/SubstitutionCorrectableRule.html | 553 -- Protocols/SwiftSyntaxCorrectableRule.html | 495 -- Protocols/SwiftSyntaxRule.html | 623 -- Protocols/VersionComparable.html | 496 -- Rules.html | 398 -- Structs.html | 1393 ----- Structs/Baseline.html | 685 -- Structs/ChildOptionSeverityConfiguration.html | 582 -- Structs/CollectedLinter.html | 655 -- Structs/Command.html | 803 --- Structs/Command/Action.html | 494 -- Structs/Command/Modifier.html | 524 -- Structs/Configuration.html | 1230 ---- Structs/ConfigurationElement.html | 898 --- .../DeprecationNotice.html | 434 -- Structs/Correction.html | 553 -- Structs/Example.html | 951 --- Structs/Linter.html | 603 -- Structs/Location.html | 853 --- Structs/ReasonedRuleViolation.html | 672 -- .../ViolationCorrection.html | 478 -- Structs/RegexConfiguration.html | 810 --- Structs/Region.html | 840 --- Structs/RuleConfigurationDescription.html | 519 -- Structs/RuleConfigurationOption.html | 549 -- Structs/RuleDescription.html | 991 --- Structs/RuleList.html | 573 -- Structs/RuleListDocumentation.html | 505 -- Structs/RuleParameter.html | 523 -- Structs/SeverityConfiguration.html | 613 -- Structs/SeverityLevelsConfiguration.html | 584 -- Structs/Stack.html | 752 --- Structs/StyleViolation.html | 828 --- Structs/SwiftLintSyntaxMap.html | 617 -- Structs/SwiftLintSyntaxToken.html | 601 -- Structs/SwiftVersion.html | 824 --- Structs/Version.html | 541 -- Structs/YamlParser.html | 473 -- accessibility_label_for_image.html | 648 -- accessibility_trait_for_button.html | 651 -- anonymous_argument_in_multiline_closure.html | 428 -- array_init.html | 458 -- attribute_name_spacing.html | 466 -- attributes.html | 667 -- badge.svg | 28 - balanced_xctest_lifecycle.html | 496 -- blanket_disable_command.html | 452 -- block_based_kvo.html | 428 -- capture_variable.html | 533 -- class_delegate_protocol.html | 443 -- closing_brace.html | 422 -- closure_body_length.html | 1110 ---- closure_end_indentation.html | 482 -- closure_parameter_position.html | 498 -- closure_spacing.html | 430 -- collection_alignment.html | 499 -- colon.html | 640 -- comma.html | 462 -- comma_inheritance.html | 446 -- comment_spacing.html | 468 -- compiler_protocol_init.html | 424 -- computed_accessors_order.html | 617 -- conditional_returns_on_newline.html | 457 -- contains_over_filter_count.html | 454 -- contains_over_filter_is_empty.html | 438 -- contains_over_first_not_nil.html | 468 -- contains_over_range_nil_comparison.html | 424 -- contrasted_opening_brace.html | 597 -- control_statement.html | 474 -- convenience_type.html | 489 -- css/highlight.css | 202 - css/jazzy.css | 405 -- custom_rules.html | 394 -- cyclomatic_complexity.html | 479 -- deployment_target.html | 554 -- direct_return.html | 474 -- discarded_notification_center_observer.html | 478 -- discouraged_assert.html | 430 -- discouraged_direct_init.html | 462 -- discouraged_none_name.html | 540 -- discouraged_object_literal.html | 444 -- discouraged_optional_boolean.html | 796 --- discouraged_optional_collection.html | 976 --- .../SwiftLintCore.docset/Contents/Info.plist | 22 - .../Contents/Resources/Documents/Classes.html | 672 -- .../Classes/CodeIndentingRewriter.html | 513 -- .../IndentationStyle.html | 525 -- .../Documents/Classes/CustomRuleTimer.html | 492 -- .../DeclaredIdentifiersTrackingVisitor.html | 777 --- .../Documents/Classes/LinterCache.html | 499 -- .../Documents/Classes/RuleRegistry.html | 571 -- .../Documents/Classes/RuleStorage.html | 461 -- .../Documents/Classes/SwiftLintFile.html | 912 --- .../Classes/ViolationsSyntaxRewriter.html | 643 -- .../Classes/ViolationsSyntaxVisitor.html | 904 --- .../Contents/Resources/Documents/Enums.html | 707 --- .../Documents/Enums/AccessControlLevel.html | 725 --- .../Documents/Enums/ExecutableInfo.html | 432 -- .../Enums/IdentifierDeclaration.html | 614 -- .../Resources/Documents/Enums/Issue.html | 1183 ---- .../Resources/Documents/Enums/OptionType.html | 920 --- .../Documents/Enums/RuleIdentifier.html | 662 -- .../Resources/Documents/Enums/RuleKind.html | 552 -- .../Documents/Enums/RuleListError.html | 432 -- .../Documents/Enums/SwiftExpressionKind.html | 612 -- .../Documents/Enums/ViolationSeverity.html | 504 -- .../Resources/Documents/Extensions.html | 596 -- .../Resources/Documents/Extensions/Array.html | 943 --- .../Resources/Documents/Extensions/Bool.html | 456 -- .../Documents/Extensions/Double.html | 456 -- .../Resources/Documents/Extensions/Int.html | 456 -- .../Documents/Extensions/Optional.html | 465 -- .../Resources/Documents/Extensions/Set.html | 465 -- .../Documents/Extensions/String.html | 456 -- .../Resources/Documents/Functions.html | 444 -- .../Resources/Documents/Global Variables.html | 450 -- .../Contents/Resources/Documents/Guides.html | 2595 -------- .../Contents/Resources/Documents/Macros.html | 528 -- .../Resources/Documents/Protocols.html | 1003 --- .../Documents/Protocols/ASTRule.html | 666 -- .../AcceptableByConfigurationElement.html | 625 -- .../Documents/Protocols/AnalyzerRule.html | 435 -- .../Protocols/CacheDescriptionProvider.html | 433 -- .../Documents/Protocols/CollectingRule.html | 838 --- .../Documents/Protocols/CorrectableRule.html | 617 -- .../Documents/Protocols/Documentable.html | 534 -- .../Documents/Protocols/Reporter.html | 576 -- .../Resources/Documents/Protocols/Rule.html | 1230 ---- .../Protocols/RuleConfiguration.html | 595 -- .../SeverityBasedRuleConfiguration.html | 465 -- .../SubstitutionCorrectableRule.html | 553 -- .../Protocols/SwiftSyntaxCorrectableRule.html | 495 -- .../Documents/Protocols/SwiftSyntaxRule.html | 623 -- .../Protocols/VersionComparable.html | 496 -- .../Contents/Resources/Documents/Rules.html | 398 -- .../Contents/Resources/Documents/Structs.html | 1393 ----- .../Resources/Documents/Structs/Baseline.html | 685 -- .../ChildOptionSeverityConfiguration.html | 582 -- .../Documents/Structs/CollectedLinter.html | 655 -- .../Resources/Documents/Structs/Command.html | 803 --- .../Documents/Structs/Command/Action.html | 494 -- .../Documents/Structs/Command/Modifier.html | 524 -- .../Documents/Structs/Configuration.html | 1230 ---- .../Structs/ConfigurationElement.html | 898 --- .../DeprecationNotice.html | 434 -- .../Documents/Structs/Correction.html | 553 -- .../Resources/Documents/Structs/Example.html | 951 --- .../Resources/Documents/Structs/Linter.html | 603 -- .../Resources/Documents/Structs/Location.html | 853 --- .../Structs/ReasonedRuleViolation.html | 672 -- .../ViolationCorrection.html | 478 -- .../Documents/Structs/RegexConfiguration.html | 810 --- .../Resources/Documents/Structs/Region.html | 840 --- .../Structs/RuleConfigurationDescription.html | 519 -- .../Structs/RuleConfigurationOption.html | 549 -- .../Documents/Structs/RuleDescription.html | 991 --- .../Resources/Documents/Structs/RuleList.html | 573 -- .../Structs/RuleListDocumentation.html | 505 -- .../Documents/Structs/RuleParameter.html | 523 -- .../Structs/SeverityConfiguration.html | 613 -- .../Structs/SeverityLevelsConfiguration.html | 584 -- .../Resources/Documents/Structs/Stack.html | 752 --- .../Documents/Structs/StyleViolation.html | 828 --- .../Documents/Structs/SwiftLintSyntaxMap.html | 617 -- .../Structs/SwiftLintSyntaxToken.html | 601 -- .../Documents/Structs/SwiftVersion.html | 824 --- .../Resources/Documents/Structs/Version.html | 541 -- .../Documents/Structs/YamlParser.html | 473 -- .../accessibility_label_for_image.html | 648 -- .../accessibility_trait_for_button.html | 651 -- ...onymous_argument_in_multiline_closure.html | 428 -- .../Resources/Documents/array_init.html | 458 -- .../Documents/attribute_name_spacing.html | 466 -- .../Resources/Documents/attributes.html | 667 -- .../Documents/balanced_xctest_lifecycle.html | 496 -- .../Documents/blanket_disable_command.html | 452 -- .../Resources/Documents/block_based_kvo.html | 428 -- .../Resources/Documents/capture_variable.html | 533 -- .../Documents/class_delegate_protocol.html | 443 -- .../Resources/Documents/closing_brace.html | 422 -- .../Documents/closure_body_length.html | 1110 ---- .../Documents/closure_end_indentation.html | 482 -- .../Documents/closure_parameter_position.html | 498 -- .../Resources/Documents/closure_spacing.html | 430 -- .../Documents/collection_alignment.html | 499 -- .../Contents/Resources/Documents/colon.html | 640 -- .../Contents/Resources/Documents/comma.html | 462 -- .../Documents/comma_inheritance.html | 446 -- .../Resources/Documents/comment_spacing.html | 468 -- .../Documents/compiler_protocol_init.html | 424 -- .../Documents/computed_accessors_order.html | 617 -- .../conditional_returns_on_newline.html | 457 -- .../Documents/contains_over_filter_count.html | 454 -- .../contains_over_filter_is_empty.html | 438 -- .../contains_over_first_not_nil.html | 468 -- .../contains_over_range_nil_comparison.html | 424 -- .../Documents/contrasted_opening_brace.html | 597 -- .../Documents/control_statement.html | 474 -- .../Resources/Documents/convenience_type.html | 489 -- .../Resources/Documents/css/highlight.css | 202 - .../Resources/Documents/css/jazzy.css | 405 -- .../Resources/Documents/custom_rules.html | 394 -- .../Documents/cyclomatic_complexity.html | 479 -- .../Documents/deployment_target.html | 554 -- .../Resources/Documents/direct_return.html | 474 -- ...iscarded_notification_center_observer.html | 478 -- .../Documents/discouraged_assert.html | 430 -- .../Documents/discouraged_direct_init.html | 462 -- .../Documents/discouraged_none_name.html | 540 -- .../Documents/discouraged_object_literal.html | 444 -- .../discouraged_optional_boolean.html | 796 --- .../discouraged_optional_collection.html | 976 --- .../Documents/duplicate_conditions.html | 534 -- .../Documents/duplicate_enum_cases.html | 448 -- .../Documents/duplicate_imports.html | 519 -- .../duplicated_key_in_dictionary_literal.html | 466 -- .../Resources/Documents/dynamic_inline.html | 444 -- .../Documents/empty_collection_literal.html | 436 -- .../Resources/Documents/empty_count.html | 458 -- .../Documents/empty_enum_arguments.html | 527 -- .../Resources/Documents/empty_parameters.html | 432 -- ...pty_parentheses_with_trailing_closure.html | 446 -- .../Resources/Documents/empty_string.html | 430 -- .../Documents/empty_xctest_method.html | 559 -- .../enum_case_associated_values_count.html | 438 -- .../Resources/Documents/expiring_todo.html | 510 -- .../Resources/Documents/explicit_acl.html | 513 -- .../Documents/explicit_enum_raw_value.html | 464 -- .../Resources/Documents/explicit_init.html | 470 -- .../Resources/Documents/explicit_self.html | 483 -- .../Documents/explicit_top_level_acl.html | 443 -- .../Documents/explicit_type_interface.html | 468 -- .../Documents/extension_access_modifier.html | 543 -- .../Resources/Documents/fallthrough.html | 424 -- .../Documents/fatal_error_message.html | 428 -- .../Resources/Documents/file_header.html | 432 -- .../Resources/Documents/file_length.html | 2039 ------ .../Resources/Documents/file_name.html | 442 -- .../Documents/file_name_no_space.html | 418 -- .../Resources/Documents/file_types_order.html | 625 -- .../Resources/Documents/final_test_case.html | 446 -- .../Resources/Documents/first_where.html | 445 -- .../Documents/flatmap_over_map_reduce.html | 418 -- .../Resources/Documents/for_where.html | 512 -- .../Resources/Documents/force_cast.html | 416 -- .../Resources/Documents/force_try.html | 420 -- .../Resources/Documents/force_unwrapping.html | 490 -- .../Documents/function_body_length.html | 418 -- .../function_default_parameter_at_end.html | 473 -- .../Documents/function_parameter_count.html | 459 -- .../Documents/generic_type_name.html | 568 -- .../Documents/ibinspectable_in_extension.html | 420 -- .../Documents/identical_operands.html | 898 --- .../Resources/Documents/identifier_name.html | 622 -- .../Resources/Documents/img/carat.png | Bin 274 -> 0 bytes .../Contents/Resources/Documents/img/dash.png | Bin 1338 -> 0 bytes .../Contents/Resources/Documents/img/gh.png | Bin 1571 -> 0 bytes .../Resources/Documents/img/spinner.gif | Bin 1849 -> 0 bytes .../Resources/Documents/implicit_getter.html | 639 -- .../Resources/Documents/implicit_return.html | 560 -- .../implicitly_unwrapped_optional.html | 456 -- .../Documents/inclusive_language.html | 446 -- .../Documents/indentation_width.html | 482 -- .../Contents/Resources/Documents/index.html | 1345 ---- .../Resources/Documents/inert_defer.html | 441 -- .../Documents/invalid_swiftlint_command.html | 454 -- .../Resources/Documents/is_disjoint.html | 424 -- .../Documents/joined_default_parameter.html | 427 -- .../Contents/Resources/Documents/js/jazzy.js | 74 - .../Resources/Documents/js/jazzy.search.js | 74 - .../Resources/Documents/js/jquery.min.js | 2 - .../Resources/Documents/js/lunr.min.js | 6 - .../Documents/js/typeahead.jquery.js | 1695 ----- .../Resources/Documents/large_tuple.html | 518 -- .../Resources/Documents/last_where.html | 437 -- .../Documents/leading_whitespace.html | 419 -- .../legacy_cggeometry_functions.html | 492 -- .../Resources/Documents/legacy_constant.html | 452 -- .../Documents/legacy_constructor.html | 505 -- .../Resources/Documents/legacy_hashing.html | 465 -- .../Resources/Documents/legacy_multiple.html | 443 -- .../legacy_nsgeometry_functions.html | 488 -- .../Resources/Documents/legacy_objc_type.html | 444 -- .../Resources/Documents/legacy_random.html | 424 -- .../Documents/let_var_whitespace.html | 587 -- .../Resources/Documents/line_length.html | 472 -- .../literal_expression_end_indentation.html | 457 -- .../Documents/local_doc_comment.html | 432 -- .../Documents/lower_acl_than_parent.html | 484 -- .../Contents/Resources/Documents/mark.html | 510 -- .../Resources/Documents/missing_docs.html | 621 -- .../Resources/Documents/modifier_order.html | 607 -- .../Documents/multiline_arguments.html | 513 -- .../multiline_arguments_brackets.html | 520 -- .../Documents/multiline_function_chains.html | 479 -- .../Documents/multiline_literal_brackets.html | 494 -- .../Documents/multiline_parameters.html | 844 --- .../multiline_parameters_brackets.html | 474 -- ...ltiple_closures_with_trailing_closure.html | 442 -- .../Contents/Resources/Documents/nesting.html | 1606 ----- .../Resources/Documents/nimble_operator.html | 472 -- .../Resources/Documents/no_empty_block.html | 555 -- .../no_extension_access_modifier.html | 429 -- .../Documents/no_fallthrough_only.html | 548 -- .../Documents/no_grouping_extension.html | 433 -- .../Resources/Documents/no_magic_numbers.html | 544 -- .../Documents/no_space_in_method_call.html | 446 -- .../non_optional_string_data_conversion.html | 416 -- .../non_overridable_class_declaration.html | 470 -- .../notification_center_detachment.html | 430 -- .../ns_number_init_as_function_reference.html | 426 -- .../Documents/nslocalizedstring_key.html | 433 -- .../nslocalizedstring_require_bundle.html | 431 -- .../Documents/nsobject_prefer_isequal.html | 484 -- .../Resources/Documents/number_separator.html | 665 -- .../Resources/Documents/object_literal.html | 476 -- .../Documents/one_declaration_per_file.html | 430 -- .../Resources/Documents/opening_brace.html | 678 -- .../Documents/operator_usage_whitespace.html | 584 -- .../Documents/operator_whitespace.html | 430 -- .../optional_data_string_conversion.html | 424 -- .../optional_enum_case_matching.html | 464 -- .../Documents/orphaned_doc_comment.html | 456 -- .../Documents/overridden_super_call.html | 480 -- .../Documents/override_in_extension.html | 444 -- .../Documents/pattern_matching_keywords.html | 504 -- .../Resources/Documents/period_spacing.html | 445 -- .../Resources/Documents/prefer_key_path.html | 545 -- .../Resources/Documents/prefer_nimble.html | 428 -- .../prefer_self_in_static_references.html | 483 -- .../prefer_self_type_over_type_of_self.html | 454 -- .../Documents/prefer_type_checking.html | 446 -- .../prefer_zero_over_explicit_init.html | 436 -- .../Documents/prefixed_toplevel_constant.html | 497 -- .../Resources/Documents/private_action.html | 480 -- .../Resources/Documents/private_outlet.html | 475 -- .../Documents/private_over_fileprivate.html | 468 -- .../Resources/Documents/private_subject.html | 574 -- .../Documents/private_swiftui_state.html | 564 -- .../Documents/private_unit_test.html | 499 -- .../prohibited_interface_builder.html | 428 -- .../Documents/prohibited_super_call.html | 477 -- .../protocol_property_accessors_order.html | 428 -- .../Documents/quick_discouraged_call.html | 704 --- .../quick_discouraged_focused_test.html | 481 -- .../quick_discouraged_pending_test.html | 487 -- ...aw_value_for_camel_cased_codable_enum.html | 477 -- .../Resources/Documents/reduce_boolean.html | 436 -- .../Resources/Documents/reduce_into.html | 487 -- .../Documents/redundant_discardable_let.html | 428 -- .../Documents/redundant_nil_coalescing.html | 416 -- .../Documents/redundant_objc_attribute.html | 602 -- .../redundant_optional_initialization.html | 463 -- .../Documents/redundant_self_in_closure.html | 581 -- .../redundant_set_access_control.html | 452 -- .../redundant_string_enum_value.html | 449 -- .../Documents/redundant_type_annotation.html | 641 -- .../Documents/redundant_void_return.html | 479 -- .../Resources/Documents/required_deinit.html | 457 -- .../Documents/required_enum_case.html | 536 -- .../Documents/return_arrow_whitespace.html | 465 -- .../return_value_from_void_function.html | 626 -- .../Resources/Documents/rule-directory.html | 639 -- .../Contents/Resources/Documents/search.json | 1 - .../Resources/Documents/self_binding.html | 478 -- .../self_in_property_initialization.html | 460 -- .../Documents/shorthand_argument.html | 497 -- .../Documents/shorthand_operator.html | 453 -- .../Documents/shorthand_optional_binding.html | 434 -- .../Documents/single_test_class.html | 451 -- .../Documents/sorted_enum_cases.html | 490 -- .../Documents/sorted_first_last.html | 472 -- .../Resources/Documents/sorted_imports.html | 482 -- .../Documents/statement_position.html | 448 -- .../Resources/Documents/static_operator.html | 466 -- .../Documents/static_over_final_class.html | 458 -- .../Documents/strict_fileprivate.html | 457 -- .../Resources/Documents/strong_iboutlet.html | 432 -- .../superfluous_disable_command.html | 424 -- .../Resources/Documents/superfluous_else.html | 504 -- .../Documents/swift-syntax-dashboard.html | 648 -- .../Documents/switch_case_alignment.html | 578 -- .../Documents/switch_case_on_newline.html | 524 -- .../Resources/Documents/syntactic_sugar.html | 492 -- .../Documents/test_case_accessibility.html | 523 -- .../Contents/Resources/Documents/todo.html | 440 -- .../Resources/Documents/toggle_bool.html | 430 -- .../Resources/Documents/trailing_closure.html | 468 -- .../Resources/Documents/trailing_comma.html | 470 -- .../Resources/Documents/trailing_newline.html | 421 -- .../Documents/trailing_semicolon.html | 425 -- .../Documents/trailing_whitespace.html | 449 -- .../Resources/Documents/type_body_length.html | 5516 ----------------- .../Documents/type_contents_order.html | 645 -- .../Resources/Documents/type_name.html | 576 -- .../Documents/typesafe_array_init.html | 440 -- .../Documents/unavailable_condition.html | 450 -- .../Documents/unavailable_function.html | 461 -- .../Documents/unhandled_throwing_task.html | 552 -- .../Documents/unneeded_break_in_switch.html | 473 -- .../Documents/unneeded_override.html | 570 -- ...eeded_parentheses_in_closure_argument.html | 456 -- .../unneeded_synthesized_initializer.html | 742 --- .../Documents/unowned_variable_capture.html | 438 -- .../Documents/untyped_error_in_catch.html | 467 -- .../Documents/unused_capture_list.html | 517 -- .../Documents/unused_closure_parameter.html | 525 -- .../Documents/unused_control_flow_label.html | 455 -- .../Documents/unused_declaration.html | 707 --- .../Documents/unused_enumerated.html | 475 -- .../Resources/Documents/unused_import.html | 494 -- .../Documents/unused_optional_binding.html | 450 -- .../Resources/Documents/unused_parameter.html | 489 -- .../Documents/unused_setter_value.html | 501 -- .../Documents/valid_ibinspectable.html | 488 -- .../vertical_parameter_alignment.html | 477 -- .../vertical_parameter_alignment_on_call.html | 500 -- .../Documents/vertical_whitespace.html | 453 -- .../vertical_whitespace_between_cases.html | 514 -- .../vertical_whitespace_closing_braces.html | 550 -- .../vertical_whitespace_opening_braces.html | 526 -- .../Documents/void_function_in_ternary.html | 491 -- .../Resources/Documents/void_return.html | 456 -- .../Resources/Documents/weak_delegate.html | 493 -- .../Documents/xct_specific_matcher.html | 600 -- .../Resources/Documents/xctfail_message.html | 428 -- .../Resources/Documents/yoda_condition.html | 450 -- .../Contents/Resources/docSet.dsidx | Bin 176128 -> 0 bytes docsets/SwiftLintCore.tgz | Bin 693574 -> 0 bytes docsets/SwiftLintCore.xml | 1 - duplicate_conditions.html | 534 -- duplicate_enum_cases.html | 448 -- duplicate_imports.html | 519 -- duplicated_key_in_dictionary_literal.html | 466 -- dynamic_inline.html | 444 -- empty_collection_literal.html | 436 -- empty_count.html | 458 -- empty_enum_arguments.html | 527 -- empty_parameters.html | 432 -- empty_parentheses_with_trailing_closure.html | 446 -- empty_string.html | 430 -- empty_xctest_method.html | 559 -- enum_case_associated_values_count.html | 438 -- expiring_todo.html | 510 -- explicit_acl.html | 513 -- explicit_enum_raw_value.html | 464 -- explicit_init.html | 470 -- explicit_self.html | 483 -- explicit_top_level_acl.html | 443 -- explicit_type_interface.html | 468 -- extension_access_modifier.html | 543 -- fallthrough.html | 424 -- fatal_error_message.html | 428 -- file_header.html | 432 -- file_length.html | 2039 ------ file_name.html | 442 -- file_name_no_space.html | 418 -- file_types_order.html | 625 -- final_test_case.html | 446 -- first_where.html | 445 -- flatmap_over_map_reduce.html | 418 -- for_where.html | 512 -- force_cast.html | 416 -- force_try.html | 420 -- force_unwrapping.html | 490 -- function_body_length.html | 418 -- function_default_parameter_at_end.html | 473 -- function_parameter_count.html | 459 -- generic_type_name.html | 568 -- ibinspectable_in_extension.html | 420 -- identical_operands.html | 898 --- identifier_name.html | 622 -- img/carat.png | Bin 274 -> 0 bytes img/dash.png | Bin 1338 -> 0 bytes img/gh.png | Bin 1571 -> 0 bytes img/spinner.gif | Bin 1849 -> 0 bytes implicit_getter.html | 639 -- implicit_return.html | 560 -- implicitly_unwrapped_optional.html | 456 -- inclusive_language.html | 446 -- indentation_width.html | 482 -- index.html | 1345 ---- inert_defer.html | 441 -- invalid_swiftlint_command.html | 454 -- is_disjoint.html | 424 -- joined_default_parameter.html | 427 -- js/jazzy.js | 74 - js/jazzy.search.js | 74 - js/jquery.min.js | 2 - js/lunr.min.js | 6 - js/typeahead.jquery.js | 1695 ----- large_tuple.html | 518 -- last_where.html | 437 -- leading_whitespace.html | 419 -- legacy_cggeometry_functions.html | 492 -- legacy_constant.html | 452 -- legacy_constructor.html | 505 -- legacy_hashing.html | 465 -- legacy_multiple.html | 443 -- legacy_nsgeometry_functions.html | 488 -- legacy_objc_type.html | 444 -- legacy_random.html | 424 -- let_var_whitespace.html | 587 -- line_length.html | 472 -- literal_expression_end_indentation.html | 457 -- local_doc_comment.html | 432 -- lower_acl_than_parent.html | 484 -- mark.html | 510 -- missing_docs.html | 621 -- modifier_order.html | 607 -- multiline_arguments.html | 513 -- multiline_arguments_brackets.html | 520 -- multiline_function_chains.html | 479 -- multiline_literal_brackets.html | 494 -- multiline_parameters.html | 844 --- multiline_parameters_brackets.html | 474 -- multiple_closures_with_trailing_closure.html | 442 -- nesting.html | 1606 ----- nimble_operator.html | 472 -- no_empty_block.html | 555 -- no_extension_access_modifier.html | 429 -- no_fallthrough_only.html | 548 -- no_grouping_extension.html | 433 -- no_magic_numbers.html | 544 -- no_space_in_method_call.html | 446 -- non_optional_string_data_conversion.html | 416 -- non_overridable_class_declaration.html | 470 -- notification_center_detachment.html | 430 -- ns_number_init_as_function_reference.html | 426 -- nslocalizedstring_key.html | 433 -- nslocalizedstring_require_bundle.html | 431 -- nsobject_prefer_isequal.html | 484 -- number_separator.html | 665 -- object_literal.html | 476 -- one_declaration_per_file.html | 430 -- opening_brace.html | 678 -- operator_usage_whitespace.html | 584 -- operator_whitespace.html | 430 -- optional_data_string_conversion.html | 424 -- optional_enum_case_matching.html | 464 -- orphaned_doc_comment.html | 456 -- overridden_super_call.html | 480 -- override_in_extension.html | 444 -- pattern_matching_keywords.html | 504 -- period_spacing.html | 445 -- prefer_key_path.html | 545 -- prefer_nimble.html | 428 -- prefer_self_in_static_references.html | 483 -- prefer_self_type_over_type_of_self.html | 454 -- prefer_type_checking.html | 446 -- prefer_zero_over_explicit_init.html | 436 -- prefixed_toplevel_constant.html | 497 -- private_action.html | 480 -- private_outlet.html | 475 -- private_over_fileprivate.html | 468 -- private_subject.html | 574 -- private_swiftui_state.html | 564 -- private_unit_test.html | 499 -- prohibited_interface_builder.html | 428 -- prohibited_super_call.html | 477 -- protocol_property_accessors_order.html | 428 -- quick_discouraged_call.html | 704 --- quick_discouraged_focused_test.html | 481 -- quick_discouraged_pending_test.html | 487 -- raw_value_for_camel_cased_codable_enum.html | 477 -- reduce_boolean.html | 436 -- reduce_into.html | 487 -- redundant_discardable_let.html | 428 -- redundant_nil_coalescing.html | 416 -- redundant_objc_attribute.html | 602 -- redundant_optional_initialization.html | 463 -- redundant_self_in_closure.html | 581 -- redundant_set_access_control.html | 452 -- redundant_string_enum_value.html | 449 -- redundant_type_annotation.html | 641 -- redundant_void_return.html | 479 -- required_deinit.html | 457 -- required_enum_case.html | 536 -- return_arrow_whitespace.html | 465 -- return_value_from_void_function.html | 626 -- rule-directory.html | 639 -- search.json | 1 - self_binding.html | 478 -- self_in_property_initialization.html | 460 -- shorthand_argument.html | 497 -- shorthand_operator.html | 453 -- shorthand_optional_binding.html | 434 -- single_test_class.html | 451 -- sorted_enum_cases.html | 490 -- sorted_first_last.html | 472 -- sorted_imports.html | 482 -- statement_position.html | 448 -- static_operator.html | 466 -- static_over_final_class.html | 458 -- strict_fileprivate.html | 457 -- strong_iboutlet.html | 432 -- superfluous_disable_command.html | 424 -- superfluous_else.html | 504 -- swift-syntax-dashboard.html | 648 -- switch_case_alignment.html | 578 -- switch_case_on_newline.html | 524 -- syntactic_sugar.html | 492 -- test_case_accessibility.html | 523 -- todo.html | 440 -- toggle_bool.html | 430 -- trailing_closure.html | 468 -- trailing_comma.html | 470 -- trailing_newline.html | 421 -- trailing_semicolon.html | 425 -- trailing_whitespace.html | 449 -- type_body_length.html | 5516 ----------------- type_contents_order.html | 645 -- type_name.html | 576 -- typesafe_array_init.html | 440 -- unavailable_condition.html | 450 -- unavailable_function.html | 461 -- undocumented.json | 6 - unhandled_throwing_task.html | 552 -- unneeded_break_in_switch.html | 473 -- unneeded_override.html | 570 -- unneeded_parentheses_in_closure_argument.html | 456 -- unneeded_synthesized_initializer.html | 742 --- unowned_variable_capture.html | 438 -- untyped_error_in_catch.html | 467 -- unused_capture_list.html | 517 -- unused_closure_parameter.html | 525 -- unused_control_flow_label.html | 455 -- unused_declaration.html | 707 --- unused_enumerated.html | 475 -- unused_import.html | 494 -- unused_optional_binding.html | 450 -- unused_parameter.html | 489 -- unused_setter_value.html | 501 -- valid_ibinspectable.html | 488 -- vertical_parameter_alignment.html | 477 -- vertical_parameter_alignment_on_call.html | 500 -- vertical_whitespace.html | 453 -- vertical_whitespace_between_cases.html | 514 -- vertical_whitespace_closing_braces.html | 550 -- vertical_whitespace_opening_braces.html | 526 -- void_function_in_ternary.html | 491 -- void_return.html | 456 -- weak_delegate.html | 493 -- xct_specific_matcher.html | 600 -- xctfail_message.html | 428 -- yoda_condition.html | 450 -- 692 files changed, 379739 deletions(-) delete mode 100644 Classes.html delete mode 100644 Classes/CodeIndentingRewriter.html delete mode 100644 Classes/CodeIndentingRewriter/IndentationStyle.html delete mode 100644 Classes/CustomRuleTimer.html delete mode 100644 Classes/DeclaredIdentifiersTrackingVisitor.html delete mode 100644 Classes/LinterCache.html delete mode 100644 Classes/RuleRegistry.html delete mode 100644 Classes/RuleStorage.html delete mode 100644 Classes/SwiftLintFile.html delete mode 100644 Classes/ViolationsSyntaxRewriter.html delete mode 100644 Classes/ViolationsSyntaxVisitor.html delete mode 100644 Enums.html delete mode 100644 Enums/AccessControlLevel.html delete mode 100644 Enums/ExecutableInfo.html delete mode 100644 Enums/IdentifierDeclaration.html delete mode 100644 Enums/Issue.html delete mode 100644 Enums/OptionType.html delete mode 100644 Enums/RuleIdentifier.html delete mode 100644 Enums/RuleKind.html delete mode 100644 Enums/RuleListError.html delete mode 100644 Enums/SwiftExpressionKind.html delete mode 100644 Enums/ViolationSeverity.html delete mode 100644 Extensions.html delete mode 100644 Extensions/Array.html delete mode 100644 Extensions/Bool.html delete mode 100644 Extensions/Double.html delete mode 100644 Extensions/Int.html delete mode 100644 Extensions/Optional.html delete mode 100644 Extensions/Set.html delete mode 100644 Extensions/String.html delete mode 100644 Functions.html delete mode 100644 Global Variables.html delete mode 100644 Guides.html delete mode 100644 Macros.html delete mode 100644 Protocols.html delete mode 100644 Protocols/ASTRule.html delete mode 100644 Protocols/AcceptableByConfigurationElement.html delete mode 100644 Protocols/AnalyzerRule.html delete mode 100644 Protocols/CacheDescriptionProvider.html delete mode 100644 Protocols/CollectingRule.html delete mode 100644 Protocols/CorrectableRule.html delete mode 100644 Protocols/Documentable.html delete mode 100644 Protocols/Reporter.html delete mode 100644 Protocols/Rule.html delete mode 100644 Protocols/RuleConfiguration.html delete mode 100644 Protocols/SeverityBasedRuleConfiguration.html delete mode 100644 Protocols/SubstitutionCorrectableRule.html delete mode 100644 Protocols/SwiftSyntaxCorrectableRule.html delete mode 100644 Protocols/SwiftSyntaxRule.html delete mode 100644 Protocols/VersionComparable.html delete mode 100644 Rules.html delete mode 100644 Structs.html delete mode 100644 Structs/Baseline.html delete mode 100644 Structs/ChildOptionSeverityConfiguration.html delete mode 100644 Structs/CollectedLinter.html delete mode 100644 Structs/Command.html delete mode 100644 Structs/Command/Action.html delete mode 100644 Structs/Command/Modifier.html delete mode 100644 Structs/Configuration.html delete mode 100644 Structs/ConfigurationElement.html delete mode 100644 Structs/ConfigurationElement/DeprecationNotice.html delete mode 100644 Structs/Correction.html delete mode 100644 Structs/Example.html delete mode 100644 Structs/Linter.html delete mode 100644 Structs/Location.html delete mode 100644 Structs/ReasonedRuleViolation.html delete mode 100644 Structs/ReasonedRuleViolation/ViolationCorrection.html delete mode 100644 Structs/RegexConfiguration.html delete mode 100644 Structs/Region.html delete mode 100644 Structs/RuleConfigurationDescription.html delete mode 100644 Structs/RuleConfigurationOption.html delete mode 100644 Structs/RuleDescription.html delete mode 100644 Structs/RuleList.html delete mode 100644 Structs/RuleListDocumentation.html delete mode 100644 Structs/RuleParameter.html delete mode 100644 Structs/SeverityConfiguration.html delete mode 100644 Structs/SeverityLevelsConfiguration.html delete mode 100644 Structs/Stack.html delete mode 100644 Structs/StyleViolation.html delete mode 100644 Structs/SwiftLintSyntaxMap.html delete mode 100644 Structs/SwiftLintSyntaxToken.html delete mode 100644 Structs/SwiftVersion.html delete mode 100644 Structs/Version.html delete mode 100644 Structs/YamlParser.html delete mode 100644 accessibility_label_for_image.html delete mode 100644 accessibility_trait_for_button.html delete mode 100644 anonymous_argument_in_multiline_closure.html delete mode 100644 array_init.html delete mode 100644 attribute_name_spacing.html delete mode 100644 attributes.html delete mode 100644 badge.svg delete mode 100644 balanced_xctest_lifecycle.html delete mode 100644 blanket_disable_command.html delete mode 100644 block_based_kvo.html delete mode 100644 capture_variable.html delete mode 100644 class_delegate_protocol.html delete mode 100644 closing_brace.html delete mode 100644 closure_body_length.html delete mode 100644 closure_end_indentation.html delete mode 100644 closure_parameter_position.html delete mode 100644 closure_spacing.html delete mode 100644 collection_alignment.html delete mode 100644 colon.html delete mode 100644 comma.html delete mode 100644 comma_inheritance.html delete mode 100644 comment_spacing.html delete mode 100644 compiler_protocol_init.html delete mode 100644 computed_accessors_order.html delete mode 100644 conditional_returns_on_newline.html delete mode 100644 contains_over_filter_count.html delete mode 100644 contains_over_filter_is_empty.html delete mode 100644 contains_over_first_not_nil.html delete mode 100644 contains_over_range_nil_comparison.html delete mode 100644 contrasted_opening_brace.html delete mode 100644 control_statement.html delete mode 100644 convenience_type.html delete mode 100644 css/highlight.css delete mode 100644 css/jazzy.css delete mode 100644 custom_rules.html delete mode 100644 cyclomatic_complexity.html delete mode 100644 deployment_target.html delete mode 100644 direct_return.html delete mode 100644 discarded_notification_center_observer.html delete mode 100644 discouraged_assert.html delete mode 100644 discouraged_direct_init.html delete mode 100644 discouraged_none_name.html delete mode 100644 discouraged_object_literal.html delete mode 100644 discouraged_optional_boolean.html delete mode 100644 discouraged_optional_collection.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Info.plist delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter/IndentationStyle.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CustomRuleTimer.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/DeclaredIdentifiersTrackingVisitor.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/LinterCache.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleRegistry.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleStorage.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxRewriter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxVisitor.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ExecutableInfo.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/IdentifierDeclaration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/Issue.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/OptionType.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleKind.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleListError.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Array.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Bool.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Double.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Int.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Optional.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Set.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/String.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Functions.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Global Variables.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Guides.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Macros.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/ASTRule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AcceptableByConfigurationElement.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CacheDescriptionProvider.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CollectingRule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Documentable.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Reporter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Rule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SeverityBasedRuleConfiguration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxCorrectableRule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxRule.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/VersionComparable.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Rules.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Baseline.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ChildOptionSeverityConfiguration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/CollectedLinter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Action.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Modifier.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Configuration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement/DeprecationNotice.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Correction.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Example.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Linter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Location.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation/ViolationCorrection.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RegexConfiguration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Region.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationDescription.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationOption.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleDescription.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleList.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleParameter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityConfiguration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityLevelsConfiguration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Stack.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/StyleViolation.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftVersion.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Version.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/YamlParser.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_label_for_image.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_trait_for_button.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/array_init.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/attribute_name_spacing.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/attributes.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/blanket_disable_command.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/block_based_kvo.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/capture_variable.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/class_delegate_protocol.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/closing_brace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_body_length.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_end_indentation.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_parameter_position.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_spacing.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/collection_alignment.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/colon.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma_inheritance.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/comment_spacing.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/compiler_protocol_init.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/computed_accessors_order.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/conditional_returns_on_newline.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_count.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_first_not_nil.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/contrasted_opening_brace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/control_statement.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/convenience_type.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/highlight.css delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/jazzy.css delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/custom_rules.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/cyclomatic_complexity.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/deployment_target.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/direct_return.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/discarded_notification_center_observer.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_assert.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_direct_init.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_none_name.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_object_literal.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_boolean.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_collection.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_conditions.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_enum_cases.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_imports.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/dynamic_inline.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_collection_literal.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_count.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_enum_arguments.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parameters.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_string.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_xctest_method.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/enum_case_associated_values_count.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/expiring_todo.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_acl.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_enum_raw_value.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_init.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_self.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_top_level_acl.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_type_interface.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/extension_access_modifier.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/fallthrough.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/fatal_error_message.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_header.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_length.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name_no_space.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_types_order.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/final_test_case.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/first_where.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/for_where.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_cast.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_try.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_unwrapping.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_body_length.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_default_parameter_at_end.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_parameter_count.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/generic_type_name.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/ibinspectable_in_extension.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/identical_operands.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/identifier_name.html delete mode 100755 docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/carat.png delete mode 100755 docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/dash.png delete mode 100755 docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/gh.png delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/spinner.gif delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_getter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_return.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/inclusive_language.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/indentation_width.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/index.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/inert_defer.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/invalid_swiftlint_command.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/is_disjoint.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/joined_default_parameter.html delete mode 100755 docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.js delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.search.js delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jquery.min.js delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/lunr.min.js delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/typeahead.jquery.js delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/large_tuple.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/last_where.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/leading_whitespace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constant.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constructor.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_hashing.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_multiple.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_objc_type.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_random.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/let_var_whitespace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/line_length.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/literal_expression_end_indentation.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/local_doc_comment.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/lower_acl_than_parent.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/mark.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/missing_docs.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/modifier_order.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments_brackets.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_function_chains.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_literal_brackets.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters_brackets.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/nesting.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/nimble_operator.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_empty_block.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_extension_access_modifier.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_fallthrough_only.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_grouping_extension.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_magic_numbers.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_space_in_method_call.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_optional_string_data_conversion.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_overridable_class_declaration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/notification_center_detachment.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/ns_number_init_as_function_reference.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_key.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/number_separator.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/object_literal.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/one_declaration_per_file.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/opening_brace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_usage_whitespace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_whitespace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_data_string_conversion.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_enum_case_matching.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/orphaned_doc_comment.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/overridden_super_call.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/override_in_extension.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/pattern_matching_keywords.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/period_spacing.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_key_path.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_nimble.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_in_static_references.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_type_checking.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_action.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_outlet.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_over_fileprivate.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_subject.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_swiftui_state.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_unit_test.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_interface_builder.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_super_call.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/protocol_property_accessors_order.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_call.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_boolean.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_into.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_discardable_let.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_nil_coalescing.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_objc_attribute.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_optional_initialization.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_self_in_closure.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_set_access_control.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_string_enum_value.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_type_annotation.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_void_return.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_deinit.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_enum_case.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_arrow_whitespace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_value_from_void_function.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/rule-directory.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/search.json delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_binding.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_in_property_initialization.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_argument.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_operator.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_optional_binding.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/single_test_class.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_enum_cases.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_first_last.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_imports.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/statement_position.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_operator.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_over_final_class.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/strict_fileprivate.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/strong_iboutlet.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_disable_command.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_else.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/swift-syntax-dashboard.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_alignment.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_on_newline.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/syntactic_sugar.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/test_case_accessibility.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/todo.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/toggle_bool.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_closure.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_comma.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_newline.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_semicolon.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_whitespace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_body_length.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_contents_order.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_name.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/typesafe_array_init.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_condition.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_function.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unhandled_throwing_task.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_break_in_switch.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_override.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_synthesized_initializer.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unowned_variable_capture.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/untyped_error_in_catch.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_capture_list.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_closure_parameter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_control_flow_label.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_declaration.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_enumerated.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_import.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_optional_binding.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_parameter.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_setter_value.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/valid_ibinspectable.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_function_in_ternary.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_return.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/weak_delegate.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/xct_specific_matcher.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/xctfail_message.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/Documents/yoda_condition.html delete mode 100644 docsets/SwiftLintCore.docset/Contents/Resources/docSet.dsidx delete mode 100644 docsets/SwiftLintCore.tgz delete mode 100644 docsets/SwiftLintCore.xml delete mode 100644 duplicate_conditions.html delete mode 100644 duplicate_enum_cases.html delete mode 100644 duplicate_imports.html delete mode 100644 duplicated_key_in_dictionary_literal.html delete mode 100644 dynamic_inline.html delete mode 100644 empty_collection_literal.html delete mode 100644 empty_count.html delete mode 100644 empty_enum_arguments.html delete mode 100644 empty_parameters.html delete mode 100644 empty_parentheses_with_trailing_closure.html delete mode 100644 empty_string.html delete mode 100644 empty_xctest_method.html delete mode 100644 enum_case_associated_values_count.html delete mode 100644 expiring_todo.html delete mode 100644 explicit_acl.html delete mode 100644 explicit_enum_raw_value.html delete mode 100644 explicit_init.html delete mode 100644 explicit_self.html delete mode 100644 explicit_top_level_acl.html delete mode 100644 explicit_type_interface.html delete mode 100644 extension_access_modifier.html delete mode 100644 fallthrough.html delete mode 100644 fatal_error_message.html delete mode 100644 file_header.html delete mode 100644 file_length.html delete mode 100644 file_name.html delete mode 100644 file_name_no_space.html delete mode 100644 file_types_order.html delete mode 100644 final_test_case.html delete mode 100644 first_where.html delete mode 100644 flatmap_over_map_reduce.html delete mode 100644 for_where.html delete mode 100644 force_cast.html delete mode 100644 force_try.html delete mode 100644 force_unwrapping.html delete mode 100644 function_body_length.html delete mode 100644 function_default_parameter_at_end.html delete mode 100644 function_parameter_count.html delete mode 100644 generic_type_name.html delete mode 100644 ibinspectable_in_extension.html delete mode 100644 identical_operands.html delete mode 100644 identifier_name.html delete mode 100755 img/carat.png delete mode 100755 img/dash.png delete mode 100755 img/gh.png delete mode 100644 img/spinner.gif delete mode 100644 implicit_getter.html delete mode 100644 implicit_return.html delete mode 100644 implicitly_unwrapped_optional.html delete mode 100644 inclusive_language.html delete mode 100644 indentation_width.html delete mode 100644 index.html delete mode 100644 inert_defer.html delete mode 100644 invalid_swiftlint_command.html delete mode 100644 is_disjoint.html delete mode 100644 joined_default_parameter.html delete mode 100755 js/jazzy.js delete mode 100644 js/jazzy.search.js delete mode 100644 js/jquery.min.js delete mode 100644 js/lunr.min.js delete mode 100644 js/typeahead.jquery.js delete mode 100644 large_tuple.html delete mode 100644 last_where.html delete mode 100644 leading_whitespace.html delete mode 100644 legacy_cggeometry_functions.html delete mode 100644 legacy_constant.html delete mode 100644 legacy_constructor.html delete mode 100644 legacy_hashing.html delete mode 100644 legacy_multiple.html delete mode 100644 legacy_nsgeometry_functions.html delete mode 100644 legacy_objc_type.html delete mode 100644 legacy_random.html delete mode 100644 let_var_whitespace.html delete mode 100644 line_length.html delete mode 100644 literal_expression_end_indentation.html delete mode 100644 local_doc_comment.html delete mode 100644 lower_acl_than_parent.html delete mode 100644 mark.html delete mode 100644 missing_docs.html delete mode 100644 modifier_order.html delete mode 100644 multiline_arguments.html delete mode 100644 multiline_arguments_brackets.html delete mode 100644 multiline_function_chains.html delete mode 100644 multiline_literal_brackets.html delete mode 100644 multiline_parameters.html delete mode 100644 multiline_parameters_brackets.html delete mode 100644 multiple_closures_with_trailing_closure.html delete mode 100644 nesting.html delete mode 100644 nimble_operator.html delete mode 100644 no_empty_block.html delete mode 100644 no_extension_access_modifier.html delete mode 100644 no_fallthrough_only.html delete mode 100644 no_grouping_extension.html delete mode 100644 no_magic_numbers.html delete mode 100644 no_space_in_method_call.html delete mode 100644 non_optional_string_data_conversion.html delete mode 100644 non_overridable_class_declaration.html delete mode 100644 notification_center_detachment.html delete mode 100644 ns_number_init_as_function_reference.html delete mode 100644 nslocalizedstring_key.html delete mode 100644 nslocalizedstring_require_bundle.html delete mode 100644 nsobject_prefer_isequal.html delete mode 100644 number_separator.html delete mode 100644 object_literal.html delete mode 100644 one_declaration_per_file.html delete mode 100644 opening_brace.html delete mode 100644 operator_usage_whitespace.html delete mode 100644 operator_whitespace.html delete mode 100644 optional_data_string_conversion.html delete mode 100644 optional_enum_case_matching.html delete mode 100644 orphaned_doc_comment.html delete mode 100644 overridden_super_call.html delete mode 100644 override_in_extension.html delete mode 100644 pattern_matching_keywords.html delete mode 100644 period_spacing.html delete mode 100644 prefer_key_path.html delete mode 100644 prefer_nimble.html delete mode 100644 prefer_self_in_static_references.html delete mode 100644 prefer_self_type_over_type_of_self.html delete mode 100644 prefer_type_checking.html delete mode 100644 prefer_zero_over_explicit_init.html delete mode 100644 prefixed_toplevel_constant.html delete mode 100644 private_action.html delete mode 100644 private_outlet.html delete mode 100644 private_over_fileprivate.html delete mode 100644 private_subject.html delete mode 100644 private_swiftui_state.html delete mode 100644 private_unit_test.html delete mode 100644 prohibited_interface_builder.html delete mode 100644 prohibited_super_call.html delete mode 100644 protocol_property_accessors_order.html delete mode 100644 quick_discouraged_call.html delete mode 100644 quick_discouraged_focused_test.html delete mode 100644 quick_discouraged_pending_test.html delete mode 100644 raw_value_for_camel_cased_codable_enum.html delete mode 100644 reduce_boolean.html delete mode 100644 reduce_into.html delete mode 100644 redundant_discardable_let.html delete mode 100644 redundant_nil_coalescing.html delete mode 100644 redundant_objc_attribute.html delete mode 100644 redundant_optional_initialization.html delete mode 100644 redundant_self_in_closure.html delete mode 100644 redundant_set_access_control.html delete mode 100644 redundant_string_enum_value.html delete mode 100644 redundant_type_annotation.html delete mode 100644 redundant_void_return.html delete mode 100644 required_deinit.html delete mode 100644 required_enum_case.html delete mode 100644 return_arrow_whitespace.html delete mode 100644 return_value_from_void_function.html delete mode 100644 rule-directory.html delete mode 100644 search.json delete mode 100644 self_binding.html delete mode 100644 self_in_property_initialization.html delete mode 100644 shorthand_argument.html delete mode 100644 shorthand_operator.html delete mode 100644 shorthand_optional_binding.html delete mode 100644 single_test_class.html delete mode 100644 sorted_enum_cases.html delete mode 100644 sorted_first_last.html delete mode 100644 sorted_imports.html delete mode 100644 statement_position.html delete mode 100644 static_operator.html delete mode 100644 static_over_final_class.html delete mode 100644 strict_fileprivate.html delete mode 100644 strong_iboutlet.html delete mode 100644 superfluous_disable_command.html delete mode 100644 superfluous_else.html delete mode 100644 swift-syntax-dashboard.html delete mode 100644 switch_case_alignment.html delete mode 100644 switch_case_on_newline.html delete mode 100644 syntactic_sugar.html delete mode 100644 test_case_accessibility.html delete mode 100644 todo.html delete mode 100644 toggle_bool.html delete mode 100644 trailing_closure.html delete mode 100644 trailing_comma.html delete mode 100644 trailing_newline.html delete mode 100644 trailing_semicolon.html delete mode 100644 trailing_whitespace.html delete mode 100644 type_body_length.html delete mode 100644 type_contents_order.html delete mode 100644 type_name.html delete mode 100644 typesafe_array_init.html delete mode 100644 unavailable_condition.html delete mode 100644 unavailable_function.html delete mode 100644 undocumented.json delete mode 100644 unhandled_throwing_task.html delete mode 100644 unneeded_break_in_switch.html delete mode 100644 unneeded_override.html delete mode 100644 unneeded_parentheses_in_closure_argument.html delete mode 100644 unneeded_synthesized_initializer.html delete mode 100644 unowned_variable_capture.html delete mode 100644 untyped_error_in_catch.html delete mode 100644 unused_capture_list.html delete mode 100644 unused_closure_parameter.html delete mode 100644 unused_control_flow_label.html delete mode 100644 unused_declaration.html delete mode 100644 unused_enumerated.html delete mode 100644 unused_import.html delete mode 100644 unused_optional_binding.html delete mode 100644 unused_parameter.html delete mode 100644 unused_setter_value.html delete mode 100644 valid_ibinspectable.html delete mode 100644 vertical_parameter_alignment.html delete mode 100644 vertical_parameter_alignment_on_call.html delete mode 100644 vertical_whitespace.html delete mode 100644 vertical_whitespace_between_cases.html delete mode 100644 vertical_whitespace_closing_braces.html delete mode 100644 vertical_whitespace_opening_braces.html delete mode 100644 void_function_in_ternary.html delete mode 100644 void_return.html delete mode 100644 weak_delegate.html delete mode 100644 xct_specific_matcher.html delete mode 100644 xctfail_message.html delete mode 100644 yoda_condition.html diff --git a/Classes.html b/Classes.html deleted file mode 100644 index 4547a900d..000000000 --- a/Classes.html +++ /dev/null @@ -1,672 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Classes

-

The following classes are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Classes/CodeIndentingRewriter.html b/Classes/CodeIndentingRewriter.html deleted file mode 100644 index 2dbf18cba..000000000 --- a/Classes/CodeIndentingRewriter.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - CodeIndentingRewriter Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CodeIndentingRewriter

-
-
- -
public class CodeIndentingRewriter : SyntaxRewriter
- -
-
-

Rewriter that indents or unindents a syntax piece including comments and nested -AST nodes (e.g. a code block in a code block).

- - -
-
- -
-
-
-
    -
  • -
    - - - - IndentationStyle - -
    -
    -
    -
    -
    -
    -

    Style defining whether the rewriter shall indent or unindent and whether it shall use tabs or spaces and -how many of them.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum IndentationStyle
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(style:) - -
    -
    -
    -
    -
    -
    -

    Initializer accepting an indentation style.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(style: IndentationStyle = .indentSpaces(4))
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - style - - -
    -

    Indentation style. The default is indentation by 4 spaces.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override public func visit(_ token: TokenSyntax) -> TokenSyntax
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/CodeIndentingRewriter/IndentationStyle.html b/Classes/CodeIndentingRewriter/IndentationStyle.html deleted file mode 100644 index dc9f4e277..000000000 --- a/Classes/CodeIndentingRewriter/IndentationStyle.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - IndentationStyle Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

IndentationStyle

-
-
- -
public enum IndentationStyle
- -
-
-

Style defining whether the rewriter shall indent or unindent and whether it shall use tabs or spaces and -how many of them.

- - -
-
- -
-
-
-
    -
  • -
    - - - - indentSpaces(_:) - -
    -
    -
    -
    -
    -
    -

    Indentation with a number of spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case indentSpaces(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - unindentSpaces(_:) - -
    -
    -
    -
    -
    -
    -

    Reverse indentation of a number of spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case unindentSpaces(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - indentTabs(_:) - -
    -
    -
    -
    -
    -
    -

    Indentation with a number of tabs

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case indentTabs(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - unindentTabs(_:) - -
    -
    -
    -
    -
    -
    -

    Reverse indentation of a number of tabs.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case unindentTabs(Int)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/CustomRuleTimer.html b/Classes/CustomRuleTimer.html deleted file mode 100644 index c733a916b..000000000 --- a/Classes/CustomRuleTimer.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - CustomRuleTimer Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CustomRuleTimer

-
-
- -
public final class CustomRuleTimer
- -
-
-

Utility to measure the time spent in each custom rule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - shared - -
    -
    -
    -
    -
    -
    -

    Singleton.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let shared: CustomRuleTimer
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - activate() - -
    -
    -
    -
    -
    -
    -

    Tell the timer it should record time spent in rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func activate()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - dump() - -
    -
    -
    -
    -
    -
    -

    Return all time spent for each custom rule, keyed by rule ID.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func dump() -> [String : TimeInterval]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/DeclaredIdentifiersTrackingVisitor.html b/Classes/DeclaredIdentifiersTrackingVisitor.html deleted file mode 100644 index 98092bb02..000000000 --- a/Classes/DeclaredIdentifiersTrackingVisitor.html +++ /dev/null @@ -1,777 +0,0 @@ - - - - DeclaredIdentifiersTrackingVisitor Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

DeclaredIdentifiersTrackingVisitor

-
-
- -
open class DeclaredIdentifiersTrackingVisitor<Configuration: RuleConfiguration>:
-        ViolationsSyntaxVisitor<Configuration>
- -
-
-

A specialized ViolationsSyntaxVisitor that tracks declared identifiers per scope while traversing the AST.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Scope - -
    -
    -
    -
    -
    -
    -

    A type that remembers the declared identifiers (in order) up to the current position in the code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias Scope = Stack<[IdentifierDeclaration]>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - scope - -
    -
    -
    -
    -
    -
    -

    The hierarchical stack of identifiers declared up to the current position in the code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var scope: Scope
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializer.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -public init(configuration: Configuration, file: SwiftLintFile, scope: Scope = Scope())
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - configuration - - -
    -

    Configuration of a rule.

    -
    -
    - - file - - -
    -

    File from which the syntax tree stems from.

    -
    -
    - - scope - - -
    -

    A (potentially already pre-filled) scope to collect identifiers into.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Indicate whether a given identifier is in scope.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hasSeenDeclaration(for identifier: String) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    An identifier.

    -
    -
    -
    -
    -

    Return Value

    -

    true if the identifier was declared previously.

    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: CodeBlockItemListSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_: CodeBlockItemListSyntax)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_ node: VariableDeclSyntax)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_ node: GuardStmtSyntax)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Type declaration boundaries -

-
-
-
    -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: MemberBlockSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_ node: MemberBlockSyntax)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/LinterCache.html b/Classes/LinterCache.html deleted file mode 100644 index 34f566796..000000000 --- a/Classes/LinterCache.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - LinterCache Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

LinterCache

-
-
- -
public final class LinterCache
- -
-
-

A persisted cache for storing and retrieving linter results.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(configuration: Configuration, fileManager: some LintableFileManager = FileManager.default)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    The SwiftLint configuration for which this cache will be used.

    -
    -
    - - fileManager - - -
    -

    The file manager to use to read lintable file information.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - save() - -
    -
    -
    -
    -
    -
    -

    Persists the cache to disk.

    -
    -

    Throws

    - Throws if the linter cache doesn’t have a location value, if the cache couldn’t be serialized, or if - the contents couldn’t be written to disk. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func save() throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/RuleRegistry.html b/Classes/RuleRegistry.html deleted file mode 100644 index d9eb36b15..000000000 --- a/Classes/RuleRegistry.html +++ /dev/null @@ -1,571 +0,0 @@ - - - - RuleRegistry Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleRegistry

-
-
- -
public final class RuleRegistry : @unchecked Sendable
- -
-
-

Container to register and look up SwiftLint rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - shared - -
    -
    -
    -
    -
    -
    -

    Shared rule registry instance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let shared: RuleRegistry
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - list - -
    -
    -
    -
    -
    -
    -

    Rule list associated with this registry. Lazily created, and -immutable once looked up.

    -
    -

    Note

    - Adding registering more rules after this was first - accessed will not work. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) lazy var list: RuleList { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - register(rules:) - -
    -
    -
    -
    -
    -
    -

    Register rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func register(rules: [any Rule.Type])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to register.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - rule(forID:) - -
    -
    -
    -
    -
    -
    -

    Look up a rule for a given ID.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func rule(forID id: String) -> (any Rule.Type)?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - id - - -
    -

    The ID for the rule to look up.

    -
    -
    -
    -
    -

    Return Value

    -

    The rule matching the specified ID, if one was found.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/RuleStorage.html b/Classes/RuleStorage.html deleted file mode 100644 index fe56f951c..000000000 --- a/Classes/RuleStorage.html +++ /dev/null @@ -1,461 +0,0 @@ - - - - RuleStorage Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleStorage

-
-
- -
public class RuleStorage : CustomStringConvertible
- -
-
-

A storage mechanism for aggregating the results of CollectingRules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Creates a RuleStorage with no initial stored data.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/SwiftLintFile.html b/Classes/SwiftLintFile.html deleted file mode 100644 index b8cc58bde..000000000 --- a/Classes/SwiftLintFile.html +++ /dev/null @@ -1,912 +0,0 @@ - - - - SwiftLintFile Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintFile

-
-
- -
public final class SwiftLintFile
-
extension SwiftLintFile: Equatable, Hashable
- -
-
-

A unit of Swift source code, either on disk or in memory.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The underlying SourceKitten file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: File
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - id - -
    -
    -
    -
    -
    -
    -

    The associated unique identifier for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let id: UUID
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isTestFile - -
    -
    -
    -
    -
    -
    -

    Whether or not this is a file generated for testing purposes.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var isTestFile: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isVirtual - -
    -
    -
    -
    -
    -
    -

    A file is virtual if it is not backed by a filesystem path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var isVirtual: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(file:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile with a SourceKitten File.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: File)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    A file from SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(path:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. -Fails if the file does not exist.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init?(path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this -one does not read its contents immediately, but rather traps at runtime when attempting to access its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(pathDeferringReading path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(contents:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(contents: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - contents - - -
    -

    The contents of the file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - path - -
    -
    -
    -
    -
    -
    -

    The path on disk for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var path: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - contents - -
    -
    -
    -
    -
    -
    -

    The file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var contents: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - stringView - -
    -
    -
    -
    -
    -
    -

    A string view into the contents of this file optimized for string manipulation operations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringView: StringView { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lines - -
    -
    -
    -
    -
    -
    -

    The parsed lines for this file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var lines: [Line] { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable Conformance -

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: SwiftLintFile, rhs: SwiftLintFile) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/ViolationsSyntaxRewriter.html b/Classes/ViolationsSyntaxRewriter.html deleted file mode 100644 index 1eedd8cf7..000000000 --- a/Classes/ViolationsSyntaxRewriter.html +++ /dev/null @@ -1,643 +0,0 @@ - - - - ViolationsSyntaxRewriter Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationsSyntaxRewriter

-
-
- -
open class ViolationsSyntaxRewriter<Configuration> : SyntaxRewriter where Configuration : RuleConfiguration
- -
-
-

A SwiftSyntax SyntaxRewriter that produces absolute positions where corrections were applied.

- - -
-
- -
-
-
-
    -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    A rule’s configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let configuration: Configuration
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file from which the traversed syntax tree stems from.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - locationConverter - -
    -
    -
    -
    -
    -
    -

    A converter of positions in the traversed source file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public lazy var locationConverter: SourceLocationConverter { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - disabledRegions - -
    -
    -
    -
    -
    -
    -

    The regions in the traversed file that are disabled by a command.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public lazy var disabledRegions: [SourceRange] { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - correctionPositions - -
    -
    -
    -
    -
    -
    -

    Positions in a source file where corrections were applied.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var correctionPositions: [AbsolutePosition]
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializer for a ViolationsSyntaxRewriter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -public init(configuration: Configuration, file: SwiftLintFile)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    Configuration of a rule.

    -
    -
    - - file - - -
    -

    File from which the syntax tree stems from.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitAny(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitAny(_ node: Syntax) -> Syntax?
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Classes/ViolationsSyntaxVisitor.html b/Classes/ViolationsSyntaxVisitor.html deleted file mode 100644 index 78b8cf81b..000000000 --- a/Classes/ViolationsSyntaxVisitor.html +++ /dev/null @@ -1,904 +0,0 @@ - - - - ViolationsSyntaxVisitor Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationsSyntaxVisitor

-
-
- -
open class ViolationsSyntaxVisitor<Configuration> : SyntaxVisitor where Configuration : RuleConfiguration
- -
-
-

A SwiftSyntax SyntaxVisitor that produces absolute positions where violations should be reported.

- - -
-
- -
-
-
-
    -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    A rule’s configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let configuration: Configuration
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file from which the traversed syntax tree stems from.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - locationConverter - -
    -
    -
    -
    -
    -
    -

    A source location converter associated with the syntax tree being traversed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public lazy var locationConverter: SourceLocationConverter { get set }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializer for a ViolationsSyntaxVisitor.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -public init(configuration: Configuration, file: SwiftLintFile)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    Configuration of a rule.

    -
    -
    - - file - - -
    -

    File from which the syntax tree stems from.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - violations - -
    -
    -
    -
    -
    -
    -

    Positions in a source file where violations should be reported.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var violations: [ReasonedRuleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - skippableDeclarations - -
    -
    -
    -
    -
    -
    -

    List of declaration types that shall be skipped while traversing the AST.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    open var skippableDeclarations: [any DeclSyntaxProtocol.Type] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ActorDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: EnumDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ExtensionDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: FunctionDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: InitializerDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ProtocolDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: StructDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: SubscriptDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: VariableDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums.html b/Enums.html deleted file mode 100644 index bd506b551..000000000 --- a/Enums.html +++ /dev/null @@ -1,707 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Enums/AccessControlLevel.html b/Enums/AccessControlLevel.html deleted file mode 100644 index 0bcce64e8..000000000 --- a/Enums/AccessControlLevel.html +++ /dev/null @@ -1,725 +0,0 @@ - - - - AccessControlLevel Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

AccessControlLevel

-
-
- -
public enum AccessControlLevel : String, CustomStringConvertible
-
extension AccessControlLevel: Comparable
- -
-
-

The accessibility of a Swift source declaration.

- - - -
-
- -
-
-
-
    -
  • -
    - - - - private - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s immediate lexical scope.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `private` = "source.lang.swift.accessibility.private"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - fileprivate - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `fileprivate` = "source.lang.swift.accessibility.fileprivate"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - internal - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `internal` = "source.lang.swift.accessibility.internal"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - package - -
    -
    -
    -
    -
    -
    -

    Accessible by all the modules defined in the same Swift package.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case package = "source.lang.swift.accessibility.package"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - public - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `public` = "source.lang.swift.accessibility.public"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - open - -
    -
    -
    -
    -
    -
    -

    Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case open = "source.lang.swift.accessibility.open"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(description:) - -
    -
    -
    -
    -
    -
    -

    Initializes an access control level by its Swift source keyword value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init?(description value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The value used to describe this level in Swift source code.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isPrivate - -
    -
    -
    -
    -
    -
    -

    Returns true if is private or fileprivate

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var isPrivate: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: AccessControlLevel, rhs: AccessControlLevel) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/ExecutableInfo.html b/Enums/ExecutableInfo.html deleted file mode 100644 index fc81837a5..000000000 --- a/Enums/ExecutableInfo.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - ExecutableInfo Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ExecutableInfo

-
-
- -
public enum ExecutableInfo
- -
-
-

Information about this executable.

- - -
-
- -
-
-
-
    -
  • -
    - - - - buildID - -
    -
    -
    -
    -
    -
    -

    A stable identifier for this executable. Uses the Mach-O header UUID on macOS. Nil on Linux.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let buildID: String?
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/IdentifierDeclaration.html b/Enums/IdentifierDeclaration.html deleted file mode 100644 index f8ac5902a..000000000 --- a/Enums/IdentifierDeclaration.html +++ /dev/null @@ -1,614 +0,0 @@ - - - - IdentifierDeclaration Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

IdentifierDeclaration

-
-
- -
public enum IdentifierDeclaration : Hashable
- -
-
-

An identifier declaration.

- - -
-
- -
-
-
-
    -
  • -
    - - - - parameter(name:) - -
    -
    -
    -
    -
    -
    -

    Parameter declaration with a name token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case parameter(name: TokenSyntax)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - localVariable(name:) - -
    -
    -
    -
    -
    -
    -

    Local variable declaration with a name token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case localVariable(name: TokenSyntax)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A variable that is implicitly added by the compiler (e.g. error in catch clauses).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case implicitVariable(name: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - wildcard - -
    -
    -
    -
    -
    -
    -

    A variable hidden from scope because its name is a wildcard _.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case wildcard
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lookupBoundary - -
    -
    -
    -
    -
    -
    -

    Special case that marks a type boundary at which name lookup stops.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case lookupBoundary
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Check whether self declares a variable given by name.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func declares(id: String, disregardBackticks: Bool = true) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - id - - -
    -

    Name of the variable.

    -
    -
    - - disregardBackticks - - -
    -

    If true, normalize all names before comparison by removing all backticks. This is the - default since backticks only disambiguate, but don’t contribute to name resolution.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/Issue.html b/Enums/Issue.html deleted file mode 100644 index 4884a4740..000000000 --- a/Enums/Issue.html +++ /dev/null @@ -1,1183 +0,0 @@ - - - - Issue Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Issue

-
-
- -
public enum Issue : LocalizedError, Equatable
- -
-
-

All possible SwiftLint issues which are printed as warnings by default.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The configuration didn’t match internal expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalidConfiguration(ruleID: String, message: String? = nil)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Issued when an option is deprecated. Suggests an alternative optionally.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case deprecatedConfigurationOption(ruleID: String, key: String, alternative: String? = nil)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Used in configuration parsing when no changes have been applied. Use only internally!

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case nothingApplied(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Rule is listed multiple times in the configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case listedMultipleTime(ruleID: String, times: Int)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    An identifier old has been renamed to new.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case renamedIdentifier(old: String, new: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Some configuration keys are invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalidConfigurationKeys(ruleID: String, keys: Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The configuration is inconsistent, that is options are mutually exclusive or one drives other values -irrelevant.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case inconsistentConfiguration(ruleID: String, message: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalidRuleIDs(_:) - -
    -
    -
    -
    -
    -
    -

    Used rule IDs are invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalidRuleIDs(Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is not present in only_rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleNotPresentInOnlyRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is disabled.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleDisabledInDisabledRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is disabled in the parent configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleDisabledInParentConfiguration(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is not enabled in opt_in_rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleNotEnabledInOptInRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is not enabled in parent only_rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleNotEnabledInParentOnlyRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - genericWarning(_:) - -
    -
    -
    -
    -
    -
    -

    A generic warning specified by a string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case genericWarning(String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - genericError(_:) - -
    -
    -
    -
    -
    -
    -

    A generic error specified by a string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case genericError(String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A deprecation warning for a rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleDeprecated(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The initial configuration file was not found.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case initialFileNotFound(path: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - fileNotFound(path:) - -
    -
    -
    -
    -
    -
    -

    A file at specified path was not found.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fileNotFound(path: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The file at path is not readable or cannot be opened.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fileNotReadable(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The file at path is not writable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fileNotWritable(path: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The file at path cannot be indexed by a specific rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case indexingError(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    No arguments were provided to compile a file at path within a specific rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case missingCompilerArguments(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Cursor information cannot be extracted from a specific location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case missingCursorInfo(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yamlParsing(_:) - -
    -
    -
    -
    -
    -
    -

    An error that occurred when parsing YAML.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case yamlParsing(String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The baseline file at path is not readable or cannot be opened.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case baselineNotReadable(path: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - print() - -
    -
    -
    -
    -
    -
    -

    Print the issue to the console.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func print()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/OptionType.html b/Enums/OptionType.html deleted file mode 100644 index dc99da2fd..000000000 --- a/Enums/OptionType.html +++ /dev/null @@ -1,920 +0,0 @@ - - - - OptionType Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

OptionType

-
-
- -
public enum OptionType : Equatable
-
extension OptionType: Documentable
- -
-
-

Type of an option.

- - -
-
- -
-
-
-
    -
  • -
    - - - - empty - -
    -
    -
    -
    -
    -
    -

    An irrelevant option. It will be ignored in documentation serialization.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case empty
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - flag(_:) - -
    -
    -
    -
    -
    -
    -

    A boolean flag.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case flag(Bool)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - string(_:) - -
    -
    -
    -
    -
    -
    -

    A string option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case string(String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - symbol(_:) - -
    -
    -
    -
    -
    -
    -

    Like a string option but without quotes in the serialized output.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case symbol(String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - integer(_:) - -
    -
    -
    -
    -
    -
    -

    An integer option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case integer(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - float(_:) - -
    -
    -
    -
    -
    -
    -

    A floating point number option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case float(Double)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity(_:) - -
    -
    -
    -
    -
    -
    -

    Special option for a ViolationSeverity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case severity(ViolationSeverity)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - list(_:) - -
    -
    -
    -
    -
    -
    -

    A list of options.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case list([`Self`])
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - nested(_:) - -
    -
    -
    -
    -
    -
    -

    An option which is another set of configuration options to be nested in the serialized output.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case nested(RuleConfigurationDescription)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func markdown() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func oneLiner() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func yaml() -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Result builder -

-
-
-
    -
  • -
    - - - - =>(_:_:) - -
    -
    -
    -
    -
    -
    -

    Operator enabling an easy way to create a configuration option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func => (key: String, value: OptionType) -> RuleConfigurationOption
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - key - - -
    -

    Name of the option.

    -
    -
    - - value - - -
    -

    Value of the option.

    -
    -
    -
    -
    -

    Return Value

    -

    A configuration option built up by the given data.

    -
    - -
    -
    -
  • -
  • -
    - - - - nest(_:) - -
    -
    -
    -
    -
    -
    -

    Create an option defined by nested configuration description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func nest(@RuleConfigurationDescriptionBuilder _ description: () -> RuleConfigurationDescription) -> OptionType
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - description - - -
    -

    A configuration description buildable by applying the result builder syntax.

    -
    -
    -
    -
    -

    Return Value

    -

    A configuration option with a value being another configuration description.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/RuleIdentifier.html b/Enums/RuleIdentifier.html deleted file mode 100644 index bf17c2cd9..000000000 --- a/Enums/RuleIdentifier.html +++ /dev/null @@ -1,662 +0,0 @@ - - - - RuleIdentifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleIdentifier

-
-
- -
public enum RuleIdentifier : Hashable, ExpressibleByStringLiteral, Comparable
- -
-
-

An identifier representing a SwiftLint rule, or all rules.

- - -
-
- -
-
-
-
- - -
- -

Values -

-
-
-
    -
  • -
    - - - - all - -
    -
    -
    -
    -
    -
    -

    Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in -disabling all SwiftLint rules in a given file by adding a // swiftlint:disable all comment at the top of the -file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case all
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - single(identifier:) - -
    -
    -
    -
    -
    -
    -

    Represents a single SwiftLint rule with the specified identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case single(identifier: String)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Properties -

-
-
-
    -
  • -
    - - - - stringRepresentation - -
    -
    -
    -
    -
    -
    -

    The spelling of the string for this identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringRepresentation: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers -

-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleIdentifier by its string representation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The string representation.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

ExpressibleByStringLiteral Conformance -

-
-
- -
-
-
- - -
- -

Comparable Conformance -

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/RuleKind.html b/Enums/RuleKind.html deleted file mode 100644 index fbac4866b..000000000 --- a/Enums/RuleKind.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - RuleKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleKind

-
-
- -
public enum RuleKind : String, Codable, Sendable
- -
-
-

All the possible rule kinds (categories).

- - -
-
- -
-
-
-
    -
  • -
    - - - - lint - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate Swift source conventions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case lint
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - idiomatic - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate common practices in the Swift community.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case idiomatic
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - style - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate stylistic choices.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case style
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - metrics - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate magnitudes or measurements of Swift source.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case metrics
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - performance - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate that code patterns with poor performance are avoided.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case performance
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/RuleListError.html b/Enums/RuleListError.html deleted file mode 100644 index 2eea9bf3d..000000000 --- a/Enums/RuleListError.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - RuleListError Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListError

-
-
- -
public enum RuleListError : Error
- -
-
-

All possible rule list configuration errors.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The rule list contains more than one configuration for the specified rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case duplicatedConfigurations(rule: any Rule.Type)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Enums/SwiftExpressionKind.html b/Enums/SwiftExpressionKind.html deleted file mode 100644 index 99b47e887..000000000 --- a/Enums/SwiftExpressionKind.html +++ /dev/null @@ -1,612 +0,0 @@ - - - - SwiftExpressionKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftExpressionKind

-
-
- -
public enum SwiftExpressionKind : String
- -
-
-

The kind of expression for a contiguous set of Swift source tokens.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Enums/ViolationSeverity.html b/Enums/ViolationSeverity.html deleted file mode 100644 index f4be5ad72..000000000 --- a/Enums/ViolationSeverity.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - ViolationSeverity Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationSeverity

-
-
- -
public enum ViolationSeverity : String, Comparable, Codable, InlinableOptionType
- -
-
-

The magnitude of a StyleViolation.

- - -
-
- -
-
-
-
    -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case warning
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case error
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable -

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Extensions.html b/Extensions.html deleted file mode 100644 index 9d1c7d7d6..000000000 --- a/Extensions.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - Extensions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Extensions

-

The following extensions are available globally.

- -
-
- -
-
-
- -
-
-
- - -
- -

AcceptableByConfigurationElement conformances -

-
-
- -
-
-
- -
-
- - - diff --git a/Extensions/Array.html b/Extensions/Array.html deleted file mode 100644 index 6aa83f39c..000000000 --- a/Extensions/Array.html +++ /dev/null @@ -1,943 +0,0 @@ - - - - Array Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Array

-
-
- -
public extension Array where Element == Example
-
extension Array: AcceptableByConfigurationElement where Element: AcceptableByConfigurationElement
-
public extension Array where Element == SwiftLintSyntaxToken
-
public extension Array where Element == ReasonedRuleViolation
-
public extension Array where Element == any DeclSyntaxProtocol.Type
- -
-
- -
-
- -
-
-
-
- - -
- -

Available where Element == Example -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip wrapping in comment tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipWrappingInCommentTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip wrapping in string tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipWrappingInStringTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip multi-byte offset tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipMultiByteOffsetTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip disable command tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipDisableCommandTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Remove all violation markers from the examples.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func removingViolationMarker() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element: AcceptableByConfigurationElement -

-
-
- -
-
-
- - -
- -

Available where Element == SwiftLintSyntaxToken -

-
-
-
    -
  • -
    - - - - kinds - -
    -
    -
    -
    -
    -
    -

    The kinds for these tokens.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var kinds: [SyntaxKind] { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element == ReasonedRuleViolation -

-
-
-
    -
  • -
    - - - - append(_:) - -
    -
    -
    -
    -
    -
    -

    Add a violation at the specified position using the default description and severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func append(_ position: AbsolutePosition)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - position - - -
    -

    The position for the violation to append.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Add a violation and the correction at the specified position using the default description and severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func append(at position: AbsolutePosition, correction: ReasonedRuleViolation.ViolationCorrection? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - position - - -
    -

    The position for the violation to append.

    -
    -
    - - correction - - -
    -

    An optional correction to be applied when running with --fix.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - append(contentsOf:) - -
    -
    -
    -
    -
    -
    -

    Add violations for the specified positions using the default description and severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func append(contentsOf positions: [AbsolutePosition])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - positions - - -
    -

    The positions for the violations to append.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element == anyDeclSyntaxProtocol.Type -

-
-
-
    -
  • -
    - - - - all - -
    -
    -
    -
    -
    -
    -

    All visitable declaration syntax types.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static let all: `Self`
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allExcept(_:) - -
    -
    -
    -
    -
    -
    -

    All declarations except for the specified ones.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func allExcept(_ declarations: Element...) -> Array<Element>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - declarations - - -
    -

    The declarations to exclude from all declarations.

    -
    -
    -
    -
    -

    Return Value

    -

    All declarations except for the specified ones.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Extensions/Bool.html b/Extensions/Bool.html deleted file mode 100644 index c125990b6..000000000 --- a/Extensions/Bool.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - Bool Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/Extensions/Double.html b/Extensions/Double.html deleted file mode 100644 index 8ddbdf723..000000000 --- a/Extensions/Double.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - Double Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/Extensions/Int.html b/Extensions/Int.html deleted file mode 100644 index e492d8680..000000000 --- a/Extensions/Int.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - Int Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/Extensions/Optional.html b/Extensions/Optional.html deleted file mode 100644 index a93f5f591..000000000 --- a/Extensions/Optional.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - Optional Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Optional

-
-
- -
extension Optional: AcceptableByConfigurationElement where Wrapped: AcceptableByConfigurationElement
- -
-
- -
-
- -
-
-
-
- - -
- -

Available where Wrapped: AcceptableByConfigurationElement -

-
-
- -
-
-
- -
-
- - - diff --git a/Extensions/Set.html b/Extensions/Set.html deleted file mode 100644 index 71e88fe97..000000000 --- a/Extensions/Set.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - Set Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Set

-
-
- -
extension Set: AcceptableByConfigurationElement where Element: AcceptableByConfigurationElement & Comparable
- -
-
- -
-
- -
-
-
-
- - -
- -

Available where Element: AcceptableByConfigurationElement & Comparable -

-
-
- -
-
-
- -
-
- - - diff --git a/Extensions/String.html b/Extensions/String.html deleted file mode 100644 index 40f2dba61..000000000 --- a/Extensions/String.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - String Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/Functions.html b/Functions.html deleted file mode 100644 index 758d1855c..000000000 --- a/Functions.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Functions

-

The following functions are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any -known reporters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func reporterFrom(identifier: String?) -> any Reporter.Type
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    The identifier corresponding to the reporter.

    -
    -
    -
    -
    -

    Return Value

    -

    The reporter type.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Global Variables.html b/Global Variables.html deleted file mode 100644 index 6245a4f7b..000000000 --- a/Global Variables.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - Global Variables Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Global Variables

-

The following global variables are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - reportersList - -
    -
    -
    -
    -
    -
    -

    The reporters list containing all the reporters built into SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reportersList: [any Reporter.Type]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - coreRules - -
    -
    -
    -
    -
    -
    -

    The rule list containing all available rules built into SwiftLintCore.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let coreRules: [any Rule.Type]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Guides.html b/Guides.html deleted file mode 100644 index 42c8e368f..000000000 --- a/Guides.html +++ /dev/null @@ -1,2595 +0,0 @@ - - - - Guides Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Guides

-

The following guides are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Macros.html b/Macros.html deleted file mode 100644 index b5ab5c016..000000000 --- a/Macros.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - Macros Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Macros

-

The following macros are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - AutoConfigParser() - -
    -
    -
    -
    -
    -
    -

    Macro to be attached to rule configurations. It generates the configuration parsing logic -automatically based on the defined @ConfigurationElements.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @attached(member, names: named(apply)
    -) public macro AutoConfigParser() = #externalMacro(
    -    module: "SwiftLintCoreMacros",
    -    type: "AutoConfigParser"
    -)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Macro that lets an enum with a String raw type automatically conform to AcceptableByConfigurationElement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @attached(extension, conformances: AcceptableByConfigurationElement, names: named(init(fromAny:context:)
    -), named(asOption)) public macro AcceptableByConfigurationElement() = #externalMacro(
    -    module: "SwiftLintCoreMacros",
    -    type: "AcceptableByConfigurationElement"
    -)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Macro that adds a conformance to the SwiftSyntaxRule protocol and a default makeVisitor(file:) implementation -that creates a visitor defined in the rule struct.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @attached(extension, conformances: SwiftSyntaxRule, SwiftSyntaxCorrectableRule, names: named(makeVisitor(file:)
    -), named(preprocess(file:)), named(makeRewriter(file:))) public macro SwiftSyntaxRule(foldExpressions: Bool = false, explicitRewriter: Bool = false) = #externalMacro(
    -    module: "SwiftLintCoreMacros",
    -    type: "SwiftSyntaxRule"
    -)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - foldExpressions - - -
    -

    Setting it to true adds an implementation of preprocess(file:) which folds expressions - before they are passed to the visitor.

    -
    -
    - - explicitRewriter - - -
    -

    Set it to true to add a makeRewriter(file:) implementation which creates a rewriter - defined in the rule struct. In this case, the rule automatically conforms to - SwiftSyntaxCorrectableRule.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols.html b/Protocols.html deleted file mode 100644 index 3d4a72677..000000000 --- a/Protocols.html +++ /dev/null @@ -1,1003 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Protocols

-

The following protocols are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - Documentable - -
    -
    -
    -
    -
    -
    -

    A type that can be converted into a human-readable representation.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Documentable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Property wrapper -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Type of an object that can be used as a configuration element.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AcceptableByConfigurationElement
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - InlinableOptionType - -
    -
    -
    -
    -
    -
    -

    An option type that can appear inlined into its using configuration.

    - -

    The ConfigurationElement must opt into this behavior. In this case, the option does not have a key. This is -almost exclusively useful for common RuleConfigurations that are used in many other rules as child -configurations.

    -
    -

    Warning

    -

    A type conforming to this protocol is assumed to throw an issue in its apply method only when it’s -absolutely clear that there is an error in the YAML configuration passed in. Since it may be used in a nested -context and doesn’t know about the outer configuration, it’s not always clear if a certain key-value is really -unacceptable.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol InlinableOptionType : AcceptableByConfigurationElement
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - VersionComparable - -
    -
    -
    -
    -
    -
    -

    A comparable major.minor.patch version number.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol VersionComparable : Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ASTRule - -
    -
    -
    -
    -
    -
    -

    A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol ASTRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Interface providing access to a cache description.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CacheDescriptionProvider
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AnyCollectingRule - -
    -
    -
    -
    -
    -
    -

    Type-erased protocol used to check whether a rule is collectable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AnyCollectingRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CollectingRule - -
    -
    -
    -
    -
    -
    -

    A rule that requires knowledge of all other files being linted.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CollectingRule : AnyCollectingRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Reporter - -
    -
    -
    -
    -
    -
    -

    An interface for reporting violations as strings.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Reporter : CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Rule - -
    -
    -
    -
    -
    -
    -

    An executable value that can identify issues (violations) in Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - OptInRule - -
    -
    -
    -
    -
    -
    -

    A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol OptInRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CorrectableRule - -
    -
    -
    -
    -
    -
    -

    A rule that can correct violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CorrectableRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SubstitutionCorrectableRule : CorrectableRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SourceKitFreeRule - -
    -
    -
    -
    -
    -
    -

    A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SourceKitFreeRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AnalyzerRule - -
    -
    -
    -
    -
    -
    -

    A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AnalyzerRule : OptInRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleConfiguration - -
    -
    -
    -
    -
    -
    -

    A configuration value for a rule to allow users to modify its behavior.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol RuleConfiguration : Equatable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A configuration for a rule that allows to configure at least the severity.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SeverityBasedRuleConfiguration : RuleConfiguration
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A SwiftLint CorrectableRule that performs its corrections using a SwiftSyntax SyntaxRewriter.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SwiftSyntaxCorrectableRule : CorrectableRule, SwiftSyntaxRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftSyntaxRule - -
    -
    -
    -
    -
    -
    -

    A SwiftLint Rule backed by SwiftSyntax that does not use SourceKit requests.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SwiftSyntaxRule : SourceKitFreeRule
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/ASTRule.html b/Protocols/ASTRule.html deleted file mode 100644 index 81f65e925..000000000 --- a/Protocols/ASTRule.html +++ /dev/null @@ -1,666 +0,0 @@ - - - - ASTRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ASTRule

-
-
- -
public protocol ASTRule : Rule
- -
-
-

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

- - -
-
- -
-
-
-
    -
  • -
    - - - - KindType - -
    -
    -
    -
    -
    -
    -

    The kind of token being recursed over.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype KindType : RawRepresentable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, kind: KindType, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - kind - - -
    -

    The kind of token being recursed over.

    -
    -
    - - dictionary - - -
    -

    The dictionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - kind(from:) - -
    -
    -
    -
    -
    -
    -

    Get the kind from the specified dictionary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func kind(from dictionary: SourceKittenDictionary) -> KindType?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - dictionary - - -
    -

    The SourceKittenDictionary representing the source structure from which to extract the - kind.

    -
    -
    -
    -
    -

    Return Value

    -

    The kind from the specified dictionary, if one was found.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:dictionary:) - - - Extension method - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - dictionary - - -
    -

    The dictionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/AcceptableByConfigurationElement.html b/Protocols/AcceptableByConfigurationElement.html deleted file mode 100644 index c4bfc0ff2..000000000 --- a/Protocols/AcceptableByConfigurationElement.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - AcceptableByConfigurationElement Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

AcceptableByConfigurationElement

-
-
- -
public protocol AcceptableByConfigurationElement
- -
-
-

Type of an object that can be used as a configuration element.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Initializer taking a value from a configuration to create an element of Self.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(fromAny value: Any, context ruleID: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    Value from a configuration.

    -
    -
    - - ruleID - - -
    -

    The rule’s identifier in which context the configuration parsing runs.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - asOption() - -
    -
    -
    -
    -
    -
    -

    Make the object an option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func asOption() -> OptionType
    - -
    -
    -
    -

    Return Value

    -

    Option representing the object.

    -
    - -
    -
    -
  • -
  • -
    - - - - asDescription(with:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Make the object a description.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func asDescription(with key: String) -> RuleConfigurationDescription
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - key - - -
    -

    Name of the option to be put into the description.

    -
    -
    -
    -
    -

    Return Value

    -

    Configuration description of this object.

    -
    - -
    -
    -
  • -
  • -
    - - - - apply(_:ruleID:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Update the object.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func apply(_ value: Any, ruleID: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    New underlying data for the object.

    -
    -
    - - ruleID - - -
    -

    The rule’s identifier in which context the configuration parsing runs.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/AnalyzerRule.html b/Protocols/AnalyzerRule.html deleted file mode 100644 index 9bfddfbbe..000000000 --- a/Protocols/AnalyzerRule.html +++ /dev/null @@ -1,435 +0,0 @@ - - - - AnalyzerRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

AnalyzerRule

-
-
- -
public protocol AnalyzerRule : OptInRule
- -
-
-

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Protocols/CacheDescriptionProvider.html b/Protocols/CacheDescriptionProvider.html deleted file mode 100644 index 9440f4d2a..000000000 --- a/Protocols/CacheDescriptionProvider.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - CacheDescriptionProvider Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CacheDescriptionProvider

-
-
- -
public protocol CacheDescriptionProvider
- -
-
-

Interface providing access to a cache description.

- - -
-
- -
-
-
-
    -
  • -
    - - - - cacheDescription - -
    -
    -
    -
    -
    -
    -

    The cache description which will be used to determine if a previous -cached value is still valid given the new cache value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var cacheDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/CollectingRule.html b/Protocols/CollectingRule.html deleted file mode 100644 index 4ddd6e2d5..000000000 --- a/Protocols/CollectingRule.html +++ /dev/null @@ -1,838 +0,0 @@ - - - - CollectingRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectingRule

-
-
- -
public protocol CollectingRule : AnyCollectingRule
- -
-
-

A rule that requires knowledge of all other files being linted.

- - -
-
- -
-
-
-
    -
  • -
    - - - - FileInfo - -
    -
    -
    -
    -
    -
    -

    The kind of information to collect for each file being linted for this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype FileInfo
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, compilerArguments: [String]) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:) - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:collectedInfo:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile,
    -              collectedInfo: [SwiftLintFile: FileInfo],
    -              compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, collectedInfo: [SwiftLintFile : FileInfo]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:into:compilerArguments:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, into storage: RuleStorage, compilerArguments: [String])
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:using:compilerArguments:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file _: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:compilerArguments:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file _: SwiftLintFile, compilerArguments _: [String]) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/CorrectableRule.html b/Protocols/CorrectableRule.html deleted file mode 100644 index b02a793e7..000000000 --- a/Protocols/CorrectableRule.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - CorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CorrectableRule

-
-
- -
public protocol CorrectableRule : Rule
- -
-
-

A rule that can correct violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - correct(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/Documentable.html b/Protocols/Documentable.html deleted file mode 100644 index f7442c656..000000000 --- a/Protocols/Documentable.html +++ /dev/null @@ -1,534 +0,0 @@ - - - - Documentable Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Documentable

-
-
- -
public protocol Documentable
- -
-
-

A type that can be converted into a human-readable representation.

- - -
-
- -
-
-
-
    -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    -

    Convert an object to Markdown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func markdown() -> String
    - -
    -
    -
    -

    Return Value

    -

    A Markdown string describing the object.

    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    -

    Convert an object to a single line string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func oneLiner() -> String
    - -
    -
    -
    -

    Return Value

    -

    A “one liner” describing the object.

    -
    - -
    -
    -
  • -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    -

    Indicate if the item has some content that is useful to document.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    -

    Convert an object to YAML as used in .swiftlint.yml.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func yaml() -> String
    - -
    -
    -
    -

    Return Value

    -

    A YAML snippet that can be used in configuration files.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/Reporter.html b/Protocols/Reporter.html deleted file mode 100644 index 5d3f42ce4..000000000 --- a/Protocols/Reporter.html +++ /dev/null @@ -1,576 +0,0 @@ - - - - Reporter Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Reporter

-
-
- -
public protocol Reporter : CustomStringConvertible
- -
-
-

An interface for reporting violations as strings.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The unique identifier for this reporter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var identifier: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    -

    Whether or not this reporter can output incrementally as violations are found or if all violations must be -collected before generating the report.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var isRealtime: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A more detailed description of the reporter’s output.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    For CustomStringConvertible conformance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    -

    Return a string with the report for the specified violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations to report.

    -
    -
    -
    -
    -

    Return Value

    -

    The report.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/Rule.html b/Protocols/Rule.html deleted file mode 100644 index 3154c86c3..000000000 --- a/Protocols/Rule.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - - Rule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Rule

-
-
- -
public protocol Rule
- -
-
-

An executable value that can identify issues (violations) in Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ConfigurationType - -
    -
    -
    -
    -
    -
    -

    The type of the configuration used to configure this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype ConfigurationType : RuleConfiguration
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A verbose description of many of this rule’s properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var description: RuleDescription { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    This rule’s configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var configuration: ConfigurationType { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - shouldLintEmptyFiles - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Whether this rule should be used on empty files. Defaults to false.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var shouldLintEmptyFiles: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    A default initializer for rules. All rules need to be trivially initializable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(configuration:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Creates a rule by applying its configuration.

    -
    -

    Throws

    -

    Throws if the configuration didn’t match the expected format.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - createConfigurationDescription(exclusiveOptions:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Create a description of how this rule has been configured to run.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func createConfigurationDescription(exclusiveOptions: Set<String>) -> RuleConfigurationDescription
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Whether or not the specified rule is equivalent to the current rule.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ rule: any Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule value to compare against.

    -
    -
    -
    -
    -

    Return Value

    -

    Whether or not the specified rule is equivalent to the current rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:into:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, into storage: RuleStorage, compilerArguments: [String])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - canBeDisabled(violation:by:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Checks if a style violation can be disabled by a command specifying a rule ID. Only the rule can claim that for -sure since it knows all the possible identifiers.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func canBeDisabled(violation: StyleViolation, by ruleID: RuleIdentifier) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - violation - - -
    -

    A style violation.

    -
    -
    - - ruleID - - -
    -

    The name of a rule as used in a disable command.

    -
    -
    -
    -
    -

    Return Value

    -

    A boolean value indicating whether the violation can be disabled by the given ID.

    -
    - -
    -
    -
  • -
  • -
    - - - - isEnabled(in:for:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Checks if a the rule is enabled in a given region. A specific rule ID can be provided in case a rule supports -more than one identifier.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEnabled(in region: Region, for ruleID: String) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - region - - -
    -

    The region to check.

    -
    -
    - - ruleID - - -
    -

    Rule identifier deviating from the default rule’s name.

    -
    -
    -
    -
    -

    Return Value

    -

    A boolean value indicating whether the rule is enabled in the given region.

    -
    - -
    -
    -
  • -
  • -
    - - - - cacheDescription - - - Extension method - -
    -
    -
    -
    -
    -
    -

    The cache description which will be used to determine if a previous -cached value is still valid given the new cache value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var cacheDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - identifier - - - Extension method - -
    -
    -
    -
    -
    -
    -

    The rule’s unique identifier which is the same as Rule.description.identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var identifier: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/RuleConfiguration.html b/Protocols/RuleConfiguration.html deleted file mode 100644 index 28e82c578..000000000 --- a/Protocols/RuleConfiguration.html +++ /dev/null @@ -1,595 +0,0 @@ - - - - RuleConfiguration Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfiguration

-
-
- -
public protocol RuleConfiguration : Equatable
- -
-
-

A configuration value for a rule to allow users to modify its behavior.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Parent - -
    -
    -
    -
    -
    -
    -

    The type of the rule that’s using this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype Parent : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - parameterDescription - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    A description for this configuration’s parameters. It can be built using the annotated result builder.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @RuleConfigurationDescriptionBuilder
    -var parameterDescription: RuleConfigurationDescription? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    -

    Apply an untyped configuration to the current value.

    -
    -

    Throws

    -

    Throws if the configuration is not in the expected format.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func apply(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate() - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Run a sanity check on the configuration, perform optional postprocessing steps and/or warn about potential -issues.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func validate() throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - supportedKeys - - - Extension method - -
    -
    -
    -
    -
    -
    -

    All keys supported by this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var supportedKeys: Set<String> { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/SeverityBasedRuleConfiguration.html b/Protocols/SeverityBasedRuleConfiguration.html deleted file mode 100644 index 9e2411bc6..000000000 --- a/Protocols/SeverityBasedRuleConfiguration.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - SeverityBasedRuleConfiguration Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SeverityBasedRuleConfiguration

-
-
- -
public protocol SeverityBasedRuleConfiguration : RuleConfiguration
- -
-
-

A configuration for a rule that allows to configure at least the severity.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Protocols/SubstitutionCorrectableRule.html b/Protocols/SubstitutionCorrectableRule.html deleted file mode 100644 index 17343a40b..000000000 --- a/Protocols/SubstitutionCorrectableRule.html +++ /dev/null @@ -1,553 +0,0 @@ - - - - SubstitutionCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SubstitutionCorrectableRule

-
-
- -
public protocol SubstitutionCorrectableRule : CorrectableRule
- -
-
-

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

- - -
-
- -
-
-
-
    -
  • -
    - - - - violationRanges(in:) - -
    -
    -
    -
    -
    -
    -

    Returns the NSString-based NSRanges to be replaced in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile) -> [NSRange]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file in which to find ranges of violations for this rule.

    -
    -
    -
    -
    -

    Return Value

    -

    The NSString-based NSRanges to be replaced in the specified file.

    -
    - -
    -
    -
  • -
  • -
    - - - - substitution(for:in:) - -
    -
    -
    -
    -
    -
    -

    Returns the substitution to apply for the given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func substitution(for violationRange: NSRange, in file: SwiftLintFile) -> (NSRange, String)?
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - violationRange - - -
    -

    The NSString-based NSRange of the violation that should be replaced.

    -
    -
    - - file - - -
    -

    The file in which the violation should be replaced.

    -
    -
    -
    -
    -

    Return Value

    -

    The range of the correction and its contents, if one could be computed.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/SwiftSyntaxCorrectableRule.html b/Protocols/SwiftSyntaxCorrectableRule.html deleted file mode 100644 index fa98202b0..000000000 --- a/Protocols/SwiftSyntaxCorrectableRule.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - SwiftSyntaxCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftSyntaxCorrectableRule

-
-
- -
public protocol SwiftSyntaxCorrectableRule : CorrectableRule, SwiftSyntaxRule
- -
-
-

A SwiftLint CorrectableRule that performs its corrections using a SwiftSyntax SyntaxRewriter.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Protocols/SwiftSyntaxRule.html b/Protocols/SwiftSyntaxRule.html deleted file mode 100644 index df5d10eeb..000000000 --- a/Protocols/SwiftSyntaxRule.html +++ /dev/null @@ -1,623 +0,0 @@ - - - - SwiftSyntaxRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftSyntaxRule

-
-
- -
public protocol SwiftSyntaxRule : SourceKitFreeRule
- -
-
-

A SwiftLint Rule backed by SwiftSyntax that does not use SourceKit requests.

- - -
-
- -
-
-
-
    -
  • -
    - - - - makeVisitor(file:) - -
    -
    -
    -
    -
    -
    -

    Produce a ViolationsSyntaxVisitor for the given file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func makeVisitor(file: SwiftLintFile) -> ViolationsSyntaxVisitor<ConfigurationType>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to produce the visitor.

    -
    -
    -
    -
    -

    Return Value

    -

    A ViolationsSyntaxVisitor for the given file.

    -
    - -
    -
    -
  • -
  • -
    - - - - makeViolation(file:violation:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Produce a violation for the given file and absolute position.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func makeViolation(file: SwiftLintFile, violation: ReasonedRuleViolation) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to produce the violation.

    -
    -
    - - violation - - -
    -

    A violation in the file.

    -
    -
    -
    -
    -

    Return Value

    -

    A violation for the given file and absolute position.

    -
    - -
    -
    -
  • -
  • -
    - - - - preprocess(file:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Gives a chance for the rule to do some pre-processing on the syntax tree. -One typical example is using SwiftOperators to “fold” the tree, resolving operators precedence. -This can also be used to skip validation in a given file. -By default, it just returns the file’s syntaxTree.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func preprocess(file: SwiftLintFile) -> SourceFileSyntax?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file to run pre-processing on.

    -
    -
    -
    -
    -

    Return Value

    -

    The tree that will be used to check for violations. If nil, this rule will return no violations.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Protocols/VersionComparable.html b/Protocols/VersionComparable.html deleted file mode 100644 index 490facae9..000000000 --- a/Protocols/VersionComparable.html +++ /dev/null @@ -1,496 +0,0 @@ - - - - VersionComparable Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

VersionComparable

-
-
- -
public protocol VersionComparable : Comparable
- -
-
-

A comparable major.minor.patch version number.

- - -
-
- -
-
-
-
    -
  • -
    - - - - rawValue - -
    -
    -
    -
    -
    -
    -

    The version string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var rawValue: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Self, rhs: Self) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Self, rhs: Self) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Rules.html b/Rules.html deleted file mode 100644 index f5035fdfd..000000000 --- a/Rules.html +++ /dev/null @@ -1,398 +0,0 @@ - - - - Rules Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Rules

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Structs.html b/Structs.html deleted file mode 100644 index 83e58543e..000000000 --- a/Structs.html +++ /dev/null @@ -1,1393 +0,0 @@ - - - - Structures Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Structures

-

The following structures are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - RuleListDocumentation - -
    -
    -
    -
    -
    -
    -

    User-facing documentation for a SwiftLint RuleList.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleListDocumentation
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Stack - -
    -
    -
    -
    -
    -
    -

    A basic stack type implementing the LIFO principle - only the last inserted element can be accessed and removed.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Stack<Element>
    -
    extension Stack: Sequence
    -
    extension Stack: CustomDebugStringConvertible where Element: CustomDebugStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Baseline - -
    -
    -
    -
    -
    -
    -

    A set of violations that can be used to filter newly detected violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Baseline : Equatable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A rule configuration that allows to disable (off) an option of a rule or specify its severity level in which -case it’s active.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct ChildOptionSeverityConfiguration<Parent> : RuleConfiguration, AcceptableByConfigurationElement where Parent : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Command - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Command : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Configuration - -
    -
    -
    -
    -
    -
    -

    The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Configuration
    -
    extension Configuration: Hashable
    -
    extension Configuration: CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Correction - -
    -
    -
    -
    -
    -
    -

    A value describing a SwiftLint violation that was corrected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Correction : Equatable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Example - -
    -
    -
    -
    -
    -
    -

    Captures code and context information for an example of a triggering or -non-triggering style

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Example : Sendable
    -
    extension Example: Hashable
    -
    extension Example: Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Linter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can be linted for style violations and corrections after being collected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Linter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CollectedLinter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can compute style violations and corrections for a list of rules.

    - -

    A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct CollectedLinter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Location - -
    -
    -
    -
    -
    -
    -

    The placement of a segment of Swift in a collection of source files.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Location : CustomStringConvertible, Comparable, Codable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Region - -
    -
    -
    -
    -
    -
    -

    A contiguous region of Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Region : Equatable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Description of a rule configuration.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleConfigurationDescription : Equatable
    -
    extension RuleConfigurationDescription: Documentable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A single option of a RuleConfigurationDescription.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleConfigurationOption : Equatable
    -
    extension RuleConfigurationOption: Documentable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Result builder -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    A result builder creating configuration descriptions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @resultBuilder
    -public struct RuleConfigurationDescriptionBuilder
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Property wrapper -

-
-
-
    -
  • -
    - - - - ConfigurationElement - -
    -
    -
    -
    -
    -
    -

    A single parameter of a rule configuration.

    - -

    Apply it to a simple (e.g. boolean) property like

    -
    @ConfigurationElement
    -var property = true
    -
    - -

    to add a (boolean) option to a configuration. The name of the option will be inferred from the name of the property. -In this case, it’s just property. CamelCase names will translated into snake_case, i.e. myOption is going to be -translated into my_option in the .swiftlint.yml configuration file.

    - -

    This mechanism may be overwritten with an explicitly set key:

    -
    @ConfigurationElement(key: "foo_bar")
    -var property = true
    -
    - -

    If the wrapped element is an InlinableOptionType, there are three ways to represent it in the documentation:

    - -
      -
    1. It can be inlined into the parent configuration. For that, add the parameter inline: true. E.g. -swift -@ConfigurationElement(inline: true) -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will be documented as a linear list: - -warning: 1 -error: 2 -
    2. -
    3. It can be represented as a separate nested configuration. In this case, it must not have set the inline flag to -true. E.g. -swift -@ConfigurationElement -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will have a nested configuration section: - -levels: warning: 1 - error: 2 -
    4. -
    5. As mentioned in the beginning, the implicit key inference mechanism can be overruled by specifying a key as in: -swift -@ConfigurationElement(key: "foo") -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -It will appear in the documentation as: - -foo: warning: 1 - error: 2 -
    6. -
    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @propertyWrapper
    -public struct ConfigurationElement<T> : Equatable where T : Equatable, T : AcceptableByConfigurationElement
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SeverityConfiguration - -
    -
    -
    -
    -
    -
    -

    A rule configuration that allows specifying the desired severity level for violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SeverityConfiguration<Parent> : SeverityBasedRuleConfiguration, InlinableOptionType where Parent : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleDescription - -
    -
    -
    -
    -
    -
    -

    A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleDescription : Equatable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleList - -
    -
    -
    -
    -
    -
    -

    A list of available SwiftLint rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleList
    -
    extension RuleList: Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleParameter - -
    -
    -
    -
    -
    -
    -

    A configuration parameter for rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleParameter<T> : Equatable where T : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - StyleViolation - -
    -
    -
    -
    -
    -
    -

    A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct StyleViolation : CustomStringConvertible, Codable, Hashable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxMap - -
    -
    -
    -
    -
    -
    -

    Represents a Swift file’s syntax information.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxToken - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-aware Swift syntax token.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftVersion - -
    -
    -
    -
    -
    -
    -

    A value describing the version of the Swift compiler.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftVersion : RawRepresentable, Codable, VersionComparable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Version - -
    -
    -
    -
    -
    -
    -

    A type describing the SwiftLint version.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Version : VersionComparable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

YamlParser -

-
-
- -
-
-
- -
-
- - - diff --git a/Structs/Baseline.html b/Structs/Baseline.html deleted file mode 100644 index 2a992c778..000000000 --- a/Structs/Baseline.html +++ /dev/null @@ -1,685 +0,0 @@ - - - - Baseline Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Baseline

-
-
- -
public struct Baseline : Equatable
- -
-
-

A set of violations that can be used to filter newly detected violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - violations - -
    -
    -
    -
    -
    -
    -

    The stored violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var violations: [StyleViolation] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(fromPath:) - -
    -
    -
    -
    -
    -
    -

    Creates a Baseline from a saved file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(fromPath path: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - fromPath - - -
    -

    The path to read from.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(violations:) - -
    -
    -
    -
    -
    -
    -

    Creates a Baseline from a list of violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(violations: [StyleViolation])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations for the baseline.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - write(toPath:) - -
    -
    -
    -
    -
    -
    -

    Writes a Baseline to disk in JSON format.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func write(toPath path: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - toPath - - -
    -

    The path to write to.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - filter(_:) - -
    -
    -
    -
    -
    -
    -

    Filters out violations that are present in the Baseline.

    - -

    Assumes that all violations are from the same file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func filter(_ violations: [StyleViolation]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations to filter.

    -
    -
    -
    -
    -

    Return Value

    -

    The new violations.

    -
    - -
    -
    -
  • -
  • -
    - - - - compare(_:) - -
    -
    -
    -
    -
    -
    -

    Returns the violations that are present in another Baseline, but not in this one.

    - -

    The violations are filtered using the same algorithm as the filter method above.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func compare(_ otherBaseline: `Self`) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - otherBaseline - - -
    -

    The other Baseline.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/ChildOptionSeverityConfiguration.html b/Structs/ChildOptionSeverityConfiguration.html deleted file mode 100644 index 2a191a33f..000000000 --- a/Structs/ChildOptionSeverityConfiguration.html +++ /dev/null @@ -1,582 +0,0 @@ - - - - ChildOptionSeverityConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ChildOptionSeverityConfiguration

-
-
- -
public struct ChildOptionSeverityConfiguration<Parent> : RuleConfiguration, AcceptableByConfigurationElement where Parent : Rule
- -
-
-

A rule configuration that allows to disable (off) an option of a rule or specify its severity level in which -case it’s active.

- - -
-
- -
-
-
-
    -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Configuration with a warning severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var error: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Configuration with an error severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var warning: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - off - -
    -
    -
    -
    -
    -
    -

    Configuration disabling an option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var off: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The ChildOptionSeverityConfiguration mapped to a usually used ViolationSeverity. It’s nil if the option -is set to off.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var severity: ViolationSeverity? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - asOption() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func asOption() -> OptionType
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/CollectedLinter.html b/Structs/CollectedLinter.html deleted file mode 100644 index b22d1e4d9..000000000 --- a/Structs/CollectedLinter.html +++ /dev/null @@ -1,655 +0,0 @@ - - - - CollectedLinter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectedLinter

-
-
- -
public struct CollectedLinter
- -
-
-

Represents a file that can compute style violations and corrections for a list of rules.

- -

A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolations(using storage: RuleStorage) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations and the time spent executing each rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolationsAndRuleTimes(using storage: RuleStorage)
    -    -> ([StyleViolation], [(id: String, time: Double)])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter, and the time spent executing each rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(using:) - -
    -
    -
    -
    -
    -
    -

    Applies corrections for all rules to this file, returning performed corrections.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func correct(using storage: RuleStorage) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Formats the file associated with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func format(useTabs: Bool, indentWidth: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - useTabs - - -
    -

    Should the file be formatted using tabs?

    -
    -
    - - indentWidth - - -
    -

    How many spaces should be used per indentation level.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Command.html b/Structs/Command.html deleted file mode 100644 index 844fdc42e..000000000 --- a/Structs/Command.html +++ /dev/null @@ -1,803 +0,0 @@ - - - - Command Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Command

-
-
- -
public struct Command : Equatable
- -
-
-

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Action - -
    -
    -
    -
    -
    -
    -

    The action (verb) that SwiftLint should perform when interpreting this command.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Action : String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Modifier - -
    -
    -
    -
    -
    -
    -

    The modifier for a command, used to modify its scope.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Modifier : String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - action - -
    -
    -
    -
    -
    -
    -

    The action (verb) that SwiftLint should perform when interpreting this command.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let action: Action
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleIdentifiers - -
    -
    -
    -
    -
    -
    -

    The identifiers for the rules associated with this command.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleIdentifiers: Set<RuleIdentifier>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line in the source file where this command is defined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: Int
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - character - -
    -
    -
    -
    -
    -
    -

    The character offset within the line in the source file where this command is defined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let character: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - modifier - -
    -
    -
    -
    -
    -
    -

    This command’s modifier, if any.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let modifier: Modifier?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(action: Action,
    -            ruleIdentifiers: Set<RuleIdentifier> = [],
    -            line: Int = 0,
    -            character: Int? = nil,
    -            modifier: Modifier? = nil,
    -            trailingComment: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - action - - -
    -

    This command’s action.

    -
    -
    - - ruleIdentifiers - - -
    -

    The identifiers for the rules associated with this command.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    - - modifier - - -
    -

    This command’s modifier, if any.

    -
    -
    - - trailingComment - - -
    -

    The comment following this command’s - delimiter, if any.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(actionString: String, line: Int, character: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - actionString - - -
    -

    The string in the command’s definition describing its action.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Command/Action.html b/Structs/Command/Action.html deleted file mode 100644 index 3defc9750..000000000 --- a/Structs/Command/Action.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - Action Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Action

-
-
- -
public enum Action : String
- -
-
-

The action (verb) that SwiftLint should perform when interpreting this command.

- - -
-
- -
-
-
-
    -
  • -
    - - - - enable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be enabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case enable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - disable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be disabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case disable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalid - -
    -
    -
    -
    -
    -
    -

    The action string was invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalid
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Command/Modifier.html b/Structs/Command/Modifier.html deleted file mode 100644 index 3742806fa..000000000 --- a/Structs/Command/Modifier.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - Modifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Modifier

-
-
- -
public enum Modifier : String
- -
-
-

The modifier for a command, used to modify its scope.

- - -
-
- -
-
-
-
    -
  • -
    - - - - previous - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line preceding its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case previous
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - this - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the same line as its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case this
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - next - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line following its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case next
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalid - -
    -
    -
    -
    -
    -
    -

    The modifier string was invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalid
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Configuration.html b/Structs/Configuration.html deleted file mode 100644 index 2b3d747fc..000000000 --- a/Structs/Configuration.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - - Configuration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Configuration

-
-
- -
public struct Configuration
-
extension Configuration: Hashable
-
extension Configuration: CustomStringConvertible
- -
-
-

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

- - -
-
- -
-
-
-
- - -
- -

Properties: Static -

-
-
-
    -
  • -
    - - - - default - -
    -
    -
    -
    -
    -
    -

    The default Configuration resulting from an empty configuration file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var `default`: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - defaultFileName - -
    -
    -
    -
    -
    -
    -

    The default file name to look for user-defined configurations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let defaultFileName: String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Instance -

-
-
-
    -
  • -
    - - - - includedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be included when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var includedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excludedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be excluded when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var excludedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - indentation - -
    -
    -
    -
    -
    -
    -

    The style to use when indenting Swift source code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let indentation: IndentationStyle
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warningThreshold - -
    -
    -
    -
    -
    -
    -

    The threshold for the number of warnings to tolerate before treating the lint as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let warningThreshold: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reporter - -
    -
    -
    -
    -
    -
    -

    The identifier for the Reporter to use to report style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reporter: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - cachePath - -
    -
    -
    -
    -
    -
    -

    The location of the persisted cache to use with this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let cachePath: String?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let allowZeroLintableFiles: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - strict - -
    -
    -
    -
    -
    -
    -

    Treat warnings as errors.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let strict: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lenient - -
    -
    -
    -
    -
    -
    -

    Treat errors as warnings.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let lenient: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - baseline - -
    -
    -
    -
    -
    -
    -

    The path to read a baseline from.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let baseline: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - writeBaseline - -
    -
    -
    -
    -
    -
    -

    The path to write a baseline to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let writeBaseline: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - checkForUpdates - -
    -
    -
    -
    -
    -
    -

    Check for updates.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let checkForUpdates: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This value is true iff the --config parameter was used to specify (a) configuration file(s) -In particular, this means that the value is also true if the --config parameter -was used to explicitly specify the default .swiftlint.yml as the configuration file

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var basedOnCustomConfigurationFiles: Bool { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Computed -

-
-
-
    -
  • -
    - - - - rules - -
    -
    -
    -
    -
    -
    -

    All rules enabled in this configuration

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rules: [any Rule] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rootDirectory - -
    -
    -
    -
    -
    -
    -

    The root directory is the directory that included & excluded paths relate to. -By default, the root directory is the current working directory, -but during some merging algorithms it may be used differently. -The rootDirectory also serves as the stopping point when searching for nested configs along the file hierarchy.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rootDirectory: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rulesMode - -
    -
    -
    -
    -
    -
    -

    The rules mode used for this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rulesMode: RulesMode { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a Configuration with convenience parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(
    -    configurationFiles: [String], // No default value here to avoid ambiguous Configuration() initializer
    -    enableAllRules: Bool = false,
    -    onlyRule: [String] = [],
    -    cachePath: String? = nil,
    -    ignoreParentAndChildConfigs: Bool = false,
    -    mockedNetworkResults: [String: String] = [:],
    -    useDefaultConfigOnFailure: Bool? = nil // swiftlint:disable:this discouraged_optional_boolean
    -)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - configurationFiles - - -
    -

    The path on disk to one or multiple configuration files. If this array - is empty, the default .swiftlint.yml file will be used.

    -
    -
    - - enableAllRules - - -
    -

    Enable all available rules.

    -
    -
    - - cachePath - - -
    -

    The location of the persisted cache to use whith this configuration.

    -
    -
    - - ignoreParentAndChildConfigs - - -
    -

    If true, child and parent config references will be ignored.

    -
    -
    - - mockedNetworkResults - - -
    -

    For testing purposes only. Instead of loading the specified urls, - the mocked value will be used. Example: [“http://mock.com”: “content”]

    -
    -
    - - useDefaultConfigOnFailure - - -
    -

    If this value is specified, it will override the normal behavior. - This is only intended for tests checking whether invalid configs fail.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable -

-
-
-
    -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Configuration, rhs: Configuration) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

CustomStringConvertible -

-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/ConfigurationElement.html b/Structs/ConfigurationElement.html deleted file mode 100644 index 2ca6d3b51..000000000 --- a/Structs/ConfigurationElement.html +++ /dev/null @@ -1,898 +0,0 @@ - - - - ConfigurationElement Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ConfigurationElement

-
-
- -
@propertyWrapper
-public struct ConfigurationElement<T> : Equatable where T : Equatable, T : AcceptableByConfigurationElement
- -
-
-

A single parameter of a rule configuration.

- -

Apply it to a simple (e.g. boolean) property like

-
@ConfigurationElement
-var property = true
-
- -

to add a (boolean) option to a configuration. The name of the option will be inferred from the name of the property. -In this case, it’s just property. CamelCase names will translated into snake_case, i.e. myOption is going to be -translated into my_option in the .swiftlint.yml configuration file.

- -

This mechanism may be overwritten with an explicitly set key:

-
@ConfigurationElement(key: "foo_bar")
-var property = true
-
- -

If the wrapped element is an InlinableOptionType, there are three ways to represent it in the documentation:

- -
    -
  1. It can be inlined into the parent configuration. For that, add the parameter inline: true. E.g. -swift -@ConfigurationElement(inline: true) -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will be documented as a linear list: - -warning: 1 -error: 2 -
  2. -
  3. It can be represented as a separate nested configuration. In this case, it must not have set the inline flag to -true. E.g. -swift -@ConfigurationElement -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will have a nested configuration section: - -levels: warning: 1 - error: 2 -
  4. -
  5. As mentioned in the beginning, the implicit key inference mechanism can be overruled by specifying a key as in: -swift -@ConfigurationElement(key: "foo") -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -It will appear in the documentation as: - -foo: warning: 1 - error: 2 -
  6. -
- - -
-
- -
-
-
-
    -
  • -
    - - - - DeprecationNotice - -
    -
    -
    -
    -
    -
    -

    A deprecation notice.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum DeprecationNotice
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - wrappedValue - -
    -
    -
    -
    -
    -
    -

    Wrapped option value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var wrappedValue: T { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - projectedValue - -
    -
    -
    -
    -
    -
    -

    The wrapper itself providing access to all its data. This field can only be accessed by the -element’s name prefixed with a $.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var projectedValue: `Self` { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - key - -
    -
    -
    -
    -
    -
    -

    Name of this configuration entry.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var key: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - inline - -
    -
    -
    -
    -
    -
    -

    Whether this configuration element will be inlined into its description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let inline: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Default constructor.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(wrappedValue value: T,
    -            key: String,
    -            deprecationNotice: DeprecationNotice? = nil,
    -            postprocessor: @escaping (inout T) -> Void = { _ in })
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - value - - -
    -

    Value to be wrapped.

    -
    -
    - - key - - -
    -

    Optional name of the option. If not specified, it will be inferred from the attributed property.

    -
    -
    - - deprecationNotice - - -
    -

    An optional deprecation notice in case an option is outdated and/or has been replaced by - an alternative.

    -
    -
    - - postprocessor - - -
    -

    Function to be applied to the wrapped value after parsing to validate and modify it.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(key:) - -
    -
    -
    -
    -
    -
    -

    Constructor for optional values.

    - -

    It allows to skip explicit initialization of the property with nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init<Wrapped>(key: String) where T == Wrapped?, Wrapped : Equatable, Wrapped : AcceptableByConfigurationElement
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - key - - -
    -

    Optional name of the option. If not specified, it will be inferred from the attributed property.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Constructor for an InlinableOptionType without a key.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(wrappedValue value: T, inline: Bool) where T : InlinableOptionType
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    Value to be wrapped.

    -
    -
    - - inline - - -
    -

    If true, the option will be handled as it would be part of its parent. All of its options - will be inlined. Otherwise, it will be treated as a normal nested configuration with its name - inferred from the name of the attributed property.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Constructor for an InlinableOptionType with a name. The configuration will explicitly not be inlined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(wrappedValue value: T, key: String) where T : InlinableOptionType
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    Value to be wrapped.

    -
    -
    - - key - - -
    -

    Name of the option.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/ConfigurationElement/DeprecationNotice.html b/Structs/ConfigurationElement/DeprecationNotice.html deleted file mode 100644 index 69f581a15..000000000 --- a/Structs/ConfigurationElement/DeprecationNotice.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - DeprecationNotice Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

DeprecationNotice

-
-
- -
public enum DeprecationNotice
- -
-
-

A deprecation notice.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Structs/Correction.html b/Structs/Correction.html deleted file mode 100644 index 21c63dd6d..000000000 --- a/Structs/Correction.html +++ /dev/null @@ -1,553 +0,0 @@ - - - - Correction Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Correction

-
-
- -
public struct Correction : Equatable, Sendable
- -
-
-

A value describing a SwiftLint violation that was corrected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule for which this correction was applied.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: RuleDescription
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of the original violation that was corrected.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable description for this correction.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Memberwise initializer.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(ruleDescription: RuleDescription, location: Location)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - ruleDescription - - -
    -

    The description of the rule for which this correction was applied.

    -
    -
    - - location - - -
    -

    The location of the original violation that was corrected.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Example.html b/Structs/Example.html deleted file mode 100644 index 27903dd05..000000000 --- a/Structs/Example.html +++ /dev/null @@ -1,951 +0,0 @@ - - - - Example Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Example

-
-
- -
public struct Example : Sendable
-
extension Example: Hashable
-
extension Example: Comparable
- -
-
-

Captures code and context information for an example of a triggering or -non-triggering style

- - -
-
- -
-
-
-
    -
  • -
    - - - - code - -
    -
    -
    -
    -
    -
    -

    The contents of the example

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var code: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    The untyped configuration to apply to the rule, if deviating from the default configuration. -The structure should match what is expected as a configuration value for the rule being tested.

    - -

    For example, if the following YAML would be used to configure the rule:

    -
    severity: warning
    -
    - -

    Then the equivalent configuration value would be ["severity": "warning"].

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var configuration: [String : any Sendable]? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testMultiByteOffsets - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters

    -
    -

    See also

    - addEmoji(_:) - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testMultiByteOffsets: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testOnLinux - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested on Linux

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testOnLinux: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The path to the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var file: StaticString { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line in the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var line: UInt
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Create a new Example with the specified code, file, and line.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(_ code: String,
    -     configuration: [String: any Sendable]? = nil,
    -     testMultiByteOffsets: Bool = true,
    -     testWrappingInComment: Bool = true,
    -     testWrappingInString: Bool = true,
    -     testDisableCommand: Bool = true,
    -     testOnLinux: Bool = true,
    -     file: StaticString = #filePath,
    -     line: UInt = #line,
    -     excludeFromDocumentation: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - code - - -
    -

    The contents of the example.

    -
    -
    - - configuration - - -
    -

    The untyped configuration to apply to the rule, if deviating from the default - configuration.

    -
    -
    - - testMultibyteOffsets - - -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters.

    -
    -
    - - testWrappingInComment - - -
    -

    Whether test shall verify that the example wrapped in a comment doesn’t trigger.

    -
    -
    - - testWrappingInString - - -
    -

    Whether tests shall verify that the example wrapped into a string doesn’t trigger.

    -
    -
    - - testDisableCommand - - -
    -

    Whether tests shall verify that the disabled rule (comment in the example) doesn’t - trigger.

    -
    -
    - - testOnLinux - - -
    -

    Whether the example should be tested on Linux.

    -
    -
    - - file - - -
    -

    The path to the file where the example is located. - Defaults to the file where this initializer is called.

    -
    -
    - - line - - -
    -

    The line in the file where the example is located. - Defaults to the line where this initializer is called.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(code:) - -
    -
    -
    -
    -
    -
    -

    Returns the same example, but with the code that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func with(code: String) -> Example
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - code - - -
    -

    the new code to use in the modified example

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns a copy of the Example with all instances of the “↓” character removed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func removingViolationMarkers() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - focused() - -
    -
    -
    -
    -
    -
    -

    Makes the current example focused. This is for debugging purposes only.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func focused() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Linter.html b/Structs/Linter.html deleted file mode 100644 index 0ce8f124c..000000000 --- a/Structs/Linter.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - Linter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Linter

-
-
- -
public struct Linter
- -
-
-

Represents a file that can be linted for style violations and corrections after being collected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isCollecting - -
    -
    -
    -
    -
    -
    -

    Whether or not this linter will be used to collect information from several files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var isCollecting: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Linter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile,
    -            configuration: Configuration = Configuration.default,
    -            cache: LinterCache? = nil,
    -            compilerArguments: [String] = [])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file to lint with this linter.

    -
    -
    - - configuration - - -
    -

    The SwiftLint configuration to apply to this linter.

    -
    -
    - - cache - - -
    -

    The persisted cache to use for this linter.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments to use for this linter if it is to execute analyzer rules.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - collect(into:) - -
    -
    -
    -
    -
    -
    -

    Returns a linter capable of checking for violations after running each rule’s collection step.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func collect(into storage: RuleStorage) -> CollectedLinter
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    -
    -
    -

    Return Value

    -

    A linter capable of checking for violations after running each rule’s collection step.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Location.html b/Structs/Location.html deleted file mode 100644 index 5026cb0b4..000000000 --- a/Structs/Location.html +++ /dev/null @@ -1,853 +0,0 @@ - - - - Location Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Location

-
-
- -
public struct Location : CustomStringConvertible, Comparable, Codable, Sendable
- -
-
-

The placement of a segment of Swift in a collection of source files.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file path on disk for this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - character - -
    -
    -
    -
    -
    -
    -

    The character offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let character: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A lossless printable description of this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - relativeFile - -
    -
    -
    -
    -
    -
    -

    The file path for this location relative to the current working directory.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var relativeFile: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: String?, line: Int? = nil, character: Int? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file path on disk for this location.

    -
    -
    - - line - - -
    -

    The line offset in the file for this location. 1-indexed.

    -
    -
    - - character - - -
    -

    The character offset in the file for this location. 1-indexed.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a byte-offset into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, byteOffset offset: ByteCount)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in bytes into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(file:position:) - -
    -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a SwiftSyntax AbsolutePosition into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, position: AbsolutePosition)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - position - - -
    -

    The absolute position returned from SwiftSyntax.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, characterOffset offset: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in UTF8 fragments into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable -

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/ReasonedRuleViolation.html b/Structs/ReasonedRuleViolation.html deleted file mode 100644 index 8c598a892..000000000 --- a/Structs/ReasonedRuleViolation.html +++ /dev/null @@ -1,672 +0,0 @@ - - - - ReasonedRuleViolation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ReasonedRuleViolation

-
-
- -
public struct ReasonedRuleViolation : Comparable, Hashable
- -
-
-

A violation produced by ViolationsSyntaxVisitors.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ViolationCorrection - -
    -
    -
    -
    -
    -
    -

    The correction of a violation that is basically the violation’s range in the source code and a -replacement for this range that would fix the violation.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct ViolationCorrection : Hashable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - position - -
    -
    -
    -
    -
    -
    -

    The violation’s position.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let position: AbsolutePosition
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    A specific reason for the violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reason: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The violation’s severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let severity: ViolationSeverity?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - correction - -
    -
    -
    -
    -
    -
    -

    An optional correction of the violation to be used in rewriting (see SwiftSyntaxCorrectableRule). Can be -left unset when creating a violation, especially if the rule is not correctable or provides a custom rewriter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let correction: ViolationCorrection?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a ReasonedRuleViolation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(position: AbsolutePosition,
    -            reason: String? = nil,
    -            severity: ViolationSeverity? = nil,
    -            correction: ViolationCorrection? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - position - - -
    -

    The violations position in the analyzed source file.

    -
    -
    - - reason - - -
    -

    The reason for the violation if different from the rule’s description.

    -
    -
    - - severity - - -
    -

    The severity of the violation if different from the rule’s default configured severity.

    -
    -
    - - correction - - -
    -

    An optional correction of the violation to be used in rewriting.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/ReasonedRuleViolation/ViolationCorrection.html b/Structs/ReasonedRuleViolation/ViolationCorrection.html deleted file mode 100644 index 81c3deb43..000000000 --- a/Structs/ReasonedRuleViolation/ViolationCorrection.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - ViolationCorrection Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationCorrection

-
-
- -
public struct ViolationCorrection : Hashable
- -
-
-

The correction of a violation that is basically the violation’s range in the source code and a -replacement for this range that would fix the violation.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Create a ViolationCorrection.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(start: AbsolutePosition, end: AbsolutePosition, replacement: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - start - - -
    -

    Start position of the violation range.

    -
    -
    - - end - - -
    -

    End position of the violation range.

    -
    -
    - - replacement - - -
    -

    Replacement for the violating range.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/RegexConfiguration.html b/Structs/RegexConfiguration.html deleted file mode 100644 index a35097456..000000000 --- a/Structs/RegexConfiguration.html +++ /dev/null @@ -1,810 +0,0 @@ - - - - RegexConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RegexConfiguration

-
-
- -
public struct RegexConfiguration<Parent: Rule>: SeverityBasedRuleConfiguration, Hashable,
-                                                CacheDescriptionProvider, InlinableOptionType
- -
-
-

A rule configuration used for defining custom rules in yaml.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The identifier for this custom rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - name - -
    -
    -
    -
    -
    -
    -

    The name for this custom rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var name: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - message - -
    -
    -
    -
    -
    -
    -

    The message to be presented when producing violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var message: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - included - -
    -
    -
    -
    -
    -
    -

    Regular expressions to include when matching the file path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var included: [NSRegularExpression]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excluded - -
    -
    -
    -
    -
    -
    -

    Regular expressions to exclude when matching the file path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var excluded: [NSRegularExpression]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excludedMatchKinds - -
    -
    -
    -
    -
    -
    -

    The syntax kinds to exclude from matches. If the regex matched syntax kinds from this list, it would -be ignored and not count as a rule violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var excludedMatchKinds: Set<SyntaxKind>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severityConfiguration - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @ConfigurationElement
    -public var severityConfiguration: SeverityConfiguration<Parent> { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - captureGroup - -
    -
    -
    -
    -
    -
    -

    The index of the regex capture group to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var captureGroup: Int
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - cacheDescription - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var cacheDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    The RuleDescription for the custom rule defined here.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: RuleDescription { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(identifier:) - -
    -
    -
    -
    -
    -
    -

    Create a RegexConfiguration with the specified identifier, with other properties to be set later.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(identifier: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    The rule identifier to use.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Region.html b/Structs/Region.html deleted file mode 100644 index db96fcc2c..000000000 --- a/Structs/Region.html +++ /dev/null @@ -1,840 +0,0 @@ - - - - Region Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Region

-
-
- -
public struct Region : Equatable
- -
-
-

A contiguous region of Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - start - -
    -
    -
    -
    -
    -
    -

    The location describing the start of the region. All locations that are less than this value -(earlier in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let start: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - end - -
    -
    -
    -
    -
    -
    -

    The location describing the end of the region. All locations that are greater than this value -(later in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let end: Location
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let disabledRuleIdentifiers: Set<RuleIdentifier>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Region by setting explicit values for all its properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(start: Location, end: Location, disabledRuleIdentifiers: Set<RuleIdentifier>)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - start - - -
    -

    The region’s starting location.

    -
    -
    - - end - - -
    -

    The region’s ending location.

    -
    -
    - - disabledRuleIdentifiers - - -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - contains(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specific location is contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contains(_ location: Location) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    The location to check for containment.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specific location is contained in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleEnabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is enabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleEnabled(_ rule: some Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is enabled in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleDisabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is disabled in this region.

    -
    -

    Note

    -

    For CustomRules, this will only return true if the custom_rules identifier - is used with the swiftlint disable command, but this method is never - called for CustomRules.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleDisabled(_ rule: some Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is disabled in this region.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Whether the given rules are disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func areRulesDisabled(ruleIDs: [String]) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - ruleIDs - - -
    -

    A list of rule IDs. Typically all identifiers of a single rule.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rules are disabled in this region.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the deprecated rule aliases that are disabling the specified rule in this region. -Returns the empty set if the rule isn’t disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func deprecatedAliasesDisabling(rule: some Rule) -> Set<String>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule to check.

    -
    -
    -
    -
    -

    Return Value

    -

    Deprecated rule aliases.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/RuleConfigurationDescription.html b/Structs/RuleConfigurationDescription.html deleted file mode 100644 index 7854f680d..000000000 --- a/Structs/RuleConfigurationDescription.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - RuleConfigurationDescription Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfigurationDescription

-
-
- -
public struct RuleConfigurationDescription : Equatable
-
extension RuleConfigurationDescription: Documentable
- -
-
-

Description of a rule configuration.

- - -
-
- -
-
-
-
    -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func oneLiner() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func markdown() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func yaml() -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/RuleConfigurationOption.html b/Structs/RuleConfigurationOption.html deleted file mode 100644 index 6b72871ce..000000000 --- a/Structs/RuleConfigurationOption.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - RuleConfigurationOption Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfigurationOption

-
-
- -
public struct RuleConfigurationOption : Equatable
-
extension RuleConfigurationOption: Documentable
- -
-
-

A single option of a RuleConfigurationDescription.

- - -
-
- -
-
-
-
    -
  • -
    - - - - noOptions - -
    -
    -
    -
    -
    -
    -

    An option serving as a marker for an empty configuration description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let noOptions: RuleConfigurationOption
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func markdown() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func oneLiner() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func yaml() -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/RuleDescription.html b/Structs/RuleDescription.html deleted file mode 100644 index 5a872120f..000000000 --- a/Structs/RuleDescription.html +++ /dev/null @@ -1,991 +0,0 @@ - - - - RuleDescription Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleDescription

-
-
- -
public struct RuleDescription : Equatable, Sendable
- -
-
-

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The rule’s unique identifier, to be used in configuration files and SwiftLint commands. -Should be short and only comprised of lowercase latin alphabet letters and underscores formatted in snake case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - name - -
    -
    -
    -
    -
    -
    -

    The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let name: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an -explanation of the rule’s purpose and rationale.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let description: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The RuleKind that best categorizes this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: RuleKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - nonTriggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform -users of various samples of code that are considered valid by this rule. Should be valid Swift syntax but is not -required to compile.

    - -

    These examples are also used for automatic testing purposes. Tests will validate that the rule does not trigger -any violations for these examples.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let nonTriggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - triggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to -inform users of various samples of code that are considered invalid by this rule. Should be valid Swift syntax -but is not required to compile.

    - -

    Violations should occur where ↓ markers are located.

    - -

    These examples are also used for automatic testing purposes. Tests will validate that the rule triggers -violations for these examples wherever ↓ markers are located.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let triggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - corrections - -
    -
    -
    -
    -
    -
    -

    Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values -are the expected value after applying corrections with the rule.

    - -

    Rules that aren’t correctable (conforming to the CorrectableRule protocol) should leave property empty.

    - -

    These examples are used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule corrects all keys to their corresponding values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let corrections: [Example : Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - deprecatedAliases - -
    -
    -
    -
    -
    -
    -

    Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let deprecatedAliases: Set<String>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - minSwiftVersion - -
    -
    -
    -
    -
    -
    -

    The oldest version of the Swift compiler supported by this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let minSwiftVersion: SwiftVersion
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - requiresFileOnDisk - -
    -
    -
    -
    -
    -
    -

    Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules -conforming to AnalyzerRule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let requiresFileOnDisk: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable string for this description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allIdentifiers - -
    -
    -
    -
    -
    -
    -

    All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var allIdentifiers: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a RuleDescription by specifying all its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(identifier: String,
    -            name: String,
    -            description: String,
    -            kind: RuleKind,
    -            minSwiftVersion: SwiftVersion = .five,
    -            nonTriggeringExamples: [Example] = [],
    -            triggeringExamples: [Example] = [],
    -            corrections: [Example: Example] = [:],
    -            deprecatedAliases: Set<String> = [],
    -            requiresFileOnDisk: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - identifier - - -
    -

    Sets the description’s identifier property.

    -
    -
    - - name - - -
    -

    Sets the description’s name property.

    -
    -
    - - description - - -
    -

    Sets the description’s description property.

    -
    -
    - - kind - - -
    -

    Sets the description’s kind property.

    -
    -
    - - minSwiftVersion - - -
    -

    Sets the description’s minSwiftVersion property.

    -
    -
    - - nonTriggeringExamples - - -
    -

    Sets the description’s nonTriggeringExamples property.

    -
    -
    - - triggeringExamples - - -
    -

    Sets the description’s triggeringExamples property.

    -
    -
    - - corrections - - -
    -

    Sets the description’s corrections property.

    -
    -
    - - deprecatedAliases - - -
    -

    Sets the description’s deprecatedAliases property.

    -
    -
    - - requiresFileOnDisk - - -
    -

    Sets the description’s requiresFileOnDisk property.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Equatable -

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/RuleList.html b/Structs/RuleList.html deleted file mode 100644 index b87d7a1d9..000000000 --- a/Structs/RuleList.html +++ /dev/null @@ -1,573 +0,0 @@ - - - - RuleList Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleList

-
-
- -
public struct RuleList
-
extension RuleList: Equatable
- -
-
-

A list of available SwiftLint rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - list - -
    -
    -
    -
    -
    -
    -

    The rules contained in this list.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let list: [String : any Rule.Type]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers -

-
-
-
    -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: any Rule.Type...)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: [any Rule.Type])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: RuleList, rhs: RuleList) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/RuleListDocumentation.html b/Structs/RuleListDocumentation.html deleted file mode 100644 index fa67c5bce..000000000 --- a/Structs/RuleListDocumentation.html +++ /dev/null @@ -1,505 +0,0 @@ - - - - RuleListDocumentation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListDocumentation

-
-
- -
public struct RuleListDocumentation
- -
-
-

User-facing documentation for a SwiftLint RuleList.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleListDocumentation instance from a RuleList.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ list: RuleList)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - list - - -
    -

    A RuleList to document.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - write(to:) - -
    -
    -
    -
    -
    -
    -

    Write the rule list documentation as markdown files to the specified directory.

    -
    -

    Throws

    -

    Throws if the files could not be written to.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func write(to url: URL) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - url - - -
    -

    Local URL for directory where the markdown files for this documentation should be saved.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/RuleParameter.html b/Structs/RuleParameter.html deleted file mode 100644 index bdc6bba5c..000000000 --- a/Structs/RuleParameter.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - RuleParameter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleParameter

-
-
- -
public struct RuleParameter<T> : Equatable where T : Equatable
- -
-
-

A configuration parameter for rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let severity: ViolationSeverity
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The value to configure the rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: T
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(severity:value:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleParameter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(severity: ViolationSeverity, value: T)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - severity - - -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    -
    -
    - - value - - -
    -

    The value to configure the rule.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/SeverityConfiguration.html b/Structs/SeverityConfiguration.html deleted file mode 100644 index 1b465b14e..000000000 --- a/Structs/SeverityConfiguration.html +++ /dev/null @@ -1,613 +0,0 @@ - - - - SeverityConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SeverityConfiguration

-
-
- -
public struct SeverityConfiguration<Parent> : SeverityBasedRuleConfiguration, InlinableOptionType where Parent : Rule
- -
-
-

A rule configuration that allows specifying the desired severity level for violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Configuration with a warning severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var error: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Configuration with an error severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var warning: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severityConfiguration - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var severityConfiguration: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Create a SeverityConfiguration with the specified severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ severity: ViolationSeverity)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - severity - - -
    -

    The severity that should be used when emitting violations.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

RuleConfiguration conformances -

-
-
-
    -
  • -
    - - - - asDescription(with:) - -
    -
    -
    -
    -
    -
    -

    Severity configurations are special in that they shall not be nested when an option name is provided. -Instead, their only option value must be used together with the option name.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func asDescription(with key: String) -> RuleConfigurationDescription
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/SeverityLevelsConfiguration.html b/Structs/SeverityLevelsConfiguration.html deleted file mode 100644 index 23732806c..000000000 --- a/Structs/SeverityLevelsConfiguration.html +++ /dev/null @@ -1,584 +0,0 @@ - - - - SeverityLevelsConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SeverityLevelsConfiguration

-
-
- -
public struct SeverityLevelsConfiguration<Parent> : RuleConfiguration, InlinableOptionType where Parent : Rule
- -
-
-

A rule configuration that allows specifying thresholds for warning and error severities.

- - -
-
- -
-
-
-
    -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    The threshold for a violation to be a warning.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @ConfigurationElement
    -public var warning: Int { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    The threshold for a violation to be an error.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @ConfigurationElement
    -public var error: Int? { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(warning:error:) - -
    -
    -
    -
    -
    -
    -

    Create a SeverityLevelsConfiguration based on the specified warning and error thresholds.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(warning: Int, error: Int? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - warning - - -
    -

    The threshold for a violation to be a warning.

    -
    -
    - - error - - -
    -

    The threshold for a violation to be an error.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - params - -
    -
    -
    -
    -
    -
    -

    The rule parameters that define the thresholds that should map to each severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var params: [RuleParameter<Int>] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/Stack.html b/Structs/Stack.html deleted file mode 100644 index 54dfb759c..000000000 --- a/Structs/Stack.html +++ /dev/null @@ -1,752 +0,0 @@ - - - - Stack Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Stack

-
-
- -
public struct Stack<Element>
-
extension Stack: Sequence
-
extension Stack: CustomDebugStringConvertible where Element: CustomDebugStringConvertible
- -
-
-

A basic stack type implementing the LIFO principle - only the last inserted element can be accessed and removed.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Creates an empty Stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - count - -
    -
    -
    -
    -
    -
    -

    The number of elements in this stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var count: Int { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - push(_:) - -
    -
    -
    -
    -
    -
    -

    Pushes (appends) an element onto the stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func push(_ element: Element)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - element - - -
    -

    The element to push onto the stack.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - pop() - -
    -
    -
    -
    -
    -
    -

    Removes and returns the last element of the stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public mutating func pop() -> Element?
    - -
    -
    -
    -

    Return Value

    -

    The last element of the stack if the stack is not empty; otherwise, nil.

    -
    - -
    -
    -
  • -
  • -
    - - - - peek() - -
    -
    -
    -
    -
    -
    -

    Returns the last element of the stack if the stack is not empty; otherwise, nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func peek() -> Element?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - contains(where:) - -
    -
    -
    -
    -
    -
    -

    Check whether the sequence contains an element that satisfies the given predicate.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contains(where predicate: (Element) -> Bool) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - predicate - - -
    -

    A closure that takes an element of the sequence -and returns whether it represents a match.

    -
    -
    -
    -
    -

    Return Value

    -

    true if the sequence contains an element that satisfies predicate.

    -
    - -
    -
    -
  • -
  • -
    - - - - modifyLast(by:) - -
    -
    -
    -
    -
    -
    -

    Modify the last element.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func modifyLast(by modifier: (inout Element) -> Void)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - modifier - - -
    -

    A function to be applied to the last element to modify the same in place.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - makeIterator() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func makeIterator() -> [Element].Iterator
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element: CustomDebugStringConvertible -

-
-
-
    -
  • -
    - - - - debugDescription - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var debugDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/StyleViolation.html b/Structs/StyleViolation.html deleted file mode 100644 index 01649f140..000000000 --- a/Structs/StyleViolation.html +++ /dev/null @@ -1,828 +0,0 @@ - - - - StyleViolation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

StyleViolation

-
-
- -
public struct StyleViolation : CustomStringConvertible, Codable, Hashable
- -
-
-

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleIdentifier - -
    -
    -
    -
    -
    -
    -

    The identifier of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleIdentifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleName - -
    -
    -
    -
    -
    -
    -

    The name of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleName: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var severity: ViolationSeverity { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var location: Location { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    The justification for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reason: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A printable description for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a StyleViolation by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(ruleDescription: RuleDescription,
    -            severity: ViolationSeverity = .warning,
    -            location: Location,
    -            reason: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - ruleDescription - - -
    -

    The description of the rule that generated this violation.

    -
    -
    - - severity - - -
    -

    The severity of this violation.

    -
    -
    - - location - - -
    -

    The location of this violation.

    -
    -
    - - reason - - -
    -

    The justification for this violation. If not specified the rule’s description will - be used.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(severity:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the severity that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(severity: ViolationSeverity) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - severity - - -
    -

    the new severity to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(location:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the location that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(location: Location) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    the new location to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/SwiftLintSyntaxMap.html b/Structs/SwiftLintSyntaxMap.html deleted file mode 100644 index 3e08b4918..000000000 --- a/Structs/SwiftLintSyntaxMap.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - SwiftLintSyntaxMap Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxMap

-
-
- -
public struct SwiftLintSyntaxMap
- -
-
-

Represents a Swift file’s syntax information.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - tokens - -
    -
    -
    -
    -
    -
    -

    The SwiftLint-specific syntax tokens for this syntax map.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let tokens: [SwiftLintSyntaxToken]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxMap)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxMap obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - tokens(inByteRange:) - -
    -
    -
    -
    -
    -
    -

    Returns array of syntax tokens intersecting with byte range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func tokens(inByteRange byteRange: ByteRange) -> [SwiftLintSyntaxToken]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - byteRange - - -
    -

    Byte-based NSRange.

    -
    -
    -
    -
    -

    Return Value

    -

    The array of syntax tokens intersecting with byte range.

    -
    - -
    -
    -
  • -
  • -
    - - - - kinds(inByteRange:) - -
    -
    -
    -
    -
    -
    -

    Returns the syntax kinds in the specified byte range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func kinds(inByteRange byteRange: ByteRange) -> [SyntaxKind]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - byteRange - - -
    -

    Byte range.

    -
    -
    -
    -
    -

    Return Value

    -

    The syntax kinds in the specified byte range.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/SwiftLintSyntaxToken.html b/Structs/SwiftLintSyntaxToken.html deleted file mode 100644 index 230977a4a..000000000 --- a/Structs/SwiftLintSyntaxToken.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - SwiftLintSyntaxToken Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxToken

-
-
- -
public struct SwiftLintSyntaxToken
- -
-
-

A SwiftLint-aware Swift syntax token.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The syntax kind associated with is token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: SyntaxKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxToken)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxToken obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - range - -
    -
    -
    -
    -
    -
    -

    The byte range in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var range: ByteRange { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - offset - -
    -
    -
    -
    -
    -
    -

    The starting byte offset in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var offset: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - length - -
    -
    -
    -
    -
    -
    -

    The length in bytes for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var length: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/SwiftVersion.html b/Structs/SwiftVersion.html deleted file mode 100644 index 5f99a0e46..000000000 --- a/Structs/SwiftVersion.html +++ /dev/null @@ -1,824 +0,0 @@ - - - - SwiftVersion Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftVersion

-
-
- -
public struct SwiftVersion : RawRepresentable, Codable, VersionComparable, Sendable
- -
-
-

A value describing the version of the Swift compiler.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/Structs/Version.html b/Structs/Version.html deleted file mode 100644 index 5d6ebce5a..000000000 --- a/Structs/Version.html +++ /dev/null @@ -1,541 +0,0 @@ - - - - Version Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Version

-
-
- -
public struct Version : VersionComparable
- -
-
-

A type describing the SwiftLint version.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The string value for this version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rawValue - -
    -
    -
    -
    -
    -
    -

    An alias for value required for protocol conformance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rawValue: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - current - -
    -
    -
    -
    -
    -
    -

    The current SwiftLint version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let current: Version
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Public initializer.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The string value for this version.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/Structs/YamlParser.html b/Structs/YamlParser.html deleted file mode 100644 index 0252cef73..000000000 --- a/Structs/YamlParser.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - YamlParser Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

YamlParser

-
-
- -
public struct YamlParser
- -
-
-

An interface for parsing YAML.

- - -
-
- -
-
-
-
    -
  • -
    - - - - parse(_:env:) - -
    -
    -
    -
    -
    -
    -

    Parses the input YAML string as an untyped dictionary.

    -
    -

    Throws

    -

    Throws if the yaml string provided could not be parsed.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func parse(_ yaml: String,
    -                         env: [String: String] = ProcessInfo.processInfo.environment) throws -> [String: Any]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - yaml - - -
    -

    YAML-formatted string.

    -
    -
    - - env - - -
    -

    The environment to use to expand variables in the YAML.

    -
    -
    -
    -
    -

    Return Value

    -

    The parsed YAML as an untyped dictionary.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/accessibility_label_for_image.html b/accessibility_label_for_image.html deleted file mode 100644 index 073cd9002..000000000 --- a/accessibility_label_for_image.html +++ /dev/null @@ -1,648 +0,0 @@ - - - - accessibility_label_for_image Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Accessibility Label for Image

- -

Images that provide context should have an accessibility label or should be explicitly hidden from accessibility

- -
    -
  • Identifier: accessibility_label_for_image
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        Image(decorative: "my-image")
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image", label: Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibility(hidden: true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibility(label: Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibilityLabel(Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(uiImage: myUiImage)
-            .renderingMode(.template)
-            .foregroundColor(.blue)
-            .accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(uiImage: myUiImage)
-            .accessibilityLabel(Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        SwiftUI.Image(uiImage: "my-image").resizable().accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image(decorative: "my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityElement()
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack(spacing: 8) {
-            Image(decorative: "my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Text("Text to accompany my image")
-        }.accessibilityElement(children: .combine)
-        .padding(16)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack(spacing: 8) {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Text("Text to accompany my image")
-        }.accessibilityElement(children: .ignore)
-        .padding(16)
-        .accessibilityLabel(Text("Label for my image and text"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Button(action: { doAction() }) {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-        }
-        .accessibilityLabel(Text("Label for my image"))
-    }
-}
-
-

Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        ↓Image("my-image")
-            .resizable(true)
-            .frame(width: 48, height: 48)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Image(uiImage: myUiImage)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓SwiftUI.Image(uiImage: "my-image").resizable().accessibilityHidden(false)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(uiImage: myUiImage)
-            .resizable()
-            .frame(width: 48, height: 48)
-            .accessibilityLabel(Text("Alt text for my image"))
-        ↓Image("other image")
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(decorative: "image1")
-        ↓Image("image2")
-        Image(uiImage: "image3")
-            .accessibility(label: Text("a pretty picture"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image(decorative: "my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            ↓Image("my-image")
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityElement(children: .contain)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityHidden(false)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack(spacing: 8) {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Text("Text to accompany my image")
-        }.accessibilityElement(children: .combine)
-        .padding(16)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Button(action: { doAction() }) {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Image(systemName: "circle.plus")
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/accessibility_trait_for_button.html b/accessibility_trait_for_button.html deleted file mode 100644 index cc975c862..000000000 --- a/accessibility_trait_for_button.html +++ /dev/null @@ -1,651 +0,0 @@ - - - - accessibility_trait_for_button Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Accessibility Trait for Button

- -

All views with tap gestures added should include the .isButton or the .isLink accessibility traits

- -
    -
  • Identifier: accessibility_trait_for_button
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        Button {
-            print("tapped")
-        } label: {
-            Text("Learn more")
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Link("Open link", destination: myUrl)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture {
-                print("tapped - open URL")
-            }
-            .accessibility(addTraits: .isLink)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .accessibilityAddTraits(.isButton)
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .accessibility(addTraits: [.isButton, .isHeader])
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture {
-                print("tapped - open URL")
-            }
-            .accessibilityAddTraits([.isHeader, .isLink])
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-            .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture(count: 1, perform: {
-                print("tapped")
-            })
-            .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            // This rule does not include tap gestures with multiple taps for now.
-            // Custom gestures like this are also not very accessible, but require
-            // alternative ways to accomplish the same task with assistive tech.
-            .onTapGesture(count: 2) {
-                print("double-tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Label("Learn more", systemImage: "info.circle")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-            .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack {
-            Image(systemName: "info.circle")
-            Text("Learn more")
-        }
-        .onTapGesture {
-            print("tapped")
-        }
-        // This modifier is not strictly required — each subview will inherit the button trait.
-        // That said, grouping a tappable stack into a single element is a good way to reduce
-        // the number of swipes required for a VoiceOver user to navigate the page.
-        .accessibilityElement(children: .combine)
-        .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .gesture(TapGesture().onEnded {
-                print("tapped")
-            })
-            .accessibilityAddTraits(.isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .simultaneousGesture(TapGesture(count: 1).onEnded {
-                print("tapped - open URL")
-            })
-            .accessibilityAddTraits(.isLink)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .highPriorityGesture(TapGesture().onEnded {
-                print("tapped")
-            })
-            .accessibility(addTraits: [.isButton])
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .gesture(TapGesture(count: 2).onEnded {
-                print("tapped")
-            })
-    }
-}
-
-

Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .accessibility(addTraits: .isHeader)
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .onTapGesture(count: 1, perform: {
-                print("tapped")
-            })
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Label("Learn more", systemImage: "info.circle")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓HStack {
-            Image(systemName: "info.circle")
-            Text("Learn more")
-        }
-        .onTapGesture {
-            print("tapped")
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .gesture(TapGesture().onEnded {
-                print("tapped")
-            })
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .simultaneousGesture(TapGesture(count: 1).onEnded {
-                print("tapped")
-            })
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .highPriorityGesture(TapGesture().onEnded {
-                print("tapped")
-            })
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/anonymous_argument_in_multiline_closure.html b/anonymous_argument_in_multiline_closure.html deleted file mode 100644 index 93e9399db..000000000 --- a/anonymous_argument_in_multiline_closure.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - anonymous_argument_in_multiline_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Anonymous Argument in Multiline Closure

- -

Use named arguments in multiline closures

- -
    -
  • Identifier: anonymous_argument_in_multiline_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
closure { $0 }
-
-
closure { print($0) }
-
-
closure { arg in
-    print(arg)
-}
-
-
closure { arg in
-    nestedClosure { $0 + arg }
-}
-
-

Triggering Examples

-
closure {
-    print(↓$0)
-}
-
- -
-
- - -
-
- - - diff --git a/array_init.html b/array_init.html deleted file mode 100644 index 0f23193b5..000000000 --- a/array_init.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - array_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Array Init

- -

Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array

- -
    -
  • Identifier: array_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
Array(foo)
-
-
foo.map { $0.0 }
-
-
foo.map { $1 }
-
-
foo.map { $0() }
-
-
foo.map { ((), $0) }
-
-
foo.map { $0! }
-
-
foo.map { $0! /* force unwrap */ }
-
-
foo.something { RouteMapper.map($0) }
-
-
foo.map { !$0 }
-
-
foo.map { /* a comment */ !$0 }
-
-

Triggering Examples

-
foo.↓map({ $0 })
-
-
foo.↓map { $0 }
-
-
foo.↓map { return $0 }
-
-
foo.↓map { elem in
-    elem
-}
-
-
foo.↓map { elem in
-    return elem
-}
-
-
foo.↓map { (elem: String) in
-    elem
-}
-
-
foo.↓map { elem -> String in
-    elem
-}
-
-
foo.↓map { $0 /* a comment */ }
-
-
foo.↓map { /* a comment */ $0 }
-
- -
-
- - -
-
- - - diff --git a/attribute_name_spacing.html b/attribute_name_spacing.html deleted file mode 100644 index 122322128..000000000 --- a/attribute_name_spacing.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - attribute_name_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Attribute Name Spacing

- -

This rule prevents trailing spaces after attribute names, ensuring compatibility with Swift 6 where a space between an attribute name and the opening parenthesis results in a compilation error (e.g. @MyPropertyWrapper (), private (set)).

- -
    -
  • Identifier: attribute_name_spacing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
private(set) var foo: Bool = false
-
-
fileprivate(set) var foo: Bool = false
-
-
@MainActor class Foo {}
-
-
func funcWithEscapingClosure(_ x: @escaping () -> Int) {}
-
-
@available(*, deprecated)
-
-
@MyPropertyWrapper(param: 2) 
-
-
nonisolated(unsafe) var _value: X?
-
-
@testable import SwiftLintCore
-
-
func func_type_attribute_with_space(x: @convention(c) () -> Int) {}
-
-
@propertyWrapper
-struct MyPropertyWrapper {
-    var wrappedValue: Int = 1
-
-    init(param: Int) {}
-}
-
-
let closure2 = { @MainActor
-  (a: Int, b: Int) in
-}
-
-

Triggering Examples

-
private ↓(set) var foo: Bool = false
-
-
fileprivate ↓(set) var foo: Bool = false
-
-
public ↓(set) var foo: Bool = false
-
-
  public  ↓(set) var foo: Bool = false
-
-
@ ↓MainActor class Foo {}
-
-
func funcWithEscapingClosure(_ x: @ ↓escaping () -> Int) {}
-
-
func funcWithEscapingClosure(_ x: @escaping↓() -> Int) {}
-
-
@available ↓(*, deprecated)
-
-
@MyPropertyWrapper ↓(param: 2) 
-
-
nonisolated ↓(unsafe) var _value: X?
-
-
@MyProperty ↓() class Foo {}
-
-
let closure1 = { @MainActor ↓(a, b) in
-}
-
- -
-
- - -
-
- - - diff --git a/attributes.html b/attributes.html deleted file mode 100644 index 5a13421d7..000000000 --- a/attributes.html +++ /dev/null @@ -1,667 +0,0 @@ - - - - attributes Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Attributes

- -

Attributes should be on their own lines in functions and types, but on the same line as variables and imports

- -
    -
  • Identifier: attributes
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -attributes_with_arguments_always_on_line_above - -true -
    -always_on_same_line - -[“@IBAction”, “@NSManaged”] -
    -always_on_line_above - -[] -
  • -
-

Non Triggering Examples

-
@objc var x: String
-
-
@objc private var x: String
-
-
@nonobjc var x: String
-
-
@IBOutlet private var label: UILabel
-
-
@IBOutlet @objc private var label: UILabel
-
-
@NSCopying var name: NSString
-
-
@NSManaged var name: String?
-
-
@IBInspectable var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *)
- let stackView: UIStackView
-
-
@NSManaged func addSomeObject(book: SomeObject)
-
-
@IBAction func buttonPressed(button: UIButton)
-
-
@objc
- @IBAction func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *)
- func animate(view: UIStackView)
-
-
@available(*, deprecated, message: "A message")
- func animate(view: UIStackView)
-
-
@nonobjc
- final class X {}
-
-
@available(iOS 9.0, *)
- class UIStackView {}
-
-
@NSApplicationMain
- class AppDelegate: NSObject, NSApplicationDelegate {}
-
-
@UIApplicationMain
- class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable
- class MyCustomView: UIView {}
-
-
@testable import SourceKittenFramework
-
-
@objc(foo_x)
- var x: String
-
-
@available(iOS 9.0, *)
-@objc(abc_stackView)
- let stackView: UIStackView
-
-
@objc(abc_addSomeObject:)
- @NSManaged func addSomeObject(book: SomeObject)
-
-
@objc(ABCThing)
- @available(iOS 9.0, *)
- class Thing {}
-
-
class Foo: NSObject {
- override var description: String { return "" }
-}
-
-
class Foo: NSObject {
-
- override func setUp() {}
-}
-
-
@objc
-class ⽺ {}
-
-
extension Property {
-
-    @available(*, unavailable, renamed: "isOptional")
-    public var optional: Bool { fatalError() }
-}
-
-
@GKInspectable var maxSpeed: Float
-
-
@discardableResult
- func a() -> Int
-
-
@objc
- @discardableResult
- func a() -> Int
-
-
func increase(f: @autoclosure () -> Int) -> Int
-
-
func foo(completionHandler: @escaping () -> Void)
-
-
private struct DefaultError: Error {}
-
-
@testable import foo
-
-private let bar = 1
-
-
import XCTest
-@testable import DeleteMe
-
-@available (iOS 11.0, *)
-class DeleteMeTests: XCTestCase {
-}
-
-
@objc
-internal func foo(identifier: String, completion: @escaping (() -> Void)) {}
-
-
@objc
-internal func foo(identifier: String, completion: @autoclosure (() -> Bool)) {}
-
-
func printBoolOrTrue(_ expression: @autoclosure () throws -> Bool?) rethrows {
-  try print(expression() ?? true)
-}
-
-
import Foundation
-
-class MyClass: NSObject {
-  @objc(
-    first:
-  )
-  static func foo(first: String) {}
-}
-
-
func refreshable(action: @escaping @Sendable () async -> Void) -> some View {
-    modifier(RefreshableModifier(action: action))
-}
-
-
import AppKit
-
-@NSApplicationMain
-@MainActor
-final class AppDelegate: NSAppDelegate {}
-
-

Triggering Examples

-
@objc
- ↓var x: String
-
-
@objc
-
- ↓var x: String
-
-
@objc
- private ↓var x: String
-
-
@nonobjc
- ↓var x: String
-
-
@IBOutlet
- private ↓var label: UILabel
-
-
@IBOutlet
-
- private ↓var label: UILabel
-
-
@NSCopying
- ↓var name: NSString
-
-
@NSManaged
- ↓var name: String?
-
-
@IBInspectable
- ↓var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *) ↓let stackView: UIStackView
-
-
@NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@IBAction
- ↓func buttonPressed(button: UIButton)
-
-
@IBAction
- @objc
- ↓func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *) ↓func animate(view: UIStackView)
-
-
@nonobjc final ↓class X {}
-
-
@available(iOS 9.0, *) ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
- @objc ↓class UIStackView {}
-
-
@available(iOS 9.0, *) @objc
- ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
-
- ↓class UIStackView {}
-
-
@UIApplicationMain ↓class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable ↓class MyCustomView: UIView {}
-
-
@testable
-↓import SourceKittenFramework
-
-
@testable
-
-
-↓import SourceKittenFramework
-
-
@available(iOS 9.0, *) @objc(abc_stackView)
- ↓let stackView: UIStackView
-
-
@objc(abc_addSomeObject:) @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@objc(abc_addSomeObject:)
- @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@available(iOS 9.0, *)
- @objc(ABCThing) ↓class Thing {}
-
-
@GKInspectable
- ↓var maxSpeed: Float
-
-
@discardableResult ↓func a() -> Int
-
-
@objc
- @discardableResult ↓func a() -> Int
-
-
@objc
-
- @discardableResult
- ↓func a() -> Int
-
- -
-
- - -
-
- - - diff --git a/badge.svg b/badge.svg deleted file mode 100644 index a096feca8..000000000 --- a/badge.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - documentation - - - documentation - - - 100% - - - 100% - - - diff --git a/balanced_xctest_lifecycle.html b/balanced_xctest_lifecycle.html deleted file mode 100644 index 525ed29ca..000000000 --- a/balanced_xctest_lifecycle.html +++ /dev/null @@ -1,496 +0,0 @@ - - - - balanced_xctest_lifecycle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Balanced XCTest Life Cycle

- -

Test classes must implement balanced setUp and tearDown methods

- -
    -
  • Identifier: balanced_xctest_lifecycle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-final class BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-
-
struct FooTests {
-    override func setUp() {}
-}
-class BarTests {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpAlLExamples() {}
-}
-
-
final class FooTests: XCTestCase {
-    class func setUp() {}
-    class func tearDown() {}
-}
-
-

Triggering Examples

-
final class ↓FooTests: XCTestCase {
-    override func setUp() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    class func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
- -
-
- - -
-
- - - diff --git a/blanket_disable_command.html b/blanket_disable_command.html deleted file mode 100644 index 2dc93713a..000000000 --- a/blanket_disable_command.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - blanket_disable_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Blanket Disable Command

- -

swiftlint:disable commands should use next, this or previous to disable rules for a single line, or swiftlint:enable to re-enable the rules immediately after the violations to be ignored, instead of disabling the rule for the rest of the file.

- -
    -
  • Identifier: blanket_disable_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allowed_rules - -[“file_header”, “file_length”, “file_name”, “file_name_no_space”, “single_test_class”] -
    -always_blanket_disable - -[] -
  • -
-

Non Triggering Examples

-
// swiftlint:disable unused_import
-// swiftlint:enable unused_import
-
-
// swiftlint:disable unused_import unused_declaration
-// swiftlint:enable unused_import
-// swiftlint:enable unused_declaration
-
-
// swiftlint:disable:this unused_import
-
-
// swiftlint:disable:next unused_import
-
-
// swiftlint:disable:previous unused_import
-
-

Triggering Examples

-
// swiftlint:disable ↓unused_import
-
-
// swiftlint:disable unused_import ↓unused_declaration
-// swiftlint:enable unused_import
-
-
// swiftlint:disable unused_import
-// swiftlint:disable ↓unused_import
-// swiftlint:enable unused_import
-
-
// swiftlint:enable ↓unused_import
-
- -
-
- - -
-
- - - diff --git a/block_based_kvo.html b/block_based_kvo.html deleted file mode 100644 index 0a7a10c50..000000000 --- a/block_based_kvo.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - block_based_kvo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Block Based KVO

- -

Prefer the new block based KVO API with keypaths when using Swift 3.2 or later

- -
    -
  • Identifier: block_based_kvo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let observer = foo.observe(\.value, options: [.new]) { (foo, change) in
-   print(change.newValue)
-}
-
-

Triggering Examples

-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: [NSKeyValueChangeKey : Any]?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: Dictionary<NSKeyValueChangeKey, Any>?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
- -
-
- - -
-
- - - diff --git a/capture_variable.html b/capture_variable.html deleted file mode 100644 index d4defa842..000000000 --- a/capture_variable.html +++ /dev/null @@ -1,533 +0,0 @@ - - - - capture_variable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Capture Variable

- -

Non-constant variables should not be listed in a closure’s capture list to avoid confusion about closures capturing variables at creation time

- -
    -
  • Identifier: capture_variable
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-let j: Int = 0
-let c = C(1)
-
-let closure: () -> Void = { [j, c] in
-    print(c.i, j)
-}
-
-closure()
-
-
let iGlobal: Int = 0
-
-class C {
-    class var iClass: Int { 0 }
-    static let iStatic: Int = 0
-    let iInstance: Int = 0
-
-    func callTest() {
-        var iLocal: Int = 0
-        test { [unowned self, iGlobal, iInstance, iLocal, iClass=C.iClass, iStatic=C.iStatic] j in
-            print(iGlobal, iClass, iStatic, iInstance, iLocal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
var j: Int!
-j = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
lazy var j: Int = { 0 }()
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-

Triggering Examples

-
var j: Int = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-var c = C(0)
-let closure: () -> Void = { [c] in
-    print(c.i)
-}
-
-closure()
-c = C(1)
-closure()
-
-
var iGlobal: Int = 0
-
-class C {
-    func callTest() {
-        test { [iGlobal] j in
-            print(iGlobal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
class C {
-    static var iStatic: Int = 0
-
-    static func callTest() {
-        test { [↓iStatic] j in
-            print(iStatic, j)
-        }
-    }
-
-    static func test(_ completionHandler: @escaping (Int) -> Void) {
-        completionHandler(2)
-        C.iStatic = 1
-        completionHandler(3)
-    }
-}
-
-C.callTest()
-
-
class C {
-    var iInstance: Int = 0
-
-    func callTest() {
-        test { [iInstance] j in
-            print(iInstance, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/class_delegate_protocol.html b/class_delegate_protocol.html deleted file mode 100644 index f2f4da470..000000000 --- a/class_delegate_protocol.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - class_delegate_protocol Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Class Delegate Protocol

- -

Delegate protocols should be class-only so they can be weakly referenced

- -
    -
  • Identifier: class_delegate_protocol
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
protocol FooDelegate: class {}
-
-
protocol FooDelegate: class, BarDelegate {}
-
-
protocol Foo {}
-
-
class FooDelegate {}
-
-
@objc protocol FooDelegate {}
-
-
@objc(MyFooDelegate)
- protocol FooDelegate {}
-
-
protocol FooDelegate: BarDelegate {}
-
-
protocol FooDelegate: AnyObject {}
-
-
protocol FooDelegate: NSObjectProtocol {}
-
-
protocol FooDelegate where Self: BarDelegate {}
-
-
protocol FooDelegate where Self: AnyObject {}
-
-
protocol FooDelegate where Self: NSObjectProtocol {}
-
-

Triggering Examples

-
↓protocol FooDelegate {}
-
-
↓protocol FooDelegate: Bar {}
-
-
↓protocol FooDelegate where Self: StringProtocol {}
-
- -
-
- - -
-
- - - diff --git a/closing_brace.html b/closing_brace.html deleted file mode 100644 index f591bf904..000000000 --- a/closing_brace.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - closing_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closing Brace Spacing

- -

Closing brace with closing parenthesis should not have any whitespaces in the middle

- -
    -
  • Identifier: closing_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[].map({ })
-
-
[].map(
-  { }
-)
-
-

Triggering Examples

-
[].map({ ↓} )
-
-
[].map({ ↓}   )
-
- -
-
- - -
-
- - - diff --git a/closure_body_length.html b/closure_body_length.html deleted file mode 100644 index 44e8877cb..000000000 --- a/closure_body_length.html +++ /dev/null @@ -1,1110 +0,0 @@ - - - - closure_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Body Length

- -

Closure bodies should not span too many lines

- -
    -
  • Identifier: closure_body_length
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -30 -
    -error - -100 -
  • -
-

Non Triggering Examples

-
foo.bar { $0 }
-
-
foo.bar { toto in
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar({ toto in
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-})
-
-
foo.bar(label: { toto in
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}, anotherLabel: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}) { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}
-
-
let foo: Bar = { toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    return bar
-}()
-
-

Triggering Examples

-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}
-
-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar(↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}, anotherLabel: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}) ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}
-
-
let foo: Bar = ↓{ toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    return bar
-}()
-
- -
-
- - -
-
- - - diff --git a/closure_end_indentation.html b/closure_end_indentation.html deleted file mode 100644 index 96d1bc679..000000000 --- a/closure_end_indentation.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - closure_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure End Indentation

- -

Closure end should have the same indentation as the line that started it.

- -
    -
  • Identifier: closure_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-   }
-
-
-
[1, 2].map { $0 + 1 }
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-}.flatMap { command in
-   return command.expand()
-}
-
-
-
foo(foo: bar,
-    options: baz) { _ in }
-
-
-
someReallyLongProperty.chainingWithAnotherProperty
-   .foo { _ in }
-
-
foo(abc, 123)
-{ _ in }
-
-
-
function(
-    closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
function(parameter: param,
-         closure: { x in
-    print(x)
-})
-
-
function(parameter: param, closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
(-variable).foo()
-
-

Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-↓}
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-   ↓}.flatMap { command in
-   return command.expand()
-↓}
-
-
-
function(
-    closure: { x in
-        print(x)
-↓},
-    anotherClosure: { y in
-        print(y)
-↓})
-
- -
-
- - -
-
- - - diff --git a/closure_parameter_position.html b/closure_parameter_position.html deleted file mode 100644 index d3a7265f9..000000000 --- a/closure_parameter_position.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - closure_parameter_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Parameter Position

- -

Closure parameters should be on the same line as opening brace

- -
    -
  • Identifier: closure_parameter_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
[1, 2].map({ $0 + 1 })
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
[1, 2].map { number -> Int in
- number + 1 
-}
-
-
[1, 2].map { (number: Int) -> Int in
- number + 1 
-}
-
-
[1, 2].map { [weak self] number in
- number + 1 
-}
-
-
[1, 2].something(closure: { number in
- number + 1 
-})
-
-
let isEmpty = [1, 2].isEmpty()
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-    return { migration, schemaVersion in
-        rlmMigration(migration.rlmMigration, schemaVersion)
-    }
-}
-
-
let mediaView: UIView = { [weak self] index in
-   return UIView()
-}(index)
-
-

Triggering Examples

-
[1, 2].map {
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map {
-    ↓number -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    (↓number: Int) -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    [weak ↓self] ↓number in
-    number + 1
-}
-
-
[1, 2].map { [weak self]
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map({
-    ↓number in
-    number + 1
-})
-
-
[1, 2].something(closure: {
-    ↓number in
-    number + 1
-})
-
-
[1, 2].reduce(0) {
-    ↓sum, ↓number in
-    number + sum
-})
-
-
f.completionHandler = {
-    ↓thing in
-    doStuff()
-}
-
-
foo {
-    [weak ↓self] in
-    self?.bar()
-}
-
- -
-
- - -
-
- - - diff --git a/closure_spacing.html b/closure_spacing.html deleted file mode 100644 index 96e903096..000000000 --- a/closure_spacing.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - closure_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Spacing

- -

Closure expressions should have a single space inside each brace

- -
    -
  • Identifier: closure_spacing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[].map ({ $0.description })
-
-
[].filter { $0.contains(location) }
-
-
extension UITableViewCell: ReusableView { }
-
-
extension UITableViewCell: ReusableView {}
-
-

Triggering Examples

-
[].filter↓{ $0.contains(location) }
-
-
[].filter(↓{$0.contains(location)})
-
-
[].map(↓{$0})
-
-
(↓{each in return result.contains(where: ↓{e in return e}) }).count
-
-
filter ↓{ sorted ↓{ $0 < $1}}
-
- -
-
- - -
-
- - - diff --git a/collection_alignment.html b/collection_alignment.html deleted file mode 100644 index 3b8569e52..000000000 --- a/collection_alignment.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - collection_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Collection Element Alignment

- -

All elements in a collection literal should be vertically aligned

- -
    -
  • Identifier: collection_alignment
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -align_colons - -false -
  • -
-

Non Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-    "fizz": 2,
-    "buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-    "beta": "b",
-    "gamma": "g",
-    "delta": "d",
-    "epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-                "dinner": "burger"
-]
-
-
NSAttributedString(string: "…", attributes: [.font: UIFont.systemFont(ofSize: 12, weight: .regular),
-                                             .foregroundColor: UIColor(white: 0, alpha: 0.2)])
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-    CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-    4,
-    6
-]
-
-
let abc = [1, 2, 3, 4]
-
-
let abc = [
-    1, 2, 3, 4
-]
-
-
let abc = [
-    "foo": "bar", "fizz": "buzz"
-]
-
-

Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-   ↓"fizz": 2,
-   ↓"buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-     ↓"beta": "b",
-    "gamma": "g",
-    "delta": "d",
-  ↓"epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-    ↓"dinner": "burger"
-]
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-        ↓CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-  ↓4,
-    6
-]
-
- -
-
- - -
-
- - - diff --git a/colon.html b/colon.html deleted file mode 100644 index b4a91e47d..000000000 --- a/colon.html +++ /dev/null @@ -1,640 +0,0 @@ - - - - colon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Colon Spacing

- -

Colons should be next to the identifier when specifying a type and next to the key in dictionary literals

- -
    -
  • Identifier: colon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -flexible_right_spacing - -false -
    -apply_to_dictionaries - -true -
  • -
-

Non Triggering Examples

-
let abc: Void
-
-
let abc: [Void: Void]
-
-
let abc: (Void, Void)
-
-
let abc: ([Void], String, Int)
-
-
let abc: [([Void], String, Int)]
-
-
let abc: String="def"
-
-
let abc: Int=0
-
-
let abc: Enum=Enum.Value
-
-
func abc(def: Void) {}
-
-
func abc(def: Void, ghi: Void) {}
-
-
let abc: String = "abc:"
-
-
let abc = [Void: Void]()
-
-
let abc = [1: [3: 2], 3: 4]
-
-
let abc = ["string": "string"]
-
-
let abc = ["string:string": "string"]
-
-
let abc: [String: Int]
-
-
func foo(bar: [String: Int]) {}
-
-
func foo() -> [String: Int] { return [:] }
-
-
let abc: Any
-
-
let abc: [Any: Int]
-
-
let abc: [String: Any]
-
-
class Foo: Bar {}
-
-
class Foo<T>: Bar {}
-
-
class Foo<T: Equatable>: Bar {}
-
-
class Foo<T, U>: Bar {}
-
-
class Foo<T: Equatable> {}
-
-
object.method(x: /* comment */ 5)
-
-
switch foo {
-case .bar:
-    _ = something()
-}
-
-
object.method(x: 5, y: "string")
-
-
object.method(x: 5, y:
-              "string")
-
-
object.method(5, y: "string")
-
-
func abc() { def(ghi: jkl) }
-
-
func abc(def: Void) { ghi(jkl: mno) }
-
-
class ABC { let def = ghi(jkl: mno) } }
-
-
func foo() { let dict = [1: 1] }
-
-
let aaa = Self.bbb ? Self.ccc : Self.ddd else {
-return nil
-Example("}
-
-
range.flatMap(file.syntaxMap.kinds(inByteRange:)) ?? []
-
-
@objc(receiveReply:)
-public class func receiveReply(_ reply: bad_instruction_exception_reply_t) -> CInt { 0 }
-
-
switch str {
-case "adlm", "adlam":             return .adlam
-case "aghb", "caucasianalbanian": return .caucasianAlbanian
-default:                          return nil
-}
-
-
precedencegroup PipelinePrecedence {
-  associativity: left
-}
-infix operator |> : PipelinePrecedence
-
-
switch scalar {
-  case 0x000A...0x000D /* LF ... CR */: return true
-  case 0x0085 /* NEXT LINE (NEL) */: return true
-  case 0x2028 /* LINE SEPARATOR */: return true
-  case 0x2029 /* PARAGRAPH SEPARATOR */: return true
-  default: return false
-}
-
-

Triggering Examples

-
let abc↓:Void
-
-
let abc↓:  Void
-
-
let abc↓ :Void
-
-
let abc↓ : Void
-
-
let abc↓ : [Void: Void]
-
-
let abc↓ : (Void, String, Int)
-
-
let abc↓ : ([Void], String, Int)
-
-
let abc↓ : [([Void], String, Int)]
-
-
let abc↓:  (Void, String, Int)
-
-
let abc↓:  ([Void], String, Int)
-
-
let abc↓:  [([Void], String, Int)]
-
-
let abc↓ :String="def"
-
-
let abc↓ :Int=0
-
-
let abc↓ :Int = 0
-
-
let abc↓:Int=0
-
-
let abc↓:Int = 0
-
-
let abc↓:Enum=Enum.Value
-
-
func abc(def↓:Void) {}
-
-
func abc(def↓:  Void) {}
-
-
func abc(def↓ :Void) {}
-
-
func abc(def↓ : Void) {}
-
-
func abc(def: Void, ghi↓ :Void) {}
-
-
let abc = [Void↓:Void]()
-
-
let abc = [Void↓ : Void]()
-
-
let abc = [Void↓:  Void]()
-
-
let abc = [Void↓ :  Void]()
-
-
let abc = [1: [3↓ : 2], 3: 4]
-
-
let abc = [1: [3↓ : 2], 3↓:  4]
-
-
let abc: [String↓ : Int]
-
-
let abc: [String↓:Int]
-
-
func foo(bar: [String↓ : Int]) {}
-
-
func foo(bar: [String↓:Int]) {}
-
-
func foo() -> [String↓ : Int] { return [:] }
-
-
func foo() -> [String↓:Int] { return [:] }
-
-
let abc↓ : Any
-
-
let abc: [Any↓ : Int]
-
-
let abc: [String↓ : Any]
-
-
class Foo↓ : Bar {}
-
-
class Foo↓:Bar {}
-
-
class Foo<T>↓ : Bar {}
-
-
class Foo<T>↓:Bar {}
-
-
class Foo<T, U>↓:Bar {}
-
-
class Foo<T: Equatable>↓:Bar {}
-
-
class Foo<T↓:Equatable> {}
-
-
class Foo<T↓ : Equatable> {}
-
-
object.method(x: 5, y↓ : "string")
-
-
object.method(x↓:5, y: "string")
-
-
object.method(x↓:  5, y: "string")
-
-
func abc() { def(ghi↓:jkl) }
-
-
func abc(def: Void) { ghi(jkl↓:mno) }
-
-
class ABC { let def = ghi(jkl↓:mno) } }
-
-
func foo() { let dict = [1↓ : 1] }
-
-
switch foo {
-case .bar↓ : return baz
-}
-
-
private var action↓:(() -> Void)?
-
- -
-
- - -
-
- - - diff --git a/comma.html b/comma.html deleted file mode 100644 index 4c52be74a..000000000 --- a/comma.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comma Spacing

- -

There should be no space before and one after any comma

- -
    -
  • Identifier: comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func abc(a: String, b: String) { }
-
-
abc(a: "string", b: "string"
-
-
enum a { case a, b, c }
-
-
func abc(
-  a: String,  // comment
-  bcd: String // comment
-) {
-}
-
-
func abc(
-  a: String,
-  bcd: String
-) {
-}
-
-
#imageLiteral(resourceName: "foo,bar,baz")
-
-
kvcStringBuffer.advanced(by: rootKVCLength)
-  .storeBytes(of: 0x2E /* '.' */, as: CChar.self)
-
-

Triggering Examples

-
func abc(a: String↓ ,b: String) { }
-
-
func abc(a: String↓ ,b: String↓ ,c: String↓ ,d: String) { }
-
-
abc(a: "string"↓,b: "string"
-
-
enum a { case a↓ ,b }
-
-
let result = plus(
-    first: 3↓ , // #683
-    second: 4
-)
-
-
Foo(
-  parameter: a.b.c,
-  tag: a.d,
-  value: a.identifier.flatMap { Int64($0) }↓ ,
-  reason: Self.abcd()
-)
-
-
return Foo(bar: .baz, title: fuzz,
-          message: My.Custom.message↓ ,
-          another: parameter, doIt: true,
-          alignment: .center)
-
-
Logger.logError("Hat is too large"↓,  info: [])
-
- -
-
- - -
-
- - - diff --git a/comma_inheritance.html b/comma_inheritance.html deleted file mode 100644 index 66a1239ba..000000000 --- a/comma_inheritance.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - comma_inheritance Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comma Inheritance Rule

- -

Use commas to separate types in inheritance lists

- -
    -
  • Identifier: comma_inheritance
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct A: Codable, Equatable {}
-
-
enum B: Codable, Equatable {}
-
-
class C: Codable, Equatable {}
-
-
protocol D: Codable, Equatable {}
-
-
typealias E = Equatable & Codable
-
-
func foo<T: Equatable & Codable>(_ param: T) {}
-
-
protocol G {
-    associatedtype Model: Codable, Equatable
-}
-
-

Triggering Examples

-
struct A: Codable↓ & Equatable {}
-
-
struct A: Codable↓  & Equatable {}
-
-
struct A: Codable↓&Equatable {}
-
-
struct A: Codable↓& Equatable {}
-
-
enum B: Codable↓ & Equatable {}
-
-
class C: Codable↓ & Equatable {}
-
-
protocol D: Codable↓ & Equatable {}
-
-
protocol G {
-    associatedtype Model: Codable↓ & Equatable
-}
-
- -
-
- - -
-
- - - diff --git a/comment_spacing.html b/comment_spacing.html deleted file mode 100644 index 128529c5a..000000000 --- a/comment_spacing.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - comment_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comment Spacing

- -

Prefer at least one space after slashes for comments

- -
    -
  • Identifier: comment_spacing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
// This is a comment
-
-
/// Triple slash comment
-
-
// Multiline double-slash
-// comment
-
-
/// Multiline triple-slash
-/// comment
-
-
/// Multiline triple-slash
-///   - This is indented
-
-
// - MARK: Mark comment
-
-
//: Swift Playground prose section
-
-
///////////////////////////////////////////////
-// Comment with some lines of slashes boxing it
-///////////////////////////////////////////////
-
-
//:#localized(key: "SwiftPlaygroundLocalizedProse")
-
-
/* Asterisk comment */
-
-
/*
-    Multiline asterisk comment
-*/
-
-
/*:
-    Multiline Swift Playground prose section
-*/
-
-
/*#-editable-code Swift Playground editable area*/default/*#-end-editable-code*/
-
-

Triggering Examples

-
//↓Something
-
-
//↓MARK
-
-
//↓👨‍👨‍👦‍👦Something
-
-
func a() {
-    //↓This needs refactoring
-    print("Something")
-}
-//↓We should improve above function
-
-
///↓This is a comment
-
-
/// Multiline triple-slash
-///↓This line is incorrect, though
-
-
//↓- MARK: Mark comment
-
-
//:↓Swift Playground prose section
-
- -
-
- - -
-
- - - diff --git a/compiler_protocol_init.html b/compiler_protocol_init.html deleted file mode 100644 index 29918677a..000000000 --- a/compiler_protocol_init.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - compiler_protocol_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Compiler Protocol Init

- -

The initializers declared in compiler protocols such as ExpressibleByArrayLiteral shouldn’t be called directly.

- -
    -
  • Identifier: compiler_protocol_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let set: Set<Int> = [1, 2]
-
-
let set = Set(array)
-
-

Triggering Examples

-
let set = ↓Set(arrayLiteral: 1, 2)
-
-
let set = ↓Set (arrayLiteral: 1, 2)
-
-
let set = ↓Set.init(arrayLiteral: 1, 2)
-
-
let set = ↓Set.init(arrayLiteral : 1, 2)
-
- -
-
- - -
-
- - - diff --git a/computed_accessors_order.html b/computed_accessors_order.html deleted file mode 100644 index 38193d1dc..000000000 --- a/computed_accessors_order.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - computed_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Computed Accessors Order

- -

Getter and setters in computed properties and subscripts should be in a consistent order.

- -
    -
  • Identifier: computed_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -order - -get_set -
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
protocol Foo {
-    var foo: Int { set get }
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-    set { print(newValue) }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-    set {
-        self.count = newValue
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { set get }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓set { print(newValue) }
-    get { return 20 }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓set { print(bar) }
-        get { _bar }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        mutating get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓set {
-            print(i)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/conditional_returns_on_newline.html b/conditional_returns_on_newline.html deleted file mode 100644 index cddd6b199..000000000 --- a/conditional_returns_on_newline.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - conditional_returns_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Conditional Returns on Newline

- -

Conditional statements should always return on the next line

- -
    -
  • Identifier: conditional_returns_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -if_only - -false -
  • -
-

Non Triggering Examples

-
guard true else {
- return true
-}
-
-
guard true,
- let x = true else {
- return true
-}
-
-
if true else {
- return true
-}
-
-
if true,
- let x = true else {
- return true
-}
-
-
if textField.returnKeyType == .Next {
-
-
if true { // return }
-
-
guard something
-else { return }
-
-

Triggering Examples

-
↓guard true else { return }
-
-
↓if true { return }
-
-
↓if true { break } else { return }
-
-
↓if true { break } else {       return }
-
-
↓if true { return "YES" } else { return "NO" }
-
-
↓guard condition else { XCTFail(); return }
-
- -
-
- - -
-
- - - diff --git a/contains_over_filter_count.html b/contains_over_filter_count.html deleted file mode 100644 index 41988c2aa..000000000 --- a/contains_over_filter_count.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - contains_over_filter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over Filter Count

- -

Prefer contains over comparing filter(where:).count to 0

- -
    -
  • Identifier: contains_over_filter_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 01
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 01
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 01
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
let result = myList.contains(10)
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count > 0
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count > 0
-
-
let result = ↓myList.filter(where: someFunction).count > 0
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count == 0
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count == 0
-
-
let result = ↓myList.filter(where: someFunction).count == 0
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count != 0
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count != 0
-
-
let result = ↓myList.filter(where: someFunction).count != 0
-
- -
-
- - -
-
- - - diff --git a/contains_over_filter_is_empty.html b/contains_over_filter_is_empty.html deleted file mode 100644 index 6a2f60bdc..000000000 --- a/contains_over_filter_is_empty.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - contains_over_filter_is_empty Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over Filter is Empty

- -

Prefer contains over using filter(where:).isEmpty

- -
    -
  • Identifier: contains_over_filter_is_empty
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
let result = myList.contains(10)
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
let result = !↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.isEmpty
-
-
let result = ↓myList.filter(where: someFunction).isEmpty
-
- -
-
- - -
-
- - - diff --git a/contains_over_first_not_nil.html b/contains_over_first_not_nil.html deleted file mode 100644 index a5c3019a9..000000000 --- a/contains_over_first_not_nil.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - contains_over_first_not_nil Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over First not Nil

- -

Prefer contains over first(where:) != nil and firstIndex(where:) != nil.

- -
    -
  • Identifier: contains_over_first_not_nil
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let first = myList.first(where: { $0 % 2 == 0 })
-
-
let first = myList.first { $0 % 2 == 0 }
-
-
let firstIndex = myList.firstIndex(where: { $0 % 2 == 0 })
-
-
let firstIndex = myList.firstIndex { $0 % 2 == 0 }
-
-

Triggering Examples

-
↓myList.first { $0 % 2 == 0 } != nil
-
-
↓myList.first(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.first(where: someFunction) != nil
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } != nil
-
-
(↓myList.first { $0 % 2 == 0 }) != nil
-
-
↓myList.first { $0 % 2 == 0 } == nil
-
-
↓myList.first(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.first(where: someFunction) == nil
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } == nil
-
-
(↓myList.first { $0 % 2 == 0 }) == nil
-
-
↓myList.firstIndex { $0 % 2 == 0 } != nil
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.firstIndex(where: someFunction) != nil
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } != nil
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) != nil
-
-
↓myList.firstIndex { $0 % 2 == 0 } == nil
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.firstIndex(where: someFunction) == nil
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } == nil
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) == nil
-
- -
-
- - -
-
- - - diff --git a/contains_over_range_nil_comparison.html b/contains_over_range_nil_comparison.html deleted file mode 100644 index 485df96e6..000000000 --- a/contains_over_range_nil_comparison.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - contains_over_range_nil_comparison Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over Range Comparison to Nil

- -

Prefer contains over range(of:) != nil and range(of:) == nil

- -
    -
  • Identifier: contains_over_range_nil_comparison
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let range = myString.range(of: "Test")
-
-
myString.contains("Test")
-
-
!myString.contains("Test")
-
-
resourceString.range(of: rule.regex, options: .regularExpression) != nil
-
-

Triggering Examples

-
↓myString.range(of: "Test") != nil
-
-
↓myString.range(of: "Test") == nil
-
- -
-
- - -
-
- - - diff --git a/contrasted_opening_brace.html b/contrasted_opening_brace.html deleted file mode 100644 index 364ad5e00..000000000 --- a/contrasted_opening_brace.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - contrasted_opening_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contrasted Opening Brace

- -

The correct positioning of braces that introduce a block of code or member list is highly controversial. No matter which style is preferred, consistency is key. Apart from different tastes, the positioning of braces can also have a significant impact on the readability of the code, especially for visually impaired developers. This rule ensures that braces are on a separate line after the declaration to contrast the code block from the rest of the declaration. Comments between the declaration and the opening brace are respected. Check out the opening_brace rule for a different style.

- -
    -
  • Identifier: contrasted_opening_brace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func abc()
-{
-}
-
-
[].map()
-{
-    $0
-}
-
-
[].map(
-    {
-    }
-)
-
-
if let a = b
-{
-}
-
-
while a == b
-{
-}
-
-
guard let a = b else
-{
-}
-
-
struct Rule
-{
-}
-
-
struct Parent
-{
-    struct Child
-    {
-        let foo: Int
-    }
-}
-
-
func f(rect: CGRect)
-{
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }()
-}
-
-
func f(rect: CGRect) -> () -> Void
-{
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }
-}
-
-
func f() -> () -> Void
-{
-    {}
-}
-
-
@MyProperty class Rule:
-  NSObject
-{
-  var a: String
-  {
-    return ""
-  }
-}
-
-
self.foo(
-    (
-        "String parameter",
-        { "Do something here" }
-    )
-)
-
-
let pattern = #/(\{(?<key>\w+)\})/#
-
-
if c
-{}
-else
-{}
-
-
    if c /* comment */
-    {
-        return
-    }
-
-
if c1
-{
-  return
-} else if c2
-{
-  return
-} else if c3
-{
-  return
-}
-
-
let a = f.map
-{ a in
-    a
-}
-
-

Triggering Examples

-
func abc()↓{
-}
-
-
func abc() { }
-
-
func abc(a: A,
-         b: B) {}
-
-
[].map { $0 }
-
-
struct OldContentView: View ↓{
-  @State private var showOptions = false
-
-  var body: some View ↓{
-    Button(action: {
-      self.showOptions.toggle()
-    })↓{
-      Image(systemName: "gear")
-    } label: ↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
class Rule
-{
-  var a: String↓{
-    return ""
-  }
-}
-
-
@MyProperty class Rule
-{
-  var a: String
-  {
-    willSet↓{
-
-    }
-    didSet  ↓{
-
-    }
-  }
-}
-
-
precedencegroup Group ↓{
-  assignment: true
-}
-
-
if
-    "test".isEmpty ↓{
-    // code here
-}
-
-
if c  ↓{}
-else /* comment */  ↓{}
-
-
if c
-  ↓{
-    // code here
-}
-
-
if c1 ↓{
-  return
-} else if c2↓{
-  return
-} else if c3
- ↓{
-  return
-}
-
-
func f()
-{
-    return a.map
-            ↓{ $0 }
-}
-
-
a ↓{
-    $0
-} b: ↓{
-    $1
-}
-
- -
-
- - -
-
- - - diff --git a/control_statement.html b/control_statement.html deleted file mode 100644 index a0210cbe0..000000000 --- a/control_statement.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - control_statement Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Control Statement

- -

if, for, guard, switch, while, and catch statements shouldn’t unnecessarily wrap their conditionals or arguments in parentheses

- -
    -
  • Identifier: control_statement
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if condition {}
-
-
if (a, b) == (0, 1) {}
-
-
if (a || b) && (c || d) {}
-
-
if (min...max).contains(value) {}
-
-
if renderGif(data) {}
-
-
renderGif(data)
-
-
guard condition else {}
-
-
while condition {}
-
-
do {} while condition {}
-
-
do { ; } while condition {}
-
-
switch foo {}
-
-
do {} catch let error as NSError {}
-
-
foo().catch(all: true) {}
-
-
if max(a, b) < c {}
-
-
switch (lhs, rhs) {}
-
-
if (f() { g() {} }) {}
-
-
if (a + f() {} == 1) {}
-
-
if ({ true }()) {}
-
-

Triggering Examples

-
↓if (condition) {}
-
-
↓if(condition) {}
-
-
↓if (condition == endIndex) {}
-
-
↓if ((a || b) && (c || d)) {}
-
-
↓if ((min...max).contains(value)) {}
-
-
↓guard (condition) else {}
-
-
↓while (condition) {}
-
-
↓while(condition) {}
-
-
do { ; } ↓while(condition) {}
-
-
do { ; } ↓while (condition) {}
-
-
↓switch (foo) {}
-
-
do {} ↓catch(let error as NSError) {}
-
-
↓if (max(a, b) < c) {}
-
- -
-
- - -
-
- - - diff --git a/convenience_type.html b/convenience_type.html deleted file mode 100644 index de2057d5e..000000000 --- a/convenience_type.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - convenience_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Convenience Type

- -

Types used for hosting only static members should be implemented as a caseless enum to avoid instantiation

- -
    -
  • Identifier: convenience_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Math { // enum
-  public static let pi = 3.14
-}
-
-
// class with inheritance
-class MathViewController: UIViewController {
-  public static let pi = 3.14
-}
-
-
@objc class Math: NSObject { // class visible to Obj-C
-  public static let pi = 3.14
-}
-
-
struct Math { // type with non-static declarations
-  public static let pi = 3.14
-  public let randomNumber = 2
-}
-
-
class DummyClass {}
-
-
class Foo: NSObject { // class with Obj-C class property
-    class @objc let foo = 1
-}
-
-
class Foo: NSObject { // class with Obj-C static property
-    static @objc let foo = 1
-}
-
-
class Foo { // @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
class Foo { // @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
@objcMembers class Foo { // @objc static func can't exist on an enum
-   static func foo() {}
-}
-
-
final class Foo { // final class, but @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
final class Foo { // final class, but @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
@globalActor actor MyActor {
-  static let shared = MyActor()
-}
-
-

Triggering Examples

-
↓struct Math {
-  public static let pi = 3.14
-}
-
-
↓struct Math {
-  public static let pi = 3.14
-  @available(*, unavailable) init() {}
-}
-
-
final ↓class Foo { // final class can't be inherited
-    class let foo = 1
-}
-
-
↓class Foo {
-    class let foo = 1
-}
-
-
↓class Foo {
-    final class let foo = 1
-}
-
-
↓class SomeClass {
-    static func foo() {}
-}
-
- -
-
- - -
-
- - - diff --git a/css/highlight.css b/css/highlight.css deleted file mode 100644 index c170357ce..000000000 --- a/css/highlight.css +++ /dev/null @@ -1,202 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -/* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight .c { - color: #999988; - font-style: italic; } - -.highlight .err { - color: #a61717; - background-color: #e3d2d2; } - -.highlight .k { - color: #000000; - font-weight: bold; } - -.highlight .o { - color: #000000; - font-weight: bold; } - -.highlight .cm { - color: #999988; - font-style: italic; } - -.highlight .cp { - color: #999999; - font-weight: bold; } - -.highlight .c1 { - color: #999988; - font-style: italic; } - -.highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - -.highlight .gd { - color: #000000; - background-color: #ffdddd; } - -.highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - -.highlight .ge { - color: #000000; - font-style: italic; } - -.highlight .gr { - color: #aa0000; } - -.highlight .gh { - color: #999999; } - -.highlight .gi { - color: #000000; - background-color: #ddffdd; } - -.highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - -.highlight .go { - color: #888888; } - -.highlight .gp { - color: #555555; } - -.highlight .gs { - font-weight: bold; } - -.highlight .gu { - color: #aaaaaa; } - -.highlight .gt { - color: #aa0000; } - -.highlight .kc { - color: #000000; - font-weight: bold; } - -.highlight .kd { - color: #000000; - font-weight: bold; } - -.highlight .kp { - color: #000000; - font-weight: bold; } - -.highlight .kr { - color: #000000; - font-weight: bold; } - -.highlight .kt { - color: #445588; } - -.highlight .m { - color: #009999; } - -.highlight .s { - color: #d14; } - -.highlight .na { - color: #008080; } - -.highlight .nb { - color: #0086B3; } - -.highlight .nc { - color: #445588; - font-weight: bold; } - -.highlight .no { - color: #008080; } - -.highlight .ni { - color: #800080; } - -.highlight .ne { - color: #990000; - font-weight: bold; } - -.highlight .nf { - color: #990000; } - -.highlight .nn { - color: #555555; } - -.highlight .nt { - color: #000080; } - -.highlight .nv { - color: #008080; } - -.highlight .ow { - color: #000000; - font-weight: bold; } - -.highlight .w { - color: #bbbbbb; } - -.highlight .mf { - color: #009999; } - -.highlight .mh { - color: #009999; } - -.highlight .mi { - color: #009999; } - -.highlight .mo { - color: #009999; } - -.highlight .sb { - color: #d14; } - -.highlight .sc { - color: #d14; } - -.highlight .sd { - color: #d14; } - -.highlight .s2 { - color: #d14; } - -.highlight .se { - color: #d14; } - -.highlight .sh { - color: #d14; } - -.highlight .si { - color: #d14; } - -.highlight .sx { - color: #d14; } - -.highlight .sr { - color: #009926; } - -.highlight .s1 { - color: #d14; } - -.highlight .ss { - color: #990073; } - -.highlight .bp { - color: #999999; } - -.highlight .vc { - color: #008080; } - -.highlight .vg { - color: #008080; } - -.highlight .vi { - color: #008080; } - -.highlight .il { - color: #009999; } diff --git a/css/jazzy.css b/css/jazzy.css deleted file mode 100644 index 9d4b08b8c..000000000 --- a/css/jazzy.css +++ /dev/null @@ -1,405 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -*, *:before, *:after { - box-sizing: inherit; } - -body { - margin: 0; - background: #fff; - color: #333; - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .2px; - -webkit-font-smoothing: antialiased; - box-sizing: border-box; } - -h1 { - font-size: 2rem; - font-weight: 700; - margin: 1.275em 0 0.6em; } - -h2 { - font-size: 1.75rem; - font-weight: 700; - margin: 1.275em 0 0.3em; } - -h3 { - font-size: 1.5rem; - font-weight: 700; - margin: 1em 0 0.3em; } - -h4 { - font-size: 1.25rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h5 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h6 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; - color: #777; } - -p { - margin: 0 0 1em; } - -ul, ol { - padding: 0 0 0 2em; - margin: 0 0 0.85em; } - -blockquote { - margin: 0 0 0.85em; - padding: 0 15px; - color: #858585; - border-left: 4px solid #e5e5e5; } - -img { - max-width: 100%; } - -a { - color: #4183c4; - text-decoration: none; } - a:hover, a:focus { - outline: 0; - text-decoration: underline; } - a.discouraged { - text-decoration: line-through; } - a.discouraged:hover, a.discouraged:focus { - text-decoration: underline line-through; } - -table { - background: #fff; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - overflow: auto; - margin: 0 0 0.85em; } - -tr:nth-child(2n) { - background-color: #fbfbfb; } - -th, td { - padding: 6px 13px; - border: 1px solid #ddd; } - -hr { - height: 1px; - border: none; - background-color: #ddd; } - -pre { - margin: 0 0 1.275em; - padding: .85em 1em; - overflow: auto; - background: #f7f7f7; - font-size: .85em; - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { - background: #f7f7f7; - padding: .2em; } - .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { - letter-spacing: -.2em; - content: "\00a0"; } - -pre code { - padding: 0; - white-space: pre; } - -.content-wrapper { - display: flex; - flex-direction: column; } - @media (min-width: 768px) { - .content-wrapper { - flex-direction: row; } } -.header { - display: flex; - padding: 8px; - font-size: 0.875em; - background: #444; - color: #999; } - -.header-col { - margin: 0; - padding: 0 8px; } - -.header-col--primary { - flex: 1; } - -.header-link { - color: #fff; } - -.header-icon { - padding-right: 2px; - vertical-align: -3px; - height: 16px; } - -.breadcrumbs { - font-size: 0.875em; - padding: 8px 16px; - margin: 0; - background: #fbfbfb; - border-bottom: 1px solid #ddd; } - -.carat { - height: 10px; - margin: 0 5px; } - -.navigation { - order: 2; } - @media (min-width: 768px) { - .navigation { - order: 1; - width: 25%; - max-width: 300px; - padding-bottom: 64px; - overflow: hidden; - word-wrap: normal; - background: #fbfbfb; - border-right: 1px solid #ddd; } } -.nav-groups { - list-style-type: none; - padding-left: 0; } - -.nav-group-name { - border-bottom: 1px solid #ddd; - padding: 8px 0 8px 16px; } - -.nav-group-name-link { - color: #333; } - -.nav-group-tasks { - margin: 8px 0; - padding: 0 0 0 8px; } - -.nav-group-task { - font-size: 1em; - list-style-type: none; - white-space: nowrap; } - -.nav-group-task-link { - color: #808080; } - -.main-content { - order: 1; } - @media (min-width: 768px) { - .main-content { - order: 2; - flex: 1; - padding-bottom: 60px; } } -.section { - padding: 0 32px; - border-bottom: 1px solid #ddd; } - -.section-content { - max-width: 834px; - margin: 0 auto; - padding: 16px 0; } - -.section-name { - color: #666; - display: block; } - .section-name p { - margin-bottom: inherit; } - -.declaration .highlight { - overflow-x: initial; - padding: 8px 0; - margin: 0; - background-color: transparent; - border: none; } - -.task-group-section { - border-top: 1px solid #ddd; } - -.task-group { - padding-top: 0px; } - -.task-name-container a[name]:before { - content: ""; - display: block; } - -.section-name-container { - position: relative; } - .section-name-container .section-name-link { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin-bottom: 0; } - .section-name-container .section-name { - position: relative; - pointer-events: none; - z-index: 1; } - .section-name-container .section-name a { - pointer-events: auto; } - -.item-container { - padding: 0; } - -.item { - padding-top: 8px; - width: 100%; - list-style-type: none; } - .item a[name]:before { - content: ""; - display: block; } - .item .token, .item .direct-link { - display: inline-block; - text-indent: -20px; - padding-left: 3px; - margin-left: 20px; - font-size: 1rem; } - -.declaration-note { - font-size: .85em; - color: #808080; - font-style: italic; } - -.pointer-container { - border-bottom: 1px solid #ddd; - left: -23px; - padding-bottom: 13px; - position: relative; - width: 110%; } - -.pointer { - left: 21px; - top: 7px; - display: block; - position: absolute; - width: 12px; - height: 12px; - border-left: 1px solid #ddd; - border-top: 1px solid #ddd; - background: #fff; - transform: rotate(45deg); } - -.height-container { - display: none; - position: relative; - width: 100%; - overflow: hidden; } - .height-container .section { - background: #fff; - border: 1px solid #ddd; - border-top-width: 0; - padding-top: 10px; - padding-bottom: 5px; - padding: 8px 16px; } - -.aside, .language { - padding: 6px 12px; - margin: 12px 0; - border-left: 5px solid #dddddd; - overflow-y: hidden; } - .aside .aside-title, .language .aside-title { - font-size: 9px; - letter-spacing: 2px; - text-transform: uppercase; - padding-bottom: 0; - margin: 0; - color: #aaa; - -webkit-user-select: none; } - .aside p:last-child, .language p:last-child { - margin-bottom: 0; } - -.language { - border-left: 5px solid #cde9f4; } - .language .aside-title { - color: #4183c4; } - -.aside-warning, .aside-deprecated, .aside-unavailable { - border-left: 5px solid #ff6666; } - .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { - color: #ff0000; } - -.graybox { - border-collapse: collapse; - width: 100%; } - .graybox p { - margin: 0; - word-break: break-word; - min-width: 50px; } - .graybox td { - border: 1px solid #ddd; - padding: 5px 25px 5px 10px; - vertical-align: middle; } - .graybox tr td:first-of-type { - text-align: right; - padding: 7px; - vertical-align: top; - word-break: normal; - width: 40px; } - -.slightly-smaller { - font-size: 0.9em; } - -.footer { - padding: 8px 16px; - background: #444; - color: #ddd; - font-size: 0.8em; } - .footer p { - margin: 8px 0; } - .footer a { - color: #fff; } - -html.dash .header, html.dash .breadcrumbs, html.dash .navigation { - display: none; } - -html.dash .height-container { - display: block; } - -form[role=search] input { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 24px; - padding: 0 10px; - margin: 0; - border: none; - border-radius: 1em; } - .loading form[role=search] input { - background: white url(../img/spinner.gif) center right 4px no-repeat; } - -form[role=search] .tt-menu { - margin: 0; - min-width: 300px; - background: #fbfbfb; - color: #333; - border: 1px solid #ddd; } - -form[role=search] .tt-highlight { - font-weight: bold; } - -form[role=search] .tt-suggestion { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 0 8px; } - form[role=search] .tt-suggestion span { - display: table-cell; - white-space: nowrap; } - form[role=search] .tt-suggestion .doc-parent-name { - width: 100%; - text-align: right; - font-weight: normal; - font-size: 0.9em; - padding-left: 16px; } - -form[role=search] .tt-suggestion:hover, -form[role=search] .tt-suggestion.tt-cursor { - cursor: pointer; - background-color: #4183c4; - color: #fff; } - -form[role=search] .tt-suggestion:hover .doc-parent-name, -form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { - color: #fff; } diff --git a/custom_rules.html b/custom_rules.html deleted file mode 100644 index dd78a7e58..000000000 --- a/custom_rules.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - custom_rules Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Custom Rules

- -

Create custom rules by providing a regex string. Optionally specify what syntax kinds to match against, the severity level, and what message to display.

- -
    -
  • Identifier: custom_rules
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
- -
-
- - -
-
- - - diff --git a/cyclomatic_complexity.html b/cyclomatic_complexity.html deleted file mode 100644 index 7c4a28057..000000000 --- a/cyclomatic_complexity.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - cyclomatic_complexity Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Cyclomatic Complexity

- -

Complexity of function bodies should be limited.

- -
    -
  • Identifier: cyclomatic_complexity
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -10 -
    -error - -20 -
    -ignores_case_statements - -false -
  • -
-

Non Triggering Examples

-
func f1() {
-    if true {
-        for _ in 1..5 { }
-    }
-    if false { }
-}
-
-
func f(code: Int) -> Int {
-    switch code {
-    case 0: fallthrough
-    case 1: return 1
-    case 2: return 1
-    case 3: return 1
-    case 4: return 1
-    case 5: return 1
-    case 6: return 1
-    case 7: return 1
-    case 8: return 1
-    default: return 1
-    }
-}
-
-
func f1() {
-    if true {}; if true {}; if true {}; if true {}; if true {}; if true {}
-    func f2() {
-        if true {}; if true {}; if true {}; if true {}; if true {}
-    }
-}
-
-

Triggering Examples

-
↓func f1() {
-    if true {
-        if true {
-            if false {}
-        }
-    }
-    if false {}
-    let i = 0
-    switch i {
-        case 1: break
-        case 2: break
-        case 3: break
-        case 4: break
-        default: break
-    }
-    for _ in 1...5 {
-        guard true else {
-            return
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/deployment_target.html b/deployment_target.html deleted file mode 100644 index a43e94043..000000000 --- a/deployment_target.html +++ /dev/null @@ -1,554 +0,0 @@ - - - - deployment_target Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Deployment Target

- -

Availability checks or attributes shouldn’t be using older versions that are satisfied by the deployment target.

- -
    -
  • Identifier: deployment_target
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -iOSApplicationExtension_deployment_target - -7.0 -
    -iOS_deployment_target - -7.0 -
    -macOSApplicationExtension_deployment_target - -10.9 -
    -macOS_deployment_target - -10.9 -
    -tvOSApplicationExtension_deployment_target - -9.0 -
    -tvOS_deployment_target - -9.0 -
    -watchOSApplicationExtension_deployment_target - -1.0 -
    -watchOS_deployment_target - -1.0 -
  • -
-

Non Triggering Examples

-
@available(iOS 12.0, *)
-class A {}
-
-
@available(iOSApplicationExtension 13.0, *)
-class A {}
-
-
@available(watchOS 4.0, *)
-class A {}
-
-
@available(watchOSApplicationExtension 4.0, *)
-class A {}
-
-
@available(swift 3.0.2)
-class A {}
-
-
class A {}
-
-
if #available(iOS 10.0, *) {}
-
-
if #available(iOS 10, *) {}
-
-
guard #available(iOS 12.0, *) else { return }
-
-
#if #unavailable(iOS 15.0) {}
-
-
#guard #unavailable(iOS 15.0) {} else { return }
-
-

Triggering Examples

-
↓@available(iOS 6.0, *)
-class A {}
-
-
↓@available(iOSApplicationExtension 6.0, *)
-class A {}
-
-
↓@available(iOS 7.0, *)
-class A {}
-
-
↓@available(iOS 6, *)
-class A {}
-
-
↓@available(iOS 6.0, macOS 10.12, *)
- class A {}
-
-
↓@available(macOS 10.12, iOS 6.0, *)
- class A {}
-
-
↓@available(macOS 10.7, *)
-class A {}
-
-
↓@available(macOSApplicationExtension 10.7, *)
-class A {}
-
-
↓@available(OSX 10.7, *)
-class A {}
-
-
↓@available(watchOS 0.9, *)
-class A {}
-
-
↓@available(watchOSApplicationExtension 0.9, *)
-class A {}
-
-
↓@available(tvOS 8, *)
-class A {}
-
-
↓@available(tvOSApplicationExtension 8, *)
-class A {}
-
-
if ↓#available(iOS 6.0, *) {}
-
-
if ↓#available(iOS 6, *) {}
-
-
guard ↓#available(iOS 6.0, *) else { return }
-
-
if ↓#unavailable(iOS 7.0) {}
-
-
if ↓#unavailable(iOS 6.9) {}
-
-
guard ↓#unavailable(iOS 7.0) {} else { return }
-
- -
-
- - -
-
- - - diff --git a/direct_return.html b/direct_return.html deleted file mode 100644 index e4a168e86..000000000 --- a/direct_return.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - direct_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Direct Return

- -

Directly return the expression instead of assigning it to a variable first

- -
    -
  • Identifier: direct_return
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func f() -> Int {
-    let b = 2
-    let a = 1
-    return b
-}
-
-
struct S {
-    var a: Int {
-        var b = 1
-        b = 2
-        return b
-    }
-}
-
-
func f() -> Int {
-    let b = 2
-    f()
-    return b
-}
-
-
func f() -> Int {
-    { i in
-        let b = 2
-        return i
-    }(1)
-}
-
-

Triggering Examples

-
func f() -> Int {
-    let ↓b = 2
-    return b
-}
-
-
struct S {
-    var a: Int {
-        var ↓b = 1
-        // comment
-        return b
-    }
-}
-
-
func f() -> Bool {
-    let a = 1, ↓b = true
-    return b
-}
-
-
func f() -> Int {
-    { _ in
-        let ↓b = 2
-        return b
-    }(1)
-}
-
-
func f(i: Int) -> Int {
-    if i > 1 {
-        let ↓a = 2
-        return a
-    } else {
-        let ↓b = 2, a = 1
-        return b
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/discarded_notification_center_observer.html b/discarded_notification_center_observer.html deleted file mode 100644 index f7486bd79..000000000 --- a/discarded_notification_center_observer.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - discarded_notification_center_observer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discarded Notification Center Observer

- -

When registering for a notification using a block, the opaque observer that is returned should be stored so it can be removed later

- -
    -
  • Identifier: discarded_notification_center_observer
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
func foo() -> Any {
-    return nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
func foo() -> Any {
-    nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
var obs: [String: Any?] = []
-obs["foo"] = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
func foo(_ notify: Any) {
-   obs.append(notify)
-}
-foo(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
var obs: [NSObjectProtocol] = [
-   nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }),
-   nc.addObserver(forName: .CKAccountChanged, object: nil, queue: nil, using: { })
-]
-
-
names.map { self.notificationCenter.addObserver(forName: $0, object: object, queue: queue, using: block) }
-
-
f { return nc.addObserver(forName: $0, object: object, queue: queue, using: block) }
-
-

Triggering Examples

-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
_ = ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
@discardableResult func foo() -> Any {
-   return ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
class C {
-    var i: Int {
-        set { ↓notificationCenter.addObserver(forName: $0, object: object, queue: queue, using: block) }
-        get {
-            ↓notificationCenter.addObserver(forName: $0, object: object, queue: queue, using: block)
-            return 2
-        }
-    }
-}
-
-
f {
-    ↓nc.addObserver(forName: $0, object: object, queue: queue) {}
-    return 2
-}
-
-
func foo() -> Any {
-    if cond {
-        ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/discouraged_assert.html b/discouraged_assert.html deleted file mode 100644 index a2a8d3f12..000000000 --- a/discouraged_assert.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - discouraged_assert Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Assert

- -

Prefer assertionFailure() and/or preconditionFailure() over assert(false)

- -
    -
  • Identifier: discouraged_assert
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
assert(true)
-
-
assert(true, "foobar")
-
-
assert(true, "foobar", file: "toto", line: 42)
-
-
assert(false || true)
-
-
XCTAssert(false)
-
-

Triggering Examples

-
↓assert(false)
-
-
↓assert(false, "foobar")
-
-
↓assert(false, "foobar", file: "toto", line: 42)
-
-
↓assert(   false    , "foobar")
-
- -
-
- - -
-
- - - diff --git a/discouraged_direct_init.html b/discouraged_direct_init.html deleted file mode 100644 index 0e4f5a9aa..000000000 --- a/discouraged_direct_init.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - discouraged_direct_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Direct Initialization

- -

Discouraged direct initialization of types that can be harmful

- -
    -
  • Identifier: discouraged_direct_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -types - -[“Bundle”, “Bundle.init”, “NSError”, “NSError.init”, “UIDevice”, “UIDevice.init”] -
  • -
-

Non Triggering Examples

-
let foo = UIDevice.current
-
-
let foo = Bundle.main
-
-
let foo = Bundle(path: "bar")
-
-
let foo = Bundle(identifier: "bar")
-
-
let foo = Bundle.init(path: "bar")
-
-
let foo = Bundle.init(identifier: "bar")
-
-
let foo = NSError(domain: "bar", code: 0)
-
-
let foo = NSError.init(domain: "bar", code: 0)
-
-
func testNSError()
-
-

Triggering Examples

-
↓UIDevice()
-
-
↓Bundle()
-
-
let foo = ↓UIDevice()
-
-
let foo = ↓Bundle()
-
-
let foo = ↓NSError()
-
-
let foo = bar(bundle: ↓Bundle(), device: ↓UIDevice(), error: ↓NSError())
-
-
↓UIDevice.init()
-
-
↓Bundle.init()
-
-
↓NSError.init()
-
-
let foo = ↓UIDevice.init()
-
-
let foo = ↓Bundle.init()
-
-
let foo = bar(bundle: ↓Bundle.init(), device: ↓UIDevice.init(), error: ↓NSError.init())
-
- -
-
- - -
-
- - - diff --git a/discouraged_none_name.html b/discouraged_none_name.html deleted file mode 100644 index 6d3b6eaf7..000000000 --- a/discouraged_none_name.html +++ /dev/null @@ -1,540 +0,0 @@ - - - - discouraged_none_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged None Name

- -

Enum cases and static members named none are discouraged as they can conflict with Optional<T>.none.

- -
    -
  • Identifier: discouraged_none_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum MyEnum {
-    case nOne
-}
-
-
enum MyEnum {
-    case _none
-}
-
-
enum MyEnum {
-    case none_
-}
-
-
enum MyEnum {
-    case none(Any)
-}
-
-
enum MyEnum {
-    case nonenone
-}
-
-
class MyClass {
-    class var nonenone: MyClass { MyClass() }
-}
-
-
class MyClass {
-    static var nonenone = MyClass()
-}
-
-
class MyClass {
-    static let nonenone = MyClass()
-}
-
-
struct MyStruct {
-    static var nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    static let nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    let none = MyStruct()
-}
-
-
struct MyStruct {
-    var none = MyStruct()
-}
-
-
class MyClass {
-    let none = MyClass()
-}
-
-
class MyClass {
-    var none = MyClass()
-}
-
-

Triggering Examples

-
enum MyEnum {
-    case ↓none
-}
-
-
enum MyEnum {
-    case a, ↓none
-}
-
-
enum MyEnum {
-    case ↓none, b
-}
-
-
enum MyEnum {
-    case a, ↓none, b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-}
-
-
enum MyEnum {
-    case ↓none
-    case b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-    case b
-}
-
-
class MyClass {
-    ↓static let none = MyClass()
-}
-
-
class MyClass {
-    ↓static let none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓static var none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓class var none: MyClass { MyClass() }
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var a = MyStruct(), none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct(), a = MyStruct()
-}
-
- -
-
- - -
-
- - - diff --git a/discouraged_object_literal.html b/discouraged_object_literal.html deleted file mode 100644 index cf075b337..000000000 --- a/discouraged_object_literal.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - discouraged_object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Object Literal

- -

Prefer initializers over object literals

- -
    -
  • Identifier: discouraged_object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -image_literal - -true -
    -color_literal - -true -
  • -
-

Non Triggering Examples

-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓#imageLiteral(resourceName: "image.jpg")
-
-
let color = ↓#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
- -
-
- - -
-
- - - diff --git a/discouraged_optional_boolean.html b/discouraged_optional_boolean.html deleted file mode 100644 index 29687f8a0..000000000 --- a/discouraged_optional_boolean.html +++ /dev/null @@ -1,796 +0,0 @@ - - - - discouraged_optional_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Boolean

- -

Prefer non-optional booleans over optional booleans

- -
    -
  • Identifier: discouraged_optional_boolean
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var foo: Bool
-
-
var foo: [String: Bool]
-
-
var foo: [Bool]
-
-
let foo: Bool = true
-
-
let foo: Bool = false
-
-
let foo: [String: Bool] = [:]
-
-
let foo: [Bool] = []
-
-
var foo: Bool { return true }
-
-
let foo: Bool { return false }()
-
-
func foo() -> Bool {}
-
-
func foo() -> [String: Bool] {}
-
-
func foo() -> ([Bool]) -> String {}
-
-
func foo(input: Bool = true) {}
-
-
func foo(input: [String: Bool] = [:]) {}
-
-
func foo(input: [Bool] = []) {}
-
-
class Foo {
-    func foo() -> Bool {}
-}
-
-
class Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
class Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> Bool {}
-}
-
-
struct Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
struct Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> Bool {}
-}
-
-
enum Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
enum Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
class Foo {
-    func foo(input: Bool = true) {}
-}
-
-
class Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
struct Foo {
-    func foo(input: Bool = true) {}
-}
-
-
struct Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
enum Foo {
-    func foo(input: Bool = true) {}
-}
-
-
enum Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-

Triggering Examples

-
var foo: ↓Bool?
-
-
var foo: [String: ↓Bool?]
-
-
var foo: [↓Bool?]
-
-
let foo: ↓Bool? = nil
-
-
let foo: [String: ↓Bool?] = [:]
-
-
let foo: [↓Bool?] = []
-
-
let foo = ↓Optional.some(false)
-
-
let foo = ↓Optional.some(true)
-
-
var foo: ↓Bool? { return nil }
-
-
let foo: ↓Bool? { return nil }()
-
-
func foo() -> ↓Bool? {}
-
-
func foo() -> [String: ↓Bool?] {}
-
-
func foo() -> [↓Bool?] {}
-
-
static func foo() -> ↓Bool? {}
-
-
static func foo() -> [String: ↓Bool?] {}
-
-
static func foo() -> [↓Bool?] {}
-
-
func foo() -> (↓Bool?) -> String {}
-
-
func foo() -> ([Int]) -> ↓Bool? {}
-
-
func foo(input: ↓Bool?) {}
-
-
func foo(input: [String: ↓Bool?]) {}
-
-
func foo(input: [↓Bool?]) {}
-
-
static func foo(input: ↓Bool?) {}
-
-
static func foo(input: [String: ↓Bool?]) {}
-
-
static func foo(input: [↓Bool?]) {}
-
-
class Foo {
-    var foo: ↓Bool?
-}
-
-
class Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
class Foo {
-    let foo: ↓Bool? = nil
-}
-
-
class Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
class Foo {
-    let foo: [↓Bool?] = []
-}
-
-
struct Foo {
-    var foo: ↓Bool?
-}
-
-
struct Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
struct Foo {
-    let foo: ↓Bool? = nil
-}
-
-
struct Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
struct Foo {
-    let foo: [↓Bool?] = []
-}
-
-
class Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
class Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
class Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
_ = ↓Bool?.values()
-
- -
-
- - -
-
- - - diff --git a/discouraged_optional_collection.html b/discouraged_optional_collection.html deleted file mode 100644 index 93c9a125b..000000000 --- a/discouraged_optional_collection.html +++ /dev/null @@ -1,976 +0,0 @@ - - - - discouraged_optional_collection Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Collection

- -

Prefer empty collection over optional collection

- -
    -
  • Identifier: discouraged_optional_collection
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var foo: [Int]
-
-
var foo: [String: Int]
-
-
var foo: Set<String>
-
-
var foo: [String: [String: Int]]
-
-
let foo: [Int] = []
-
-
let foo: [String: Int] = [:]
-
-
let foo: Set<String> = []
-
-
let foo: [String: [String: Int]] = [:]
-
-
var foo: [Int] { return [] }
-
-
func foo() -> [Int] {}
-
-
func foo() -> [String: String] {}
-
-
func foo() -> Set<Int> {}
-
-
func foo() -> ([Int]) -> String {}
-
-
func foo(input: [String] = []) {}
-
-
func foo(input: [String: String] = [:]) {}
-
-
func foo(input: Set<String> = []) {}
-
-
class Foo {
-    func foo() -> [Int] {}
-}
-
-
class Foo {
-    func foo() -> [String: String] {}
-}
-
-
class Foo {
-    func foo() -> Set<Int> {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> [Int] {}
-}
-
-
struct Foo {
-    func foo() -> [String: String] {}
-}
-
-
struct Foo {
-    func foo() -> Set<Int> {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> [Int] {}
-}
-
-
enum Foo {
-    func foo() -> [String: String] {}
-}
-
-
enum Foo {
-    func foo() -> Set<Int> {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
class Foo {
-    func foo(input: [String] = []) {}
-}
-
-
class Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String] = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String] = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-

Triggering Examples

-
var foo: ↓[Int]?
-
-
var foo: ↓[String: Int]?
-
-
var foo: ↓Set<String>?
-
-
let foo: ↓[Int]? = nil
-
-
let foo: ↓[String: Int]? = nil
-
-
let foo: ↓Set<String>? = nil
-
-
var foo: ↓[Int]? { return nil }
-
-
let foo: ↓[Int]? { return nil }()
-
-
func foo() -> ↓[T]? {}
-
-
func foo() -> ↓[String: String]? {}
-
-
func foo() -> ↓[String: [String: String]]? {}
-
-
func foo() -> [String: ↓[String: String]?] {}
-
-
func foo() -> ↓Set<Int>? {}
-
-
static func foo() -> ↓[T]? {}
-
-
static func foo() -> ↓[String: String]? {}
-
-
static func foo() -> ↓[String: [String: String]]? {}
-
-
static func foo() -> [String: ↓[String: String]?] {}
-
-
static func foo() -> ↓Set<Int>? {}
-
-
func foo() -> (↓[Int]?) -> String {}
-
-
func foo() -> ([Int]) -> ↓[String]? {}
-
-
func foo(input: ↓[String: String]?) {}
-
-
func foo(input: ↓[String: [String: String]]?) {}
-
-
func foo(input: [String: ↓[String: String]?]) {}
-
-
func foo(input: ↓[String: ↓[String: String]?]?) {}
-
-
func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-
-
func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-
-
static func foo(input: ↓[String: String]?) {}
-
-
static func foo(input: ↓[String: [String: String]]?) {}
-
-
static func foo(input: [String: ↓[String: String]?]) {}
-
-
static func foo(input: ↓[String: ↓[String: String]?]?) {}
-
-
static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-
-
static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-
-
class Foo {
-    var foo: ↓[Int]?
-}
-
-
class Foo {
-    var foo: ↓[String: Int]?
-}
-
-
class Foo {
-    var foo: ↓Set<String>?
-}
-
-
class Foo {
-    let foo: ↓[Int]? = nil
-}
-
-
class Foo {
-    let foo: ↓[String: Int]? = nil
-}
-
-
class Foo {
-    let foo: ↓Set<String>? = nil
-}
-
-
struct Foo {
-    var foo: ↓[Int]?
-}
-
-
struct Foo {
-    var foo: ↓[String: Int]?
-}
-
-
struct Foo {
-    var foo: ↓Set<String>?
-}
-
-
struct Foo {
-    let foo: ↓[Int]? = nil
-}
-
-
struct Foo {
-    let foo: ↓[String: Int]? = nil
-}
-
-
struct Foo {
-    let foo: ↓Set<String>? = nil
-}
-
-
class Foo {
-    var foo: ↓[Int]? { return nil }
-}
-
-
class Foo {
-    let foo: ↓[Int]? { return nil }()
-}
-
-
class Foo {
-    var foo: ↓Set<String>? { return nil }
-}
-
-
class Foo {
-    let foo: ↓Set<String>? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓[Int]? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓[Int]? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓Set<String>? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓Set<String>? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓[Int]? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓[Int]? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓Set<String>? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓Set<String>? { return nil }()
-}
-
-
class Foo {
-    func foo() -> [T]? {}
-}
-
-
class Foo {
-    func foo() -> ↓[String: String]? {}
-}
-
-
class Foo {
-    func foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    func foo() -> [String: ↓[String: String]?] {}
-}
-
-
class Foo {
-    func foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    static func foo() -> [T]? {}
-}
-
-
class Foo {
-    static func foo() -> ↓[String: String]? {}
-}
-
-
class Foo {
-    static func foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    static func foo() -> [String: ↓[String: String]?] {}
-}
-
-
class Foo {
-    static func foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    func foo() -> ([Int]?) -> String {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> [String]? {}
-}
-
-
struct Foo {
-    func foo() -> [T]? {}
-}
-
-
struct Foo {
-    func foo() -> ↓[String: String]? {}
-}
-
-
struct Foo {
-    func foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    func foo() -> [String: ↓[String: String]?] {}
-}
-
-
struct Foo {
-    func foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    static func foo() -> [T]? {}
-}
-
-
struct Foo {
-    static func foo() -> ↓[String: String]? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: ↓[String: String]?] {}
-}
-
-
struct Foo {
-    static func foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]?) -> String {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> [String]? {}
-}
-
-
enum Foo {
-    func foo() -> [T]? {}
-}
-
-
enum Foo {
-    func foo() -> ↓[String: String]? {}
-}
-
-
enum Foo {
-    func foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    func foo() -> [String: ↓[String: String]?] {}
-}
-
-
enum Foo {
-    func foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    static func foo() -> [T]? {}
-}
-
-
enum Foo {
-    static func foo() -> ↓[String: String]? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: ↓[String: String]?] {}
-}
-
-
enum Foo {
-    static func foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]?) -> String {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> [String]? {}
-}
-
-
class Foo {
-    func foo(input: ↓[String: String]?) {}
-}
-
-
class Foo {
-    func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
class Foo {
-    func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
class Foo {
-    func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
class Foo {
-    func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
class Foo {
-    func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo(input: ↓[String: String]?) {}
-}
-
-
class Foo {
-    static func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
class Foo {
-    static func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
class Foo {
-    static func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
class Foo {
-    static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo(input: ↓[String: String]?) {}
-}
-
-
struct Foo {
-    func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
struct Foo {
-    func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
struct Foo {
-    func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
struct Foo {
-    func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo(input: ↓[String: String]?) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
struct Foo {
-    static func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
struct Foo {
-    static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo(input: ↓[String: String]?) {}
-}
-
-
enum Foo {
-    func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
enum Foo {
-    func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
enum Foo {
-    func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
enum Foo {
-    func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo(input: ↓[String: String]?) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
enum Foo {
-    static func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
enum Foo {
-    static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Info.plist b/docsets/SwiftLintCore.docset/Contents/Info.plist deleted file mode 100644 index ba8254a4b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleIdentifier - com.jazzy.swiftlintcore - CFBundleName - SwiftLintCore - DocSetPlatformFamily - swiftlintcore - isDashDocset - - dashIndexFilePath - index.html - isJavaScriptEnabled - - DashDocSetFamily - dashtoc - DashDocSetFallbackURL - https://realm.github.io/SwiftLint/ - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes.html deleted file mode 100644 index 4547a900d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes.html +++ /dev/null @@ -1,672 +0,0 @@ - - - - Classes Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Classes

-

The following classes are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter.html deleted file mode 100644 index 2dbf18cba..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - CodeIndentingRewriter Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CodeIndentingRewriter

-
-
- -
public class CodeIndentingRewriter : SyntaxRewriter
- -
-
-

Rewriter that indents or unindents a syntax piece including comments and nested -AST nodes (e.g. a code block in a code block).

- - -
-
- -
-
-
-
    -
  • -
    - - - - IndentationStyle - -
    -
    -
    -
    -
    -
    -

    Style defining whether the rewriter shall indent or unindent and whether it shall use tabs or spaces and -how many of them.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum IndentationStyle
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(style:) - -
    -
    -
    -
    -
    -
    -

    Initializer accepting an indentation style.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(style: IndentationStyle = .indentSpaces(4))
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - style - - -
    -

    Indentation style. The default is indentation by 4 spaces.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override public func visit(_ token: TokenSyntax) -> TokenSyntax
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter/IndentationStyle.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter/IndentationStyle.html deleted file mode 100644 index dc9f4e277..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CodeIndentingRewriter/IndentationStyle.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - IndentationStyle Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

IndentationStyle

-
-
- -
public enum IndentationStyle
- -
-
-

Style defining whether the rewriter shall indent or unindent and whether it shall use tabs or spaces and -how many of them.

- - -
-
- -
-
-
-
    -
  • -
    - - - - indentSpaces(_:) - -
    -
    -
    -
    -
    -
    -

    Indentation with a number of spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case indentSpaces(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - unindentSpaces(_:) - -
    -
    -
    -
    -
    -
    -

    Reverse indentation of a number of spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case unindentSpaces(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - indentTabs(_:) - -
    -
    -
    -
    -
    -
    -

    Indentation with a number of tabs

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case indentTabs(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - unindentTabs(_:) - -
    -
    -
    -
    -
    -
    -

    Reverse indentation of a number of tabs.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case unindentTabs(Int)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CustomRuleTimer.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CustomRuleTimer.html deleted file mode 100644 index c733a916b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/CustomRuleTimer.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - CustomRuleTimer Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CustomRuleTimer

-
-
- -
public final class CustomRuleTimer
- -
-
-

Utility to measure the time spent in each custom rule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - shared - -
    -
    -
    -
    -
    -
    -

    Singleton.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let shared: CustomRuleTimer
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - activate() - -
    -
    -
    -
    -
    -
    -

    Tell the timer it should record time spent in rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func activate()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - dump() - -
    -
    -
    -
    -
    -
    -

    Return all time spent for each custom rule, keyed by rule ID.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func dump() -> [String : TimeInterval]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/DeclaredIdentifiersTrackingVisitor.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/DeclaredIdentifiersTrackingVisitor.html deleted file mode 100644 index 98092bb02..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/DeclaredIdentifiersTrackingVisitor.html +++ /dev/null @@ -1,777 +0,0 @@ - - - - DeclaredIdentifiersTrackingVisitor Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

DeclaredIdentifiersTrackingVisitor

-
-
- -
open class DeclaredIdentifiersTrackingVisitor<Configuration: RuleConfiguration>:
-        ViolationsSyntaxVisitor<Configuration>
- -
-
-

A specialized ViolationsSyntaxVisitor that tracks declared identifiers per scope while traversing the AST.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Scope - -
    -
    -
    -
    -
    -
    -

    A type that remembers the declared identifiers (in order) up to the current position in the code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public typealias Scope = Stack<[IdentifierDeclaration]>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - scope - -
    -
    -
    -
    -
    -
    -

    The hierarchical stack of identifiers declared up to the current position in the code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var scope: Scope
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializer.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -public init(configuration: Configuration, file: SwiftLintFile, scope: Scope = Scope())
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - configuration - - -
    -

    Configuration of a rule.

    -
    -
    - - file - - -
    -

    File from which the syntax tree stems from.

    -
    -
    - - scope - - -
    -

    A (potentially already pre-filled) scope to collect identifiers into.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Indicate whether a given identifier is in scope.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hasSeenDeclaration(for identifier: String) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    An identifier.

    -
    -
    -
    -
    -

    Return Value

    -

    true if the identifier was declared previously.

    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: CodeBlockItemListSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_: CodeBlockItemListSyntax)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_ node: VariableDeclSyntax)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_ node: GuardStmtSyntax)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Type declaration boundaries -

-
-
-
    -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: MemberBlockSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitPost(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitPost(_ node: MemberBlockSyntax)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/LinterCache.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/LinterCache.html deleted file mode 100644 index 34f566796..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/LinterCache.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - LinterCache Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

LinterCache

-
-
- -
public final class LinterCache
- -
-
-

A persisted cache for storing and retrieving linter results.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(configuration: Configuration, fileManager: some LintableFileManager = FileManager.default)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    The SwiftLint configuration for which this cache will be used.

    -
    -
    - - fileManager - - -
    -

    The file manager to use to read lintable file information.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - save() - -
    -
    -
    -
    -
    -
    -

    Persists the cache to disk.

    -
    -

    Throws

    - Throws if the linter cache doesn’t have a location value, if the cache couldn’t be serialized, or if - the contents couldn’t be written to disk. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func save() throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleRegistry.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleRegistry.html deleted file mode 100644 index d9eb36b15..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleRegistry.html +++ /dev/null @@ -1,571 +0,0 @@ - - - - RuleRegistry Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleRegistry

-
-
- -
public final class RuleRegistry : @unchecked Sendable
- -
-
-

Container to register and look up SwiftLint rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - shared - -
    -
    -
    -
    -
    -
    -

    Shared rule registry instance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let shared: RuleRegistry
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - list - -
    -
    -
    -
    -
    -
    -

    Rule list associated with this registry. Lazily created, and -immutable once looked up.

    -
    -

    Note

    - Adding registering more rules after this was first - accessed will not work. - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) lazy var list: RuleList { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - register(rules:) - -
    -
    -
    -
    -
    -
    -

    Register rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func register(rules: [any Rule.Type])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to register.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - rule(forID:) - -
    -
    -
    -
    -
    -
    -

    Look up a rule for a given ID.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func rule(forID id: String) -> (any Rule.Type)?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - id - - -
    -

    The ID for the rule to look up.

    -
    -
    -
    -
    -

    Return Value

    -

    The rule matching the specified ID, if one was found.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleStorage.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleStorage.html deleted file mode 100644 index fe56f951c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/RuleStorage.html +++ /dev/null @@ -1,461 +0,0 @@ - - - - RuleStorage Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleStorage

-
-
- -
public class RuleStorage : CustomStringConvertible
- -
-
-

A storage mechanism for aggregating the results of CollectingRules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Creates a RuleStorage with no initial stored data.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html deleted file mode 100644 index b8cc58bde..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/SwiftLintFile.html +++ /dev/null @@ -1,912 +0,0 @@ - - - - SwiftLintFile Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintFile

-
-
- -
public final class SwiftLintFile
-
extension SwiftLintFile: Equatable, Hashable
- -
-
-

A unit of Swift source code, either on disk or in memory.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The underlying SourceKitten file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: File
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - id - -
    -
    -
    -
    -
    -
    -

    The associated unique identifier for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let id: UUID
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isTestFile - -
    -
    -
    -
    -
    -
    -

    Whether or not this is a file generated for testing purposes.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var isTestFile: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isVirtual - -
    -
    -
    -
    -
    -
    -

    A file is virtual if it is not backed by a filesystem path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var isVirtual: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(file:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile with a SourceKitten File.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: File)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    A file from SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(path:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. -Fails if the file does not exist.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init?(path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this -one does not read its contents immediately, but rather traps at runtime when attempting to access its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(pathDeferringReading path: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - path - - -
    -

    The path to a file on disk. Relative and absolute paths supported.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(contents:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public convenience init(contents: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - contents - - -
    -

    The contents of the file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - path - -
    -
    -
    -
    -
    -
    -

    The path on disk for this file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var path: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - contents - -
    -
    -
    -
    -
    -
    -

    The file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var contents: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - stringView - -
    -
    -
    -
    -
    -
    -

    A string view into the contents of this file optimized for string manipulation operations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringView: StringView { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lines - -
    -
    -
    -
    -
    -
    -

    The parsed lines for this file’s contents.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var lines: [Line] { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable Conformance -

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: SwiftLintFile, rhs: SwiftLintFile) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxRewriter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxRewriter.html deleted file mode 100644 index 1eedd8cf7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxRewriter.html +++ /dev/null @@ -1,643 +0,0 @@ - - - - ViolationsSyntaxRewriter Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationsSyntaxRewriter

-
-
- -
open class ViolationsSyntaxRewriter<Configuration> : SyntaxRewriter where Configuration : RuleConfiguration
- -
-
-

A SwiftSyntax SyntaxRewriter that produces absolute positions where corrections were applied.

- - -
-
- -
-
-
-
    -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    A rule’s configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let configuration: Configuration
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file from which the traversed syntax tree stems from.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - locationConverter - -
    -
    -
    -
    -
    -
    -

    A converter of positions in the traversed source file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public lazy var locationConverter: SourceLocationConverter { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - disabledRegions - -
    -
    -
    -
    -
    -
    -

    The regions in the traversed file that are disabled by a command.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public lazy var disabledRegions: [SourceRange] { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - correctionPositions - -
    -
    -
    -
    -
    -
    -

    Positions in a source file where corrections were applied.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var correctionPositions: [AbsolutePosition]
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializer for a ViolationsSyntaxRewriter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -public init(configuration: Configuration, file: SwiftLintFile)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    Configuration of a rule.

    -
    -
    - - file - - -
    -

    File from which the syntax tree stems from.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - visitAny(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visitAny(_ node: Syntax) -> Syntax?
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxVisitor.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxVisitor.html deleted file mode 100644 index 78b8cf81b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Classes/ViolationsSyntaxVisitor.html +++ /dev/null @@ -1,904 +0,0 @@ - - - - ViolationsSyntaxVisitor Class Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationsSyntaxVisitor

-
-
- -
open class ViolationsSyntaxVisitor<Configuration> : SyntaxVisitor where Configuration : RuleConfiguration
- -
-
-

A SwiftSyntax SyntaxVisitor that produces absolute positions where violations should be reported.

- - -
-
- -
-
-
-
    -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    A rule’s configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let configuration: Configuration
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file from which the traversed syntax tree stems from.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - locationConverter - -
    -
    -
    -
    -
    -
    -

    A source location converter associated with the syntax tree being traversed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public lazy var locationConverter: SourceLocationConverter { get set }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Initializer for a ViolationsSyntaxVisitor.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -public init(configuration: Configuration, file: SwiftLintFile)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - configuration - - -
    -

    Configuration of a rule.

    -
    -
    - - file - - -
    -

    File from which the syntax tree stems from.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - violations - -
    -
    -
    -
    -
    -
    -

    Positions in a source file where violations should be reported.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var violations: [ReasonedRuleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - skippableDeclarations - -
    -
    -
    -
    -
    -
    -

    List of declaration types that shall be skipped while traversing the AST.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    open var skippableDeclarations: [any DeclSyntaxProtocol.Type] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ActorDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ClassDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: EnumDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ExtensionDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: FunctionDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: InitializerDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: ProtocolDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: StructDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: SubscriptDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - visit(_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    override open func visit(_ node: VariableDeclSyntax) -> SyntaxVisitorContinueKind
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums.html deleted file mode 100644 index bd506b551..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums.html +++ /dev/null @@ -1,707 +0,0 @@ - - - - Enumerations Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Enumerations

-

The following enumerations are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html deleted file mode 100644 index 0bcce64e8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/AccessControlLevel.html +++ /dev/null @@ -1,725 +0,0 @@ - - - - AccessControlLevel Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

AccessControlLevel

-
-
- -
public enum AccessControlLevel : String, CustomStringConvertible
-
extension AccessControlLevel: Comparable
- -
-
-

The accessibility of a Swift source declaration.

- - - -
-
- -
-
-
-
    -
  • -
    - - - - private - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s immediate lexical scope.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `private` = "source.lang.swift.accessibility.private"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - fileprivate - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `fileprivate` = "source.lang.swift.accessibility.fileprivate"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - internal - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `internal` = "source.lang.swift.accessibility.internal"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - package - -
    -
    -
    -
    -
    -
    -

    Accessible by all the modules defined in the same Swift package.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case package = "source.lang.swift.accessibility.package"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - public - -
    -
    -
    -
    -
    -
    -

    Accessible by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case `public` = "source.lang.swift.accessibility.public"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - open - -
    -
    -
    -
    -
    -
    -

    Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case open = "source.lang.swift.accessibility.open"
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(description:) - -
    -
    -
    -
    -
    -
    -

    Initializes an access control level by its Swift source keyword value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init?(description value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The value used to describe this level in Swift source code.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isPrivate - -
    -
    -
    -
    -
    -
    -

    Returns true if is private or fileprivate

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var isPrivate: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: AccessControlLevel, rhs: AccessControlLevel) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ExecutableInfo.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ExecutableInfo.html deleted file mode 100644 index fc81837a5..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ExecutableInfo.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - ExecutableInfo Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ExecutableInfo

-
-
- -
public enum ExecutableInfo
- -
-
-

Information about this executable.

- - -
-
- -
-
-
-
    -
  • -
    - - - - buildID - -
    -
    -
    -
    -
    -
    -

    A stable identifier for this executable. Uses the Mach-O header UUID on macOS. Nil on Linux.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let buildID: String?
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/IdentifierDeclaration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/IdentifierDeclaration.html deleted file mode 100644 index f8ac5902a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/IdentifierDeclaration.html +++ /dev/null @@ -1,614 +0,0 @@ - - - - IdentifierDeclaration Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

IdentifierDeclaration

-
-
- -
public enum IdentifierDeclaration : Hashable
- -
-
-

An identifier declaration.

- - -
-
- -
-
-
-
    -
  • -
    - - - - parameter(name:) - -
    -
    -
    -
    -
    -
    -

    Parameter declaration with a name token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case parameter(name: TokenSyntax)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - localVariable(name:) - -
    -
    -
    -
    -
    -
    -

    Local variable declaration with a name token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case localVariable(name: TokenSyntax)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A variable that is implicitly added by the compiler (e.g. error in catch clauses).

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case implicitVariable(name: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - wildcard - -
    -
    -
    -
    -
    -
    -

    A variable hidden from scope because its name is a wildcard _.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case wildcard
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lookupBoundary - -
    -
    -
    -
    -
    -
    -

    Special case that marks a type boundary at which name lookup stops.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case lookupBoundary
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Check whether self declares a variable given by name.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func declares(id: String, disregardBackticks: Bool = true) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - id - - -
    -

    Name of the variable.

    -
    -
    - - disregardBackticks - - -
    -

    If true, normalize all names before comparison by removing all backticks. This is the - default since backticks only disambiguate, but don’t contribute to name resolution.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/Issue.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/Issue.html deleted file mode 100644 index 4884a4740..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/Issue.html +++ /dev/null @@ -1,1183 +0,0 @@ - - - - Issue Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Issue

-
-
- -
public enum Issue : LocalizedError, Equatable
- -
-
-

All possible SwiftLint issues which are printed as warnings by default.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The configuration didn’t match internal expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalidConfiguration(ruleID: String, message: String? = nil)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Issued when an option is deprecated. Suggests an alternative optionally.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case deprecatedConfigurationOption(ruleID: String, key: String, alternative: String? = nil)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Used in configuration parsing when no changes have been applied. Use only internally!

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case nothingApplied(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Rule is listed multiple times in the configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case listedMultipleTime(ruleID: String, times: Int)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    An identifier old has been renamed to new.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case renamedIdentifier(old: String, new: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Some configuration keys are invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalidConfigurationKeys(ruleID: String, keys: Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The configuration is inconsistent, that is options are mutually exclusive or one drives other values -irrelevant.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case inconsistentConfiguration(ruleID: String, message: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalidRuleIDs(_:) - -
    -
    -
    -
    -
    -
    -

    Used rule IDs are invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalidRuleIDs(Set<String>)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is not present in only_rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleNotPresentInOnlyRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is disabled.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleDisabledInDisabledRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is disabled in the parent configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleDisabledInParentConfiguration(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is not enabled in opt_in_rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleNotEnabledInOptInRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Found a rule configuration for a rule that is not enabled in parent only_rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleNotEnabledInParentOnlyRules(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - genericWarning(_:) - -
    -
    -
    -
    -
    -
    -

    A generic warning specified by a string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case genericWarning(String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - genericError(_:) - -
    -
    -
    -
    -
    -
    -

    A generic error specified by a string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case genericError(String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A deprecation warning for a rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case ruleDeprecated(ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The initial configuration file was not found.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case initialFileNotFound(path: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - fileNotFound(path:) - -
    -
    -
    -
    -
    -
    -

    A file at specified path was not found.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fileNotFound(path: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The file at path is not readable or cannot be opened.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fileNotReadable(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The file at path is not writable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case fileNotWritable(path: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The file at path cannot be indexed by a specific rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case indexingError(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    No arguments were provided to compile a file at path within a specific rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case missingCompilerArguments(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Cursor information cannot be extracted from a specific location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case missingCursorInfo(path: String?, ruleID: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yamlParsing(_:) - -
    -
    -
    -
    -
    -
    -

    An error that occurred when parsing YAML.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case yamlParsing(String)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    The baseline file at path is not readable or cannot be opened.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case baselineNotReadable(path: String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - print() - -
    -
    -
    -
    -
    -
    -

    Print the issue to the console.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func print()
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/OptionType.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/OptionType.html deleted file mode 100644 index dc99da2fd..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/OptionType.html +++ /dev/null @@ -1,920 +0,0 @@ - - - - OptionType Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

OptionType

-
-
- -
public enum OptionType : Equatable
-
extension OptionType: Documentable
- -
-
-

Type of an option.

- - -
-
- -
-
-
-
    -
  • -
    - - - - empty - -
    -
    -
    -
    -
    -
    -

    An irrelevant option. It will be ignored in documentation serialization.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case empty
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - flag(_:) - -
    -
    -
    -
    -
    -
    -

    A boolean flag.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case flag(Bool)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - string(_:) - -
    -
    -
    -
    -
    -
    -

    A string option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case string(String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - symbol(_:) - -
    -
    -
    -
    -
    -
    -

    Like a string option but without quotes in the serialized output.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case symbol(String)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - integer(_:) - -
    -
    -
    -
    -
    -
    -

    An integer option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case integer(Int)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - float(_:) - -
    -
    -
    -
    -
    -
    -

    A floating point number option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case float(Double)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity(_:) - -
    -
    -
    -
    -
    -
    -

    Special option for a ViolationSeverity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case severity(ViolationSeverity)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - list(_:) - -
    -
    -
    -
    -
    -
    -

    A list of options.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case list([`Self`])
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - nested(_:) - -
    -
    -
    -
    -
    -
    -

    An option which is another set of configuration options to be nested in the serialized output.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case nested(RuleConfigurationDescription)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func markdown() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func oneLiner() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func yaml() -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Result builder -

-
-
-
    -
  • -
    - - - - =>(_:_:) - -
    -
    -
    -
    -
    -
    -

    Operator enabling an easy way to create a configuration option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func => (key: String, value: OptionType) -> RuleConfigurationOption
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - key - - -
    -

    Name of the option.

    -
    -
    - - value - - -
    -

    Value of the option.

    -
    -
    -
    -
    -

    Return Value

    -

    A configuration option built up by the given data.

    -
    - -
    -
    -
  • -
  • -
    - - - - nest(_:) - -
    -
    -
    -
    -
    -
    -

    Create an option defined by nested configuration description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func nest(@RuleConfigurationDescriptionBuilder _ description: () -> RuleConfigurationDescription) -> OptionType
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - description - - -
    -

    A configuration description buildable by applying the result builder syntax.

    -
    -
    -
    -
    -

    Return Value

    -

    A configuration option with a value being another configuration description.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html deleted file mode 100644 index bf17c2cd9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleIdentifier.html +++ /dev/null @@ -1,662 +0,0 @@ - - - - RuleIdentifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleIdentifier

-
-
- -
public enum RuleIdentifier : Hashable, ExpressibleByStringLiteral, Comparable
- -
-
-

An identifier representing a SwiftLint rule, or all rules.

- - -
-
- -
-
-
-
- - -
- -

Values -

-
-
-
    -
  • -
    - - - - all - -
    -
    -
    -
    -
    -
    -

    Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in -disabling all SwiftLint rules in a given file by adding a // swiftlint:disable all comment at the top of the -file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case all
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - single(identifier:) - -
    -
    -
    -
    -
    -
    -

    Represents a single SwiftLint rule with the specified identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case single(identifier: String)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Properties -

-
-
-
    -
  • -
    - - - - stringRepresentation - -
    -
    -
    -
    -
    -
    -

    The spelling of the string for this identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var stringRepresentation: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers -

-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleIdentifier by its string representation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The string representation.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

ExpressibleByStringLiteral Conformance -

-
-
- -
-
-
- - -
- -

Comparable Conformance -

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleKind.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleKind.html deleted file mode 100644 index fbac4866b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleKind.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - RuleKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleKind

-
-
- -
public enum RuleKind : String, Codable, Sendable
- -
-
-

All the possible rule kinds (categories).

- - -
-
- -
-
-
-
    -
  • -
    - - - - lint - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate Swift source conventions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case lint
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - idiomatic - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate common practices in the Swift community.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case idiomatic
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - style - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate stylistic choices.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case style
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - metrics - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate magnitudes or measurements of Swift source.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case metrics
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - performance - -
    -
    -
    -
    -
    -
    -

    Describes rules that validate that code patterns with poor performance are avoided.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case performance
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleListError.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleListError.html deleted file mode 100644 index 2eea9bf3d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/RuleListError.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - RuleListError Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListError

-
-
- -
public enum RuleListError : Error
- -
-
-

All possible rule list configuration errors.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    The rule list contains more than one configuration for the specified rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case duplicatedConfigurations(rule: any Rule.Type)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html deleted file mode 100644 index 99b47e887..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/SwiftExpressionKind.html +++ /dev/null @@ -1,612 +0,0 @@ - - - - SwiftExpressionKind Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftExpressionKind

-
-
- -
public enum SwiftExpressionKind : String
- -
-
-

The kind of expression for a contiguous set of Swift source tokens.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html deleted file mode 100644 index f4be5ad72..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Enums/ViolationSeverity.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - ViolationSeverity Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationSeverity

-
-
- -
public enum ViolationSeverity : String, Comparable, Codable, InlinableOptionType
- -
-
-

The magnitude of a StyleViolation.

- - -
-
- -
-
-
-
    -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case warning
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case error
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable -

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions.html deleted file mode 100644 index 9d1c7d7d6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - Extensions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Extensions

-

The following extensions are available globally.

- -
-
- -
-
-
- -
-
-
- - -
- -

AcceptableByConfigurationElement conformances -

-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Array.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Array.html deleted file mode 100644 index 6aa83f39c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Array.html +++ /dev/null @@ -1,943 +0,0 @@ - - - - Array Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Array

-
-
- -
public extension Array where Element == Example
-
extension Array: AcceptableByConfigurationElement where Element: AcceptableByConfigurationElement
-
public extension Array where Element == SwiftLintSyntaxToken
-
public extension Array where Element == ReasonedRuleViolation
-
public extension Array where Element == any DeclSyntaxProtocol.Type
- -
-
- -
-
- -
-
-
-
- - -
- -

Available where Element == Example -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip wrapping in comment tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipWrappingInCommentTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip wrapping in string tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipWrappingInStringTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip multi-byte offset tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipMultiByteOffsetTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Make these examples skip disable command tests.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func skipDisableCommandTests() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Remove all violation markers from the examples.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func removingViolationMarker() -> Array<Element>
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element: AcceptableByConfigurationElement -

-
-
- -
-
-
- - -
- -

Available where Element == SwiftLintSyntaxToken -

-
-
-
    -
  • -
    - - - - kinds - -
    -
    -
    -
    -
    -
    -

    The kinds for these tokens.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var kinds: [SyntaxKind] { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element == ReasonedRuleViolation -

-
-
-
    -
  • -
    - - - - append(_:) - -
    -
    -
    -
    -
    -
    -

    Add a violation at the specified position using the default description and severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func append(_ position: AbsolutePosition)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - position - - -
    -

    The position for the violation to append.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Add a violation and the correction at the specified position using the default description and severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func append(at position: AbsolutePosition, correction: ReasonedRuleViolation.ViolationCorrection? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - position - - -
    -

    The position for the violation to append.

    -
    -
    - - correction - - -
    -

    An optional correction to be applied when running with --fix.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - append(contentsOf:) - -
    -
    -
    -
    -
    -
    -

    Add violations for the specified positions using the default description and severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func append(contentsOf positions: [AbsolutePosition])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - positions - - -
    -

    The positions for the violations to append.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element == anyDeclSyntaxProtocol.Type -

-
-
-
    -
  • -
    - - - - all - -
    -
    -
    -
    -
    -
    -

    All visitable declaration syntax types.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static let all: `Self`
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allExcept(_:) - -
    -
    -
    -
    -
    -
    -

    All declarations except for the specified ones.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func allExcept(_ declarations: Element...) -> Array<Element>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - declarations - - -
    -

    The declarations to exclude from all declarations.

    -
    -
    -
    -
    -

    Return Value

    -

    All declarations except for the specified ones.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Bool.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Bool.html deleted file mode 100644 index c125990b6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Bool.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - Bool Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Double.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Double.html deleted file mode 100644 index 8ddbdf723..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Double.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - Double Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Int.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Int.html deleted file mode 100644 index e492d8680..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Int.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - Int Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Optional.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Optional.html deleted file mode 100644 index a93f5f591..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Optional.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - Optional Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Optional

-
-
- -
extension Optional: AcceptableByConfigurationElement where Wrapped: AcceptableByConfigurationElement
- -
-
- -
-
- -
-
-
-
- - -
- -

Available where Wrapped: AcceptableByConfigurationElement -

-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Set.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Set.html deleted file mode 100644 index 71e88fe97..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/Set.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - Set Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Set

-
-
- -
extension Set: AcceptableByConfigurationElement where Element: AcceptableByConfigurationElement & Comparable
- -
-
- -
-
- -
-
-
-
- - -
- -

Available where Element: AcceptableByConfigurationElement & Comparable -

-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/String.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/String.html deleted file mode 100644 index 40f2dba61..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Extensions/String.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - String Extension Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- - -
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Functions.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Functions.html deleted file mode 100644 index 758d1855c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Functions.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - Functions Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Functions

-

The following functions are available globally.

- -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any -known reporters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func reporterFrom(identifier: String?) -> any Reporter.Type
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    The identifier corresponding to the reporter.

    -
    -
    -
    -
    -

    Return Value

    -

    The reporter type.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Global Variables.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Global Variables.html deleted file mode 100644 index 6245a4f7b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Global Variables.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - Global Variables Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Global Variables

-

The following global variables are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - reportersList - -
    -
    -
    -
    -
    -
    -

    The reporters list containing all the reporters built into SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reportersList: [any Reporter.Type]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - coreRules - -
    -
    -
    -
    -
    -
    -

    The rule list containing all available rules built into SwiftLintCore.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let coreRules: [any Rule.Type]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Guides.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Guides.html deleted file mode 100644 index 42c8e368f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Guides.html +++ /dev/null @@ -1,2595 +0,0 @@ - - - - Guides Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Guides

-

The following guides are available globally.

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Macros.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Macros.html deleted file mode 100644 index b5ab5c016..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Macros.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - Macros Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Macros

-

The following macros are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - AutoConfigParser() - -
    -
    -
    -
    -
    -
    -

    Macro to be attached to rule configurations. It generates the configuration parsing logic -automatically based on the defined @ConfigurationElements.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @attached(member, names: named(apply)
    -) public macro AutoConfigParser() = #externalMacro(
    -    module: "SwiftLintCoreMacros",
    -    type: "AutoConfigParser"
    -)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Macro that lets an enum with a String raw type automatically conform to AcceptableByConfigurationElement.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @attached(extension, conformances: AcceptableByConfigurationElement, names: named(init(fromAny:context:)
    -), named(asOption)) public macro AcceptableByConfigurationElement() = #externalMacro(
    -    module: "SwiftLintCoreMacros",
    -    type: "AcceptableByConfigurationElement"
    -)
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Macro that adds a conformance to the SwiftSyntaxRule protocol and a default makeVisitor(file:) implementation -that creates a visitor defined in the rule struct.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @attached(extension, conformances: SwiftSyntaxRule, SwiftSyntaxCorrectableRule, names: named(makeVisitor(file:)
    -), named(preprocess(file:)), named(makeRewriter(file:))) public macro SwiftSyntaxRule(foldExpressions: Bool = false, explicitRewriter: Bool = false) = #externalMacro(
    -    module: "SwiftLintCoreMacros",
    -    type: "SwiftSyntaxRule"
    -)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - foldExpressions - - -
    -

    Setting it to true adds an implementation of preprocess(file:) which folds expressions - before they are passed to the visitor.

    -
    -
    - - explicitRewriter - - -
    -

    Set it to true to add a makeRewriter(file:) implementation which creates a rewriter - defined in the rule struct. In this case, the rule automatically conforms to - SwiftSyntaxCorrectableRule.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols.html deleted file mode 100644 index 3d4a72677..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols.html +++ /dev/null @@ -1,1003 +0,0 @@ - - - - Protocols Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Protocols

-

The following protocols are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - Documentable - -
    -
    -
    -
    -
    -
    -

    A type that can be converted into a human-readable representation.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Documentable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Property wrapper -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Type of an object that can be used as a configuration element.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AcceptableByConfigurationElement
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - InlinableOptionType - -
    -
    -
    -
    -
    -
    -

    An option type that can appear inlined into its using configuration.

    - -

    The ConfigurationElement must opt into this behavior. In this case, the option does not have a key. This is -almost exclusively useful for common RuleConfigurations that are used in many other rules as child -configurations.

    -
    -

    Warning

    -

    A type conforming to this protocol is assumed to throw an issue in its apply method only when it’s -absolutely clear that there is an error in the YAML configuration passed in. Since it may be used in a nested -context and doesn’t know about the outer configuration, it’s not always clear if a certain key-value is really -unacceptable.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol InlinableOptionType : AcceptableByConfigurationElement
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - VersionComparable - -
    -
    -
    -
    -
    -
    -

    A comparable major.minor.patch version number.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol VersionComparable : Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ASTRule - -
    -
    -
    -
    -
    -
    -

    A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol ASTRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Interface providing access to a cache description.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CacheDescriptionProvider
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AnyCollectingRule - -
    -
    -
    -
    -
    -
    -

    Type-erased protocol used to check whether a rule is collectable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AnyCollectingRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CollectingRule - -
    -
    -
    -
    -
    -
    -

    A rule that requires knowledge of all other files being linted.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CollectingRule : AnyCollectingRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Reporter - -
    -
    -
    -
    -
    -
    -

    An interface for reporting violations as strings.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Reporter : CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Rule - -
    -
    -
    -
    -
    -
    -

    An executable value that can identify issues (violations) in Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - OptInRule - -
    -
    -
    -
    -
    -
    -

    A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol OptInRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CorrectableRule - -
    -
    -
    -
    -
    -
    -

    A rule that can correct violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol CorrectableRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SubstitutionCorrectableRule : CorrectableRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SourceKitFreeRule - -
    -
    -
    -
    -
    -
    -

    A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SourceKitFreeRule : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - AnalyzerRule - -
    -
    -
    -
    -
    -
    -

    A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol AnalyzerRule : OptInRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleConfiguration - -
    -
    -
    -
    -
    -
    -

    A configuration value for a rule to allow users to modify its behavior.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol RuleConfiguration : Equatable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A configuration for a rule that allows to configure at least the severity.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SeverityBasedRuleConfiguration : RuleConfiguration
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A SwiftLint CorrectableRule that performs its corrections using a SwiftSyntax SyntaxRewriter.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SwiftSyntaxCorrectableRule : CorrectableRule, SwiftSyntaxRule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftSyntaxRule - -
    -
    -
    -
    -
    -
    -

    A SwiftLint Rule backed by SwiftSyntax that does not use SourceKit requests.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public protocol SwiftSyntaxRule : SourceKitFreeRule
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/ASTRule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/ASTRule.html deleted file mode 100644 index 81f65e925..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/ASTRule.html +++ /dev/null @@ -1,666 +0,0 @@ - - - - ASTRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ASTRule

-
-
- -
public protocol ASTRule : Rule
- -
-
-

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s -structure, validating the rule recursively in nested source bodies.

- - -
-
- -
-
-
-
    -
  • -
    - - - - KindType - -
    -
    -
    -
    -
    -
    -

    The kind of token being recursed over.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype KindType : RawRepresentable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, kind: KindType, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - kind - - -
    -

    The kind of token being recursed over.

    -
    -
    - - dictionary - - -
    -

    The dictionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - kind(from:) - -
    -
    -
    -
    -
    -
    -

    Get the kind from the specified dictionary.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func kind(from dictionary: SourceKittenDictionary) -> KindType?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - dictionary - - -
    -

    The SourceKittenDictionary representing the source structure from which to extract the - kind.

    -
    -
    -
    -
    -

    Return Value

    -

    The kind from the specified dictionary, if one was found.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:dictionary:) - - - Extension method - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, dictionary: SourceKittenDictionary) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - dictionary - - -
    -

    The dictionary for an AST subset to validate.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AcceptableByConfigurationElement.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AcceptableByConfigurationElement.html deleted file mode 100644 index c4bfc0ff2..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AcceptableByConfigurationElement.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - AcceptableByConfigurationElement Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

AcceptableByConfigurationElement

-
-
- -
public protocol AcceptableByConfigurationElement
- -
-
-

Type of an object that can be used as a configuration element.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Initializer taking a value from a configuration to create an element of Self.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(fromAny value: Any, context ruleID: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    Value from a configuration.

    -
    -
    - - ruleID - - -
    -

    The rule’s identifier in which context the configuration parsing runs.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - asOption() - -
    -
    -
    -
    -
    -
    -

    Make the object an option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func asOption() -> OptionType
    - -
    -
    -
    -

    Return Value

    -

    Option representing the object.

    -
    - -
    -
    -
  • -
  • -
    - - - - asDescription(with:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Make the object a description.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func asDescription(with key: String) -> RuleConfigurationDescription
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - key - - -
    -

    Name of the option to be put into the description.

    -
    -
    -
    -
    -

    Return Value

    -

    Configuration description of this object.

    -
    - -
    -
    -
  • -
  • -
    - - - - apply(_:ruleID:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Update the object.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func apply(_ value: Any, ruleID: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    New underlying data for the object.

    -
    -
    - - ruleID - - -
    -

    The rule’s identifier in which context the configuration parsing runs.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html deleted file mode 100644 index 9bfddfbbe..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/AnalyzerRule.html +++ /dev/null @@ -1,435 +0,0 @@ - - - - AnalyzerRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

AnalyzerRule

-
-
- -
public protocol AnalyzerRule : OptInRule
- -
-
-

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like -static analysis than syntactic checks.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CacheDescriptionProvider.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CacheDescriptionProvider.html deleted file mode 100644 index 9440f4d2a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CacheDescriptionProvider.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - CacheDescriptionProvider Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CacheDescriptionProvider

-
-
- -
public protocol CacheDescriptionProvider
- -
-
-

Interface providing access to a cache description.

- - -
-
- -
-
-
-
    -
  • -
    - - - - cacheDescription - -
    -
    -
    -
    -
    -
    -

    The cache description which will be used to determine if a previous -cached value is still valid given the new cache value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var cacheDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CollectingRule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CollectingRule.html deleted file mode 100644 index 4ddd6e2d5..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CollectingRule.html +++ /dev/null @@ -1,838 +0,0 @@ - - - - CollectingRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectingRule

-
-
- -
public protocol CollectingRule : AnyCollectingRule
- -
-
-

A rule that requires knowledge of all other files being linted.

- - -
-
- -
-
-
-
    -
  • -
    - - - - FileInfo - -
    -
    -
    -
    -
    -
    -

    The kind of information to collect for each file being linted for this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype FileInfo
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, compilerArguments: [String]) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:) - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file, to be analyzed by a CollectedLinter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile) -> FileInfo
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    -
    -
    -

    Return Value

    -

    The collected file information.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:collectedInfo:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile,
    -              collectedInfo: [SwiftLintFile: FileInfo],
    -              compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, collectedInfo: [SwiftLintFile : FileInfo]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - collectedInfo - - -
    -

    All collected info for all files.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:into:compilerArguments:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, into storage: RuleStorage, compilerArguments: [String])
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:using:compilerArguments:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file _: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:compilerArguments:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file _: SwiftLintFile, compilerArguments _: [String]) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html deleted file mode 100644 index b02a793e7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/CorrectableRule.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - CorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CorrectableRule

-
-
- -
public protocol CorrectableRule : Rule
- -
-
-

A rule that can correct violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - correct(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to correct violations.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Attempts to correct the violations to this rule in the specified file after collecting file info for all files -and returns all corrections that were applied.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Documentable.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Documentable.html deleted file mode 100644 index f7442c656..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Documentable.html +++ /dev/null @@ -1,534 +0,0 @@ - - - - Documentable Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Documentable

-
-
- -
public protocol Documentable
- -
-
-

A type that can be converted into a human-readable representation.

- - -
-
- -
-
-
-
    -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    -

    Convert an object to Markdown.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func markdown() -> String
    - -
    -
    -
    -

    Return Value

    -

    A Markdown string describing the object.

    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    -

    Convert an object to a single line string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func oneLiner() -> String
    - -
    -
    -
    -

    Return Value

    -

    A “one liner” describing the object.

    -
    - -
    -
    -
  • -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    -

    Indicate if the item has some content that is useful to document.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    -

    Convert an object to YAML as used in .swiftlint.yml.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func yaml() -> String
    - -
    -
    -
    -

    Return Value

    -

    A YAML snippet that can be used in configuration files.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Reporter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Reporter.html deleted file mode 100644 index 5d3f42ce4..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Reporter.html +++ /dev/null @@ -1,576 +0,0 @@ - - - - Reporter Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Reporter

-
-
- -
public protocol Reporter : CustomStringConvertible
- -
-
-

An interface for reporting violations as strings.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The unique identifier for this reporter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var identifier: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isRealtime - -
    -
    -
    -
    -
    -
    -

    Whether or not this reporter can output incrementally as violations are found or if all violations must be -collected before generating the report.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var isRealtime: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A more detailed description of the reporter’s output.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    For CustomStringConvertible conformance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - generateReport(_:) - -
    -
    -
    -
    -
    -
    -

    Return a string with the report for the specified violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static func generateReport(_ violations: [StyleViolation]) -> String
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations to report.

    -
    -
    -
    -
    -

    Return Value

    -

    The report.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Rule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Rule.html deleted file mode 100644 index 3154c86c3..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/Rule.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - - Rule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Rule

-
-
- -
public protocol Rule
- -
-
-

An executable value that can identify issues (violations) in Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ConfigurationType - -
    -
    -
    -
    -
    -
    -

    The type of the configuration used to configure this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype ConfigurationType : RuleConfiguration
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A verbose description of many of this rule’s properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var description: RuleDescription { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    This rule’s configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var configuration: ConfigurationType { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - shouldLintEmptyFiles - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Whether this rule should be used on empty files. Defaults to false.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var shouldLintEmptyFiles: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    A default initializer for rules. All rules need to be trivially initializable.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(configuration:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Creates a rule by applying its configuration.

    -
    -

    Throws

    -

    Throws if the configuration didn’t match the expected format.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - createConfigurationDescription(exclusiveOptions:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Create a description of how this rule has been configured to run.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func createConfigurationDescription(exclusiveOptions: Set<String>) -> RuleConfigurationDescription
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file and returns any violations to the rule’s expectations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - isEqualTo(_:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Whether or not the specified rule is equivalent to the current rule.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEqualTo(_ rule: any Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule value to compare against.

    -
    -
    -
    -
    -

    Return Value

    -

    Whether or not the specified rule is equivalent to the current rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - collectInfo(for:into:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func collectInfo(for file: SwiftLintFile, into storage: RuleStorage, compilerArguments: [String])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to collect info.

    -
    -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:using:compilerArguments:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s -expectations.

    -
    -

    Note

    -

    This function is called by the linter and is always implemented in extensions.

    - -
    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func validate(file: SwiftLintFile, using storage: RuleStorage, compilerArguments: [String]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to execute the rule.

    -
    -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments needed to compile this file.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations to the rule’s expectations.

    -
    - -
    -
    -
  • -
  • -
    - - - - canBeDisabled(violation:by:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Checks if a style violation can be disabled by a command specifying a rule ID. Only the rule can claim that for -sure since it knows all the possible identifiers.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func canBeDisabled(violation: StyleViolation, by ruleID: RuleIdentifier) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - violation - - -
    -

    A style violation.

    -
    -
    - - ruleID - - -
    -

    The name of a rule as used in a disable command.

    -
    -
    -
    -
    -

    Return Value

    -

    A boolean value indicating whether the violation can be disabled by the given ID.

    -
    - -
    -
    -
  • -
  • -
    - - - - isEnabled(in:for:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Checks if a the rule is enabled in a given region. A specific rule ID can be provided in case a rule supports -more than one identifier.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func isEnabled(in region: Region, for ruleID: String) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - region - - -
    -

    The region to check.

    -
    -
    - - ruleID - - -
    -

    Rule identifier deviating from the default rule’s name.

    -
    -
    -
    -
    -

    Return Value

    -

    A boolean value indicating whether the rule is enabled in the given region.

    -
    - -
    -
    -
  • -
  • -
    - - - - cacheDescription - - - Extension method - -
    -
    -
    -
    -
    -
    -

    The cache description which will be used to determine if a previous -cached value is still valid given the new cache value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var cacheDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - identifier - - - Extension method - -
    -
    -
    -
    -
    -
    -

    The rule’s unique identifier which is the same as Rule.description.identifier.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    static var identifier: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html deleted file mode 100644 index 28e82c578..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/RuleConfiguration.html +++ /dev/null @@ -1,595 +0,0 @@ - - - - RuleConfiguration Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfiguration

-
-
- -
public protocol RuleConfiguration : Equatable
- -
-
-

A configuration value for a rule to allow users to modify its behavior.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Parent - -
    -
    -
    -
    -
    -
    -

    The type of the rule that’s using this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    associatedtype Parent : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - parameterDescription - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    A description for this configuration’s parameters. It can be built using the annotated result builder.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @RuleConfigurationDescriptionBuilder
    -var parameterDescription: RuleConfigurationDescription? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    -

    Apply an untyped configuration to the current value.

    -
    -

    Throws

    -

    Throws if the configuration is not in the expected format.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func apply(configuration: Any) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - configuration - - -
    -

    The untyped configuration value to apply.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - validate() - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Run a sanity check on the configuration, perform optional postprocessing steps and/or warn about potential -issues.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    mutating func validate() throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - supportedKeys - - - Extension method - -
    -
    -
    -
    -
    -
    -

    All keys supported by this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var supportedKeys: Set<String> { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SeverityBasedRuleConfiguration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SeverityBasedRuleConfiguration.html deleted file mode 100644 index 9e2411bc6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SeverityBasedRuleConfiguration.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - SeverityBasedRuleConfiguration Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SeverityBasedRuleConfiguration

-
-
- -
public protocol SeverityBasedRuleConfiguration : RuleConfiguration
- -
-
-

A configuration for a rule that allows to configure at least the severity.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html deleted file mode 100644 index 17343a40b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SubstitutionCorrectableRule.html +++ /dev/null @@ -1,553 +0,0 @@ - - - - SubstitutionCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SubstitutionCorrectableRule

-
-
- -
public protocol SubstitutionCorrectableRule : CorrectableRule
- -
-
-

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with -updated content.

- - -
-
- -
-
-
-
    -
  • -
    - - - - violationRanges(in:) - -
    -
    -
    -
    -
    -
    -

    Returns the NSString-based NSRanges to be replaced in the specified file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func violationRanges(in file: SwiftLintFile) -> [NSRange]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file in which to find ranges of violations for this rule.

    -
    -
    -
    -
    -

    Return Value

    -

    The NSString-based NSRanges to be replaced in the specified file.

    -
    - -
    -
    -
  • -
  • -
    - - - - substitution(for:in:) - -
    -
    -
    -
    -
    -
    -

    Returns the substitution to apply for the given range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func substitution(for violationRange: NSRange, in file: SwiftLintFile) -> (NSRange, String)?
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - violationRange - - -
    -

    The NSString-based NSRange of the violation that should be replaced.

    -
    -
    - - file - - -
    -

    The file in which the violation should be replaced.

    -
    -
    -
    -
    -

    Return Value

    -

    The range of the correction and its contents, if one could be computed.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func correct(file: SwiftLintFile) -> [Correction]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxCorrectableRule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxCorrectableRule.html deleted file mode 100644 index fa98202b0..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxCorrectableRule.html +++ /dev/null @@ -1,495 +0,0 @@ - - - - SwiftSyntaxCorrectableRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftSyntaxCorrectableRule

-
-
- -
public protocol SwiftSyntaxCorrectableRule : CorrectableRule, SwiftSyntaxRule
- -
-
-

A SwiftLint CorrectableRule that performs its corrections using a SwiftSyntax SyntaxRewriter.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxRule.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxRule.html deleted file mode 100644 index df5d10eeb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/SwiftSyntaxRule.html +++ /dev/null @@ -1,623 +0,0 @@ - - - - SwiftSyntaxRule Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftSyntaxRule

-
-
- -
public protocol SwiftSyntaxRule : SourceKitFreeRule
- -
-
-

A SwiftLint Rule backed by SwiftSyntax that does not use SourceKit requests.

- - -
-
- -
-
-
-
    -
  • -
    - - - - makeVisitor(file:) - -
    -
    -
    -
    -
    -
    -

    Produce a ViolationsSyntaxVisitor for the given file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func makeVisitor(file: SwiftLintFile) -> ViolationsSyntaxVisitor<ConfigurationType>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file for which to produce the visitor.

    -
    -
    -
    -
    -

    Return Value

    -

    A ViolationsSyntaxVisitor for the given file.

    -
    - -
    -
    -
  • -
  • -
    - - - - makeViolation(file:violation:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Produce a violation for the given file and absolute position.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func makeViolation(file: SwiftLintFile, violation: ReasonedRuleViolation) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for which to produce the violation.

    -
    -
    - - violation - - -
    -

    A violation in the file.

    -
    -
    -
    -
    -

    Return Value

    -

    A violation for the given file and absolute position.

    -
    - -
    -
    -
  • -
  • -
    - - - - preprocess(file:) - - - Default implementation - -
    -
    -
    -
    -
    -
    -

    Gives a chance for the rule to do some pre-processing on the syntax tree. -One typical example is using SwiftOperators to “fold” the tree, resolving operators precedence. -This can also be used to skip validation in a given file. -By default, it just returns the file’s syntaxTree.

    - -
    -

    Default Implementation

    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func preprocess(file: SwiftLintFile) -> SourceFileSyntax?
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - file - - -
    -

    The file to run pre-processing on.

    -
    -
    -
    -
    -

    Return Value

    -

    The tree that will be used to check for violations. If nil, this rule will return no violations.

    -
    - -
    -
    -
  • -
  • -
    - - - - validate(file:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @inlinable
    -func validate(file: SwiftLintFile) -> [StyleViolation]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/VersionComparable.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/VersionComparable.html deleted file mode 100644 index 490facae9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Protocols/VersionComparable.html +++ /dev/null @@ -1,496 +0,0 @@ - - - - VersionComparable Protocol Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

VersionComparable

-
-
- -
public protocol VersionComparable : Comparable
- -
-
-

A comparable major.minor.patch version number.

- - -
-
- -
-
-
-
    -
  • -
    - - - - rawValue - -
    -
    -
    -
    -
    -
    -

    The version string.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    var rawValue: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Self, rhs: Self) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - - - Extension method - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Self, rhs: Self) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Rules.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Rules.html deleted file mode 100644 index f5035fdfd..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Rules.html +++ /dev/null @@ -1,398 +0,0 @@ - - - - Rules Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Rules

- -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs.html deleted file mode 100644 index 83e58543e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs.html +++ /dev/null @@ -1,1393 +0,0 @@ - - - - Structures Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Structures

-

The following structures are available globally.

- -
-
- -
-
-
-
    -
  • -
    - - - - RuleListDocumentation - -
    -
    -
    -
    -
    -
    -

    User-facing documentation for a SwiftLint RuleList.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleListDocumentation
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Stack - -
    -
    -
    -
    -
    -
    -

    A basic stack type implementing the LIFO principle - only the last inserted element can be accessed and removed.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Stack<Element>
    -
    extension Stack: Sequence
    -
    extension Stack: CustomDebugStringConvertible where Element: CustomDebugStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Baseline - -
    -
    -
    -
    -
    -
    -

    A set of violations that can be used to filter newly detected violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Baseline : Equatable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A rule configuration that allows to disable (off) an option of a rule or specify its severity level in which -case it’s active.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct ChildOptionSeverityConfiguration<Parent> : RuleConfiguration, AcceptableByConfigurationElement where Parent : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Command - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Command : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Configuration - -
    -
    -
    -
    -
    -
    -

    The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Configuration
    -
    extension Configuration: Hashable
    -
    extension Configuration: CustomStringConvertible
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Correction - -
    -
    -
    -
    -
    -
    -

    A value describing a SwiftLint violation that was corrected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Correction : Equatable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Example - -
    -
    -
    -
    -
    -
    -

    Captures code and context information for an example of a triggering or -non-triggering style

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Example : Sendable
    -
    extension Example: Hashable
    -
    extension Example: Comparable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Linter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can be linted for style violations and corrections after being collected.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Linter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - CollectedLinter - -
    -
    -
    -
    -
    -
    -

    Represents a file that can compute style violations and corrections for a list of rules.

    - -

    A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct CollectedLinter
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Location - -
    -
    -
    -
    -
    -
    -

    The placement of a segment of Swift in a collection of source files.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Location : CustomStringConvertible, Comparable, Codable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Region - -
    -
    -
    -
    -
    -
    -

    A contiguous region of Swift source code.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Region : Equatable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Description of a rule configuration.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleConfigurationDescription : Equatable
    -
    extension RuleConfigurationDescription: Documentable
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    A single option of a RuleConfigurationDescription.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleConfigurationOption : Equatable
    -
    extension RuleConfigurationOption: Documentable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Result builder -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    A result builder creating configuration descriptions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @resultBuilder
    -public struct RuleConfigurationDescriptionBuilder
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Property wrapper -

-
-
-
    -
  • -
    - - - - ConfigurationElement - -
    -
    -
    -
    -
    -
    -

    A single parameter of a rule configuration.

    - -

    Apply it to a simple (e.g. boolean) property like

    -
    @ConfigurationElement
    -var property = true
    -
    - -

    to add a (boolean) option to a configuration. The name of the option will be inferred from the name of the property. -In this case, it’s just property. CamelCase names will translated into snake_case, i.e. myOption is going to be -translated into my_option in the .swiftlint.yml configuration file.

    - -

    This mechanism may be overwritten with an explicitly set key:

    -
    @ConfigurationElement(key: "foo_bar")
    -var property = true
    -
    - -

    If the wrapped element is an InlinableOptionType, there are three ways to represent it in the documentation:

    - -
      -
    1. It can be inlined into the parent configuration. For that, add the parameter inline: true. E.g. -swift -@ConfigurationElement(inline: true) -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will be documented as a linear list: - -warning: 1 -error: 2 -
    2. -
    3. It can be represented as a separate nested configuration. In this case, it must not have set the inline flag to -true. E.g. -swift -@ConfigurationElement -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will have a nested configuration section: - -levels: warning: 1 - error: 2 -
    4. -
    5. As mentioned in the beginning, the implicit key inference mechanism can be overruled by specifying a key as in: -swift -@ConfigurationElement(key: "foo") -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -It will appear in the documentation as: - -foo: warning: 1 - error: 2 -
    6. -
    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @propertyWrapper
    -public struct ConfigurationElement<T> : Equatable where T : Equatable, T : AcceptableByConfigurationElement
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SeverityConfiguration - -
    -
    -
    -
    -
    -
    -

    A rule configuration that allows specifying the desired severity level for violations.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SeverityConfiguration<Parent> : SeverityBasedRuleConfiguration, InlinableOptionType where Parent : Rule
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleDescription - -
    -
    -
    -
    -
    -
    -

    A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleDescription : Equatable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleList - -
    -
    -
    -
    -
    -
    -

    A list of available SwiftLint rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleList
    -
    extension RuleList: Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - RuleParameter - -
    -
    -
    -
    -
    -
    -

    A configuration parameter for rules.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct RuleParameter<T> : Equatable where T : Equatable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - StyleViolation - -
    -
    -
    -
    -
    -
    -

    A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct StyleViolation : CustomStringConvertible, Codable, Hashable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxMap - -
    -
    -
    -
    -
    -
    -

    Represents a Swift file’s syntax information.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftLintSyntaxToken - -
    -
    -
    -
    -
    -
    -

    A SwiftLint-aware Swift syntax token.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftLintSyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - SwiftVersion - -
    -
    -
    -
    -
    -
    -

    A value describing the version of the Swift compiler.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct SwiftVersion : RawRepresentable, Codable, VersionComparable, Sendable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Version - -
    -
    -
    -
    -
    -
    -

    A type describing the SwiftLint version.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct Version : VersionComparable
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

YamlParser -

-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Baseline.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Baseline.html deleted file mode 100644 index 2a992c778..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Baseline.html +++ /dev/null @@ -1,685 +0,0 @@ - - - - Baseline Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Baseline

-
-
- -
public struct Baseline : Equatable
- -
-
-

A set of violations that can be used to filter newly detected violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - violations - -
    -
    -
    -
    -
    -
    -

    The stored violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var violations: [StyleViolation] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(fromPath:) - -
    -
    -
    -
    -
    -
    -

    Creates a Baseline from a saved file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(fromPath path: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - fromPath - - -
    -

    The path to read from.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(violations:) - -
    -
    -
    -
    -
    -
    -

    Creates a Baseline from a list of violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(violations: [StyleViolation])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations for the baseline.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - write(toPath:) - -
    -
    -
    -
    -
    -
    -

    Writes a Baseline to disk in JSON format.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func write(toPath path: String) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - toPath - - -
    -

    The path to write to.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - filter(_:) - -
    -
    -
    -
    -
    -
    -

    Filters out violations that are present in the Baseline.

    - -

    Assumes that all violations are from the same file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func filter(_ violations: [StyleViolation]) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - violations - - -
    -

    The violations to filter.

    -
    -
    -
    -
    -

    Return Value

    -

    The new violations.

    -
    - -
    -
    -
  • -
  • -
    - - - - compare(_:) - -
    -
    -
    -
    -
    -
    -

    Returns the violations that are present in another Baseline, but not in this one.

    - -

    The violations are filtered using the same algorithm as the filter method above.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func compare(_ otherBaseline: `Self`) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - otherBaseline - - -
    -

    The other Baseline.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ChildOptionSeverityConfiguration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ChildOptionSeverityConfiguration.html deleted file mode 100644 index 2a191a33f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ChildOptionSeverityConfiguration.html +++ /dev/null @@ -1,582 +0,0 @@ - - - - ChildOptionSeverityConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ChildOptionSeverityConfiguration

-
-
- -
public struct ChildOptionSeverityConfiguration<Parent> : RuleConfiguration, AcceptableByConfigurationElement where Parent : Rule
- -
-
-

A rule configuration that allows to disable (off) an option of a rule or specify its severity level in which -case it’s active.

- - -
-
- -
-
-
-
    -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Configuration with a warning severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var error: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Configuration with an error severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var warning: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - off - -
    -
    -
    -
    -
    -
    -

    Configuration disabling an option.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var off: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The ChildOptionSeverityConfiguration mapped to a usually used ViolationSeverity. It’s nil if the option -is set to off.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var severity: ViolationSeverity? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - asOption() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func asOption() -> OptionType
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/CollectedLinter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/CollectedLinter.html deleted file mode 100644 index b22d1e4d9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/CollectedLinter.html +++ /dev/null @@ -1,655 +0,0 @@ - - - - CollectedLinter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

CollectedLinter

-
-
- -
public struct CollectedLinter
- -
-
-

Represents a file that can compute style violations and corrections for a list of rules.

- -

A CollectedLinter is only created after a Linter has run its collection steps in Linter.collect(into:).

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolations(using storage: RuleStorage) -> [StyleViolation]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Computes or retrieves style violations and the time spent executing each rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func styleViolationsAndRuleTimes(using storage: RuleStorage)
    -    -> ([StyleViolation], [(id: String, time: Double)])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All style violations found by this linter, and the time spent executing each rule.

    -
    - -
    -
    -
  • -
  • -
    - - - - correct(using:) - -
    -
    -
    -
    -
    -
    -

    Applies corrections for all rules to this file, returning performed corrections.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func correct(using storage: RuleStorage) -> [Correction]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object containing all collected info.

    -
    -
    -
    -
    -

    Return Value

    -

    All corrections that were applied.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Formats the file associated with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func format(useTabs: Bool, indentWidth: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - useTabs - - -
    -

    Should the file be formatted using tabs?

    -
    -
    - - indentWidth - - -
    -

    How many spaces should be used per indentation level.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command.html deleted file mode 100644 index 844fdc42e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command.html +++ /dev/null @@ -1,803 +0,0 @@ - - - - Command Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Command

-
-
- -
public struct Command : Equatable
- -
-
-

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - Action - -
    -
    -
    -
    -
    -
    -

    The action (verb) that SwiftLint should perform when interpreting this command.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Action : String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - Modifier - -
    -
    -
    -
    -
    -
    -

    The modifier for a command, used to modify its scope.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum Modifier : String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - action - -
    -
    -
    -
    -
    -
    -

    The action (verb) that SwiftLint should perform when interpreting this command.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let action: Action
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleIdentifiers - -
    -
    -
    -
    -
    -
    -

    The identifiers for the rules associated with this command.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleIdentifiers: Set<RuleIdentifier>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line in the source file where this command is defined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: Int
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - character - -
    -
    -
    -
    -
    -
    -

    The character offset within the line in the source file where this command is defined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let character: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - modifier - -
    -
    -
    -
    -
    -
    -

    This command’s modifier, if any.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let modifier: Modifier?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(action: Action,
    -            ruleIdentifiers: Set<RuleIdentifier> = [],
    -            line: Int = 0,
    -            character: Int? = nil,
    -            modifier: Modifier? = nil,
    -            trailingComment: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - action - - -
    -

    This command’s action.

    -
    -
    - - ruleIdentifiers - - -
    -

    The identifiers for the rules associated with this command.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    - - modifier - - -
    -

    This command’s modifier, if any.

    -
    -
    - - trailingComment - - -
    -

    The comment following this command’s - delimiter, if any.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a command based on the specified parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(actionString: String, line: Int, character: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - actionString - - -
    -

    The string in the command’s definition describing its action.

    -
    -
    - - line - - -
    -

    The line in the source file where this command is defined.

    -
    -
    - - character - - -
    -

    The character offset within the line in the source file where this command is - defined.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Action.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Action.html deleted file mode 100644 index 3defc9750..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Action.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - Action Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Action

-
-
- -
public enum Action : String
- -
-
-

The action (verb) that SwiftLint should perform when interpreting this command.

- - -
-
- -
-
-
-
    -
  • -
    - - - - enable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be enabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case enable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - disable - -
    -
    -
    -
    -
    -
    -

    The rule(s) associated with this command should be disabled by the SwiftLint engine.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case disable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalid - -
    -
    -
    -
    -
    -
    -

    The action string was invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalid
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Modifier.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Modifier.html deleted file mode 100644 index 3742806fa..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Command/Modifier.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - Modifier Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Modifier

-
-
- -
public enum Modifier : String
- -
-
-

The modifier for a command, used to modify its scope.

- - -
-
- -
-
-
-
    -
  • -
    - - - - previous - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line preceding its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case previous
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - this - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the same line as its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case this
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - next - -
    -
    -
    -
    -
    -
    -

    The command should only apply to the line following its definition.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case next
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - invalid - -
    -
    -
    -
    -
    -
    -

    The modifier string was invalid.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    case invalid
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Configuration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Configuration.html deleted file mode 100644 index 2b3d747fc..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Configuration.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - - Configuration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Configuration

-
-
- -
public struct Configuration
-
extension Configuration: Hashable
-
extension Configuration: CustomStringConvertible
- -
-
-

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

- - -
-
- -
-
-
-
- - -
- -

Properties: Static -

-
-
-
    -
  • -
    - - - - default - -
    -
    -
    -
    -
    -
    -

    The default Configuration resulting from an empty configuration file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var `default`: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - defaultFileName - -
    -
    -
    -
    -
    -
    -

    The default file name to look for user-defined configurations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let defaultFileName: String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Instance -

-
-
-
    -
  • -
    - - - - includedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be included when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var includedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excludedPaths - -
    -
    -
    -
    -
    -
    -

    The paths that should be excluded when linting

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var excludedPaths: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - indentation - -
    -
    -
    -
    -
    -
    -

    The style to use when indenting Swift source code.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let indentation: IndentationStyle
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warningThreshold - -
    -
    -
    -
    -
    -
    -

    The threshold for the number of warnings to tolerate before treating the lint as having failed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let warningThreshold: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reporter - -
    -
    -
    -
    -
    -
    -

    The identifier for the Reporter to use to report style violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reporter: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - cachePath - -
    -
    -
    -
    -
    -
    -

    The location of the persisted cache to use with this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let cachePath: String?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let allowZeroLintableFiles: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - strict - -
    -
    -
    -
    -
    -
    -

    Treat warnings as errors.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let strict: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - lenient - -
    -
    -
    -
    -
    -
    -

    Treat errors as warnings.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let lenient: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - baseline - -
    -
    -
    -
    -
    -
    -

    The path to read a baseline from.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let baseline: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - writeBaseline - -
    -
    -
    -
    -
    -
    -

    The path to write a baseline to.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let writeBaseline: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - checkForUpdates - -
    -
    -
    -
    -
    -
    -

    Check for updates.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let checkForUpdates: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    This value is true iff the --config parameter was used to specify (a) configuration file(s) -In particular, this means that the value is also true if the --config parameter -was used to explicitly specify the default .swiftlint.yml as the configuration file

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var basedOnCustomConfigurationFiles: Bool { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public Computed -

-
-
-
    -
  • -
    - - - - rules - -
    -
    -
    -
    -
    -
    -

    All rules enabled in this configuration

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rules: [any Rule] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rootDirectory - -
    -
    -
    -
    -
    -
    -

    The root directory is the directory that included & excluded paths relate to. -By default, the root directory is the current working directory, -but during some merging algorithms it may be used differently. -The rootDirectory also serves as the stopping point when searching for nested configs along the file hierarchy.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rootDirectory: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rulesMode - -
    -
    -
    -
    -
    -
    -

    The rules mode used for this configuration.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rulesMode: RulesMode { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Public -

-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Creates a Configuration with convenience parameters.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(
    -    configurationFiles: [String], // No default value here to avoid ambiguous Configuration() initializer
    -    enableAllRules: Bool = false,
    -    onlyRule: [String] = [],
    -    cachePath: String? = nil,
    -    ignoreParentAndChildConfigs: Bool = false,
    -    mockedNetworkResults: [String: String] = [:],
    -    useDefaultConfigOnFailure: Bool? = nil // swiftlint:disable:this discouraged_optional_boolean
    -)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - configurationFiles - - -
    -

    The path on disk to one or multiple configuration files. If this array - is empty, the default .swiftlint.yml file will be used.

    -
    -
    - - enableAllRules - - -
    -

    Enable all available rules.

    -
    -
    - - cachePath - - -
    -

    The location of the persisted cache to use whith this configuration.

    -
    -
    - - ignoreParentAndChildConfigs - - -
    -

    If true, child and parent config references will be ignored.

    -
    -
    - - mockedNetworkResults - - -
    -

    For testing purposes only. Instead of loading the specified urls, - the mocked value will be used. Example: [“http://mock.com”: “content”]

    -
    -
    - - useDefaultConfigOnFailure - - -
    -

    If this value is specified, it will override the normal behavior. - This is only intended for tests checking whether invalid configs fail.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Hashable -

-
-
-
    -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Configuration, rhs: Configuration) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

CustomStringConvertible -

-
-
-
    -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement.html deleted file mode 100644 index 2ca6d3b51..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement.html +++ /dev/null @@ -1,898 +0,0 @@ - - - - ConfigurationElement Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ConfigurationElement

-
-
- -
@propertyWrapper
-public struct ConfigurationElement<T> : Equatable where T : Equatable, T : AcceptableByConfigurationElement
- -
-
-

A single parameter of a rule configuration.

- -

Apply it to a simple (e.g. boolean) property like

-
@ConfigurationElement
-var property = true
-
- -

to add a (boolean) option to a configuration. The name of the option will be inferred from the name of the property. -In this case, it’s just property. CamelCase names will translated into snake_case, i.e. myOption is going to be -translated into my_option in the .swiftlint.yml configuration file.

- -

This mechanism may be overwritten with an explicitly set key:

-
@ConfigurationElement(key: "foo_bar")
-var property = true
-
- -

If the wrapped element is an InlinableOptionType, there are three ways to represent it in the documentation:

- -
    -
  1. It can be inlined into the parent configuration. For that, add the parameter inline: true. E.g. -swift -@ConfigurationElement(inline: true) -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will be documented as a linear list: - -warning: 1 -error: 2 -
  2. -
  3. It can be represented as a separate nested configuration. In this case, it must not have set the inline flag to -true. E.g. -swift -@ConfigurationElement -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -will have a nested configuration section: - -levels: warning: 1 - error: 2 -
  4. -
  5. As mentioned in the beginning, the implicit key inference mechanism can be overruled by specifying a key as in: -swift -@ConfigurationElement(key: "foo") -var levels = SeverityLevelsConfiguration(warning: 1, error: 2) - -It will appear in the documentation as: - -foo: warning: 1 - error: 2 -
  6. -
- - -
-
- -
-
-
-
    -
  • -
    - - - - DeprecationNotice - -
    -
    -
    -
    -
    -
    -

    A deprecation notice.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public enum DeprecationNotice
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - wrappedValue - -
    -
    -
    -
    -
    -
    -

    Wrapped option value.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var wrappedValue: T { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - projectedValue - -
    -
    -
    -
    -
    -
    -

    The wrapper itself providing access to all its data. This field can only be accessed by the -element’s name prefixed with a $.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var projectedValue: `Self` { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - key - -
    -
    -
    -
    -
    -
    -

    Name of this configuration entry.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var key: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - inline - -
    -
    -
    -
    -
    -
    -

    Whether this configuration element will be inlined into its description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let inline: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Default constructor.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(wrappedValue value: T,
    -            key: String,
    -            deprecationNotice: DeprecationNotice? = nil,
    -            postprocessor: @escaping (inout T) -> Void = { _ in })
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - value - - -
    -

    Value to be wrapped.

    -
    -
    - - key - - -
    -

    Optional name of the option. If not specified, it will be inferred from the attributed property.

    -
    -
    - - deprecationNotice - - -
    -

    An optional deprecation notice in case an option is outdated and/or has been replaced by - an alternative.

    -
    -
    - - postprocessor - - -
    -

    Function to be applied to the wrapped value after parsing to validate and modify it.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(key:) - -
    -
    -
    -
    -
    -
    -

    Constructor for optional values.

    - -

    It allows to skip explicit initialization of the property with nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init<Wrapped>(key: String) where T == Wrapped?, Wrapped : Equatable, Wrapped : AcceptableByConfigurationElement
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - key - - -
    -

    Optional name of the option. If not specified, it will be inferred from the attributed property.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Constructor for an InlinableOptionType without a key.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(wrappedValue value: T, inline: Bool) where T : InlinableOptionType
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    Value to be wrapped.

    -
    -
    - - inline - - -
    -

    If true, the option will be handled as it would be part of its parent. All of its options - will be inlined. Otherwise, it will be treated as a normal nested configuration with its name - inferred from the name of the attributed property.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Constructor for an InlinableOptionType with a name. The configuration will explicitly not be inlined.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(wrappedValue value: T, key: String) where T : InlinableOptionType
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - value - - -
    -

    Value to be wrapped.

    -
    -
    - - key - - -
    -

    Name of the option.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement/DeprecationNotice.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement/DeprecationNotice.html deleted file mode 100644 index 69f581a15..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ConfigurationElement/DeprecationNotice.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - DeprecationNotice Enumeration Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

DeprecationNotice

-
-
- -
public enum DeprecationNotice
- -
-
-

A deprecation notice.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Correction.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Correction.html deleted file mode 100644 index 21c63dd6d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Correction.html +++ /dev/null @@ -1,553 +0,0 @@ - - - - Correction Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Correction

-
-
- -
public struct Correction : Equatable, Sendable
- -
-
-

A value describing a SwiftLint violation that was corrected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule for which this correction was applied.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: RuleDescription
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of the original violation that was corrected.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let location: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable description for this correction.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Memberwise initializer.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(ruleDescription: RuleDescription, location: Location)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - ruleDescription - - -
    -

    The description of the rule for which this correction was applied.

    -
    -
    - - location - - -
    -

    The location of the original violation that was corrected.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Example.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Example.html deleted file mode 100644 index 27903dd05..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Example.html +++ /dev/null @@ -1,951 +0,0 @@ - - - - Example Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Example

-
-
- -
public struct Example : Sendable
-
extension Example: Hashable
-
extension Example: Comparable
- -
-
-

Captures code and context information for an example of a triggering or -non-triggering style

- - -
-
- -
-
-
-
    -
  • -
    - - - - code - -
    -
    -
    -
    -
    -
    -

    The contents of the example

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var code: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - configuration - -
    -
    -
    -
    -
    -
    -

    The untyped configuration to apply to the rule, if deviating from the default configuration. -The structure should match what is expected as a configuration value for the rule being tested.

    - -

    For example, if the following YAML would be used to configure the rule:

    -
    severity: warning
    -
    - -

    Then the equivalent configuration value would be ["severity": "warning"].

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var configuration: [String : any Sendable]? { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testMultiByteOffsets - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters

    -
    -

    See also

    - addEmoji(_:) - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testMultiByteOffsets: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - testOnLinux - -
    -
    -
    -
    -
    -
    -

    Whether the example should be tested on Linux

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var testOnLinux: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The path to the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var file: StaticString { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line in the file where the example was created

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var line: UInt
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Create a new Example with the specified code, file, and line.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    init(_ code: String,
    -     configuration: [String: any Sendable]? = nil,
    -     testMultiByteOffsets: Bool = true,
    -     testWrappingInComment: Bool = true,
    -     testWrappingInString: Bool = true,
    -     testDisableCommand: Bool = true,
    -     testOnLinux: Bool = true,
    -     file: StaticString = #filePath,
    -     line: UInt = #line,
    -     excludeFromDocumentation: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - code - - -
    -

    The contents of the example.

    -
    -
    - - configuration - - -
    -

    The untyped configuration to apply to the rule, if deviating from the default - configuration.

    -
    -
    - - testMultibyteOffsets - - -
    -

    Whether the example should be tested by prepending multibyte grapheme clusters.

    -
    -
    - - testWrappingInComment - - -
    -

    Whether test shall verify that the example wrapped in a comment doesn’t trigger.

    -
    -
    - - testWrappingInString - - -
    -

    Whether tests shall verify that the example wrapped into a string doesn’t trigger.

    -
    -
    - - testDisableCommand - - -
    -

    Whether tests shall verify that the disabled rule (comment in the example) doesn’t - trigger.

    -
    -
    - - testOnLinux - - -
    -

    Whether the example should be tested on Linux.

    -
    -
    - - file - - -
    -

    The path to the file where the example is located. - Defaults to the file where this initializer is called.

    -
    -
    - - line - - -
    -

    The line in the file where the example is located. - Defaults to the line where this initializer is called.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(code:) - -
    -
    -
    -
    -
    -
    -

    Returns the same example, but with the code that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func with(code: String) -> Example
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - code - - -
    -

    the new code to use in the modified example

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns a copy of the Example with all instances of the “↓” character removed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func removingViolationMarkers() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - focused() - -
    -
    -
    -
    -
    -
    -

    Makes the current example focused. This is for debugging purposes only.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func focused() -> Example
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: Example, rhs: Example) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Linter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Linter.html deleted file mode 100644 index 0ce8f124c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Linter.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - Linter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Linter

-
-
- -
public struct Linter
- -
-
-

Represents a file that can be linted for style violations and corrections after being collected.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file to lint with this linter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: SwiftLintFile
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - isCollecting - -
    -
    -
    -
    -
    -
    -

    Whether or not this linter will be used to collect information from several files.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var isCollecting: Bool
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Linter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile,
    -            configuration: Configuration = Configuration.default,
    -            cache: LinterCache? = nil,
    -            compilerArguments: [String] = [])
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file to lint with this linter.

    -
    -
    - - configuration - - -
    -

    The SwiftLint configuration to apply to this linter.

    -
    -
    - - cache - - -
    -

    The persisted cache to use for this linter.

    -
    -
    - - compilerArguments - - -
    -

    The compiler arguments to use for this linter if it is to execute analyzer rules.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - collect(into:) - -
    -
    -
    -
    -
    -
    -

    Returns a linter capable of checking for violations after running each rule’s collection step.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func collect(into storage: RuleStorage) -> CollectedLinter
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - storage - - -
    -

    The storage object where collected info should be saved.

    -
    -
    -
    -
    -

    Return Value

    -

    A linter capable of checking for violations after running each rule’s collection step.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Location.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Location.html deleted file mode 100644 index 5026cb0b4..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Location.html +++ /dev/null @@ -1,853 +0,0 @@ - - - - Location Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Location

-
-
- -
public struct Location : CustomStringConvertible, Comparable, Codable, Sendable
- -
-
-

The placement of a segment of Swift in a collection of source files.

- - -
-
- -
-
-
-
    -
  • -
    - - - - file - -
    -
    -
    -
    -
    -
    -

    The file path on disk for this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let file: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - line - -
    -
    -
    -
    -
    -
    -

    The line offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let line: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - character - -
    -
    -
    -
    -
    -
    -

    The character offset in the file for this location. 1-indexed.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let character: Int?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A lossless printable description of this location.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - relativeFile - -
    -
    -
    -
    -
    -
    -

    The file path for this location relative to the current working directory.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var relativeFile: String? { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: String?, line: Int? = nil, character: Int? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - file - - -
    -

    The file path on disk for this location.

    -
    -
    - - line - - -
    -

    The line offset in the file for this location. 1-indexed.

    -
    -
    - - character - - -
    -

    The character offset in the file for this location. 1-indexed.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a byte-offset into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, byteOffset offset: ByteCount)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in bytes into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(file:position:) - -
    -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a SwiftSyntax AbsolutePosition into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, position: AbsolutePosition)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - position - - -
    -

    The absolute position returned from SwiftSyntax.

    -
    -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file. -Fails if the specified offset was not a valid location in the file.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(file: SwiftLintFile, characterOffset offset: Int)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - file - - -
    -

    The file for this location.

    -
    -
    - - offset - - -
    -

    The offset in UTF8 fragments into the file for this location.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Comparable -

-
-
-
    -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation.html deleted file mode 100644 index 8c598a892..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation.html +++ /dev/null @@ -1,672 +0,0 @@ - - - - ReasonedRuleViolation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ReasonedRuleViolation

-
-
- -
public struct ReasonedRuleViolation : Comparable, Hashable
- -
-
-

A violation produced by ViolationsSyntaxVisitors.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ViolationCorrection - -
    -
    -
    -
    -
    -
    -

    The correction of a violation that is basically the violation’s range in the source code and a -replacement for this range that would fix the violation.

    - - See more -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public struct ViolationCorrection : Hashable
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - position - -
    -
    -
    -
    -
    -
    -

    The violation’s position.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let position: AbsolutePosition
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    A specific reason for the violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reason: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The violation’s severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let severity: ViolationSeverity?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - correction - -
    -
    -
    -
    -
    -
    -

    An optional correction of the violation to be used in rewriting (see SwiftSyntaxCorrectableRule). Can be -left unset when creating a violation, especially if the rule is not correctable or provides a custom rewriter.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let correction: ViolationCorrection?
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a ReasonedRuleViolation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(position: AbsolutePosition,
    -            reason: String? = nil,
    -            severity: ViolationSeverity? = nil,
    -            correction: ViolationCorrection? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - position - - -
    -

    The violations position in the analyzed source file.

    -
    -
    - - reason - - -
    -

    The reason for the violation if different from the rule’s description.

    -
    -
    - - severity - - -
    -

    The severity of the violation if different from the rule’s default configured severity.

    -
    -
    - - correction - - -
    -

    An optional correction of the violation to be used in rewriting.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - <(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func < (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation/ViolationCorrection.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation/ViolationCorrection.html deleted file mode 100644 index 81c3deb43..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/ReasonedRuleViolation/ViolationCorrection.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - ViolationCorrection Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

ViolationCorrection

-
-
- -
public struct ViolationCorrection : Hashable
- -
-
-

The correction of a violation that is basically the violation’s range in the source code and a -replacement for this range that would fix the violation.

- - -
-
- -
-
-
-
    -
  • - -
    -
    -
    -
    -
    -

    Create a ViolationCorrection.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(start: AbsolutePosition, end: AbsolutePosition, replacement: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - start - - -
    -

    Start position of the violation range.

    -
    -
    - - end - - -
    -

    End position of the violation range.

    -
    -
    - - replacement - - -
    -

    Replacement for the violating range.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RegexConfiguration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RegexConfiguration.html deleted file mode 100644 index a35097456..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RegexConfiguration.html +++ /dev/null @@ -1,810 +0,0 @@ - - - - RegexConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RegexConfiguration

-
-
- -
public struct RegexConfiguration<Parent: Rule>: SeverityBasedRuleConfiguration, Hashable,
-                                                CacheDescriptionProvider, InlinableOptionType
- -
-
-

A rule configuration used for defining custom rules in yaml.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The identifier for this custom rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - name - -
    -
    -
    -
    -
    -
    -

    The name for this custom rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var name: String?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - message - -
    -
    -
    -
    -
    -
    -

    The message to be presented when producing violations.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var message: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - included - -
    -
    -
    -
    -
    -
    -

    Regular expressions to include when matching the file path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var included: [NSRegularExpression]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excluded - -
    -
    -
    -
    -
    -
    -

    Regular expressions to exclude when matching the file path.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var excluded: [NSRegularExpression]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - excludedMatchKinds - -
    -
    -
    -
    -
    -
    -

    The syntax kinds to exclude from matches. If the regex matched syntax kinds from this list, it would -be ignored and not count as a rule violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var excludedMatchKinds: Set<SyntaxKind>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severityConfiguration - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @ConfigurationElement
    -public var severityConfiguration: SeverityConfiguration<Parent> { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - captureGroup - -
    -
    -
    -
    -
    -
    -

    The index of the regex capture group to match.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var captureGroup: Int
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - cacheDescription - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var cacheDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    The RuleDescription for the custom rule defined here.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: RuleDescription { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(identifier:) - -
    -
    -
    -
    -
    -
    -

    Create a RegexConfiguration with the specified identifier, with other properties to be set later.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(identifier: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - identifier - - -
    -

    The rule identifier to use.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Region.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Region.html deleted file mode 100644 index db96fcc2c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Region.html +++ /dev/null @@ -1,840 +0,0 @@ - - - - Region Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Region

-
-
- -
public struct Region : Equatable
- -
-
-

A contiguous region of Swift source code.

- - -
-
- -
-
-
-
    -
  • -
    - - - - start - -
    -
    -
    -
    -
    -
    -

    The location describing the start of the region. All locations that are less than this value -(earlier in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let start: Location
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - end - -
    -
    -
    -
    -
    -
    -

    The location describing the end of the region. All locations that are greater than this value -(later in the source file) are not contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let end: Location
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let disabledRuleIdentifiers: Set<RuleIdentifier>
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a Region by setting explicit values for all its properties.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(start: Location, end: Location, disabledRuleIdentifiers: Set<RuleIdentifier>)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - -
    - - start - - -
    -

    The region’s starting location.

    -
    -
    - - end - - -
    -

    The region’s ending location.

    -
    -
    - - disabledRuleIdentifiers - - -
    -

    All SwiftLint rule identifiers that are disabled in this region.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - contains(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specific location is contained in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contains(_ location: Location) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    The location to check for containment.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specific location is contained in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleEnabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is enabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleEnabled(_ rule: some Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is enabled in this region.

    -
    - -
    -
    -
  • -
  • -
    - - - - isRuleDisabled(_:) - -
    -
    -
    -
    -
    -
    -

    Whether the specified rule is disabled in this region.

    -
    -

    Note

    -

    For CustomRules, this will only return true if the custom_rules identifier - is used with the swiftlint disable command, but this method is never - called for CustomRules.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func isRuleDisabled(_ rule: some Rule) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule whose status should be determined.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rule is disabled in this region.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Whether the given rules are disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func areRulesDisabled(ruleIDs: [String]) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - ruleIDs - - -
    -

    A list of rule IDs. Typically all identifiers of a single rule.

    -
    -
    -
    -
    -

    Return Value

    -

    True if the specified rules are disabled in this region.

    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Returns the deprecated rule aliases that are disabling the specified rule in this region. -Returns the empty set if the rule isn’t disabled in this region.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func deprecatedAliasesDisabling(rule: some Rule) -> Set<String>
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rule - - -
    -

    The rule to check.

    -
    -
    -
    -
    -

    Return Value

    -

    Deprecated rule aliases.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationDescription.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationDescription.html deleted file mode 100644 index 7854f680d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationDescription.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - RuleConfigurationDescription Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfigurationDescription

-
-
- -
public struct RuleConfigurationDescription : Equatable
-
extension RuleConfigurationDescription: Documentable
- -
-
-

Description of a rule configuration.

- - -
-
- -
-
-
-
    -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func oneLiner() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func markdown() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func yaml() -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationOption.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationOption.html deleted file mode 100644 index 6b72871ce..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleConfigurationOption.html +++ /dev/null @@ -1,549 +0,0 @@ - - - - RuleConfigurationOption Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleConfigurationOption

-
-
- -
public struct RuleConfigurationOption : Equatable
-
extension RuleConfigurationOption: Documentable
- -
-
-

A single option of a RuleConfigurationDescription.

- - -
-
- -
-
-
-
    -
  • -
    - - - - noOptions - -
    -
    -
    -
    -
    -
    -

    An option serving as a marker for an empty configuration description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let noOptions: RuleConfigurationOption
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - hasContent - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var hasContent: Bool { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - markdown() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func markdown() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - oneLiner() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func oneLiner() -> String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - yaml() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func yaml() -> String
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleDescription.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleDescription.html deleted file mode 100644 index 5a872120f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleDescription.html +++ /dev/null @@ -1,991 +0,0 @@ - - - - RuleDescription Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleDescription

-
-
- -
public struct RuleDescription : Equatable, Sendable
- -
-
-

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

- - -
-
- -
-
-
-
    -
  • -
    - - - - identifier - -
    -
    -
    -
    -
    -
    -

    The rule’s unique identifier, to be used in configuration files and SwiftLint commands. -Should be short and only comprised of lowercase latin alphabet letters and underscores formatted in snake case.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let identifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - name - -
    -
    -
    -
    -
    -
    -

    The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let name: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an -explanation of the rule’s purpose and rationale.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let description: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The RuleKind that best categorizes this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: RuleKind
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - nonTriggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform -users of various samples of code that are considered valid by this rule. Should be valid Swift syntax but is not -required to compile.

    - -

    These examples are also used for automatic testing purposes. Tests will validate that the rule does not trigger -any violations for these examples.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let nonTriggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - triggeringExamples - -
    -
    -
    -
    -
    -
    -

    Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to -inform users of various samples of code that are considered invalid by this rule. Should be valid Swift syntax -but is not required to compile.

    - -

    Violations should occur where ↓ markers are located.

    - -

    These examples are also used for automatic testing purposes. Tests will validate that the rule triggers -violations for these examples wherever ↓ markers are located.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let triggeringExamples: [Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - corrections - -
    -
    -
    -
    -
    -
    -

    Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values -are the expected value after applying corrections with the rule.

    - -

    Rules that aren’t correctable (conforming to the CorrectableRule protocol) should leave property empty.

    - -

    These examples are used for testing purposes if the rule conforms to AutomaticTestableRule. Tests will -validate that the rule corrects all keys to their corresponding values.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let corrections: [Example : Example]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - deprecatedAliases - -
    -
    -
    -
    -
    -
    -

    Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let deprecatedAliases: Set<String>
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - minSwiftVersion - -
    -
    -
    -
    -
    -
    -

    The oldest version of the Swift compiler supported by this rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let minSwiftVersion: SwiftVersion
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - requiresFileOnDisk - -
    -
    -
    -
    -
    -
    -

    Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules -conforming to AnalyzerRule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let requiresFileOnDisk: Bool
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - consoleDescription - -
    -
    -
    -
    -
    -
    -

    The console-printable string for this description.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var consoleDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - allIdentifiers - -
    -
    -
    -
    -
    -
    -

    All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var allIdentifiers: [String] { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a RuleDescription by specifying all its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(identifier: String,
    -            name: String,
    -            description: String,
    -            kind: RuleKind,
    -            minSwiftVersion: SwiftVersion = .five,
    -            nonTriggeringExamples: [Example] = [],
    -            triggeringExamples: [Example] = [],
    -            corrections: [Example: Example] = [:],
    -            deprecatedAliases: Set<String> = [],
    -            requiresFileOnDisk: Bool = false)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - identifier - - -
    -

    Sets the description’s identifier property.

    -
    -
    - - name - - -
    -

    Sets the description’s name property.

    -
    -
    - - description - - -
    -

    Sets the description’s description property.

    -
    -
    - - kind - - -
    -

    Sets the description’s kind property.

    -
    -
    - - minSwiftVersion - - -
    -

    Sets the description’s minSwiftVersion property.

    -
    -
    - - nonTriggeringExamples - - -
    -

    Sets the description’s nonTriggeringExamples property.

    -
    -
    - - triggeringExamples - - -
    -

    Sets the description’s triggeringExamples property.

    -
    -
    - - corrections - - -
    -

    Sets the description’s corrections property.

    -
    -
    - - deprecatedAliases - - -
    -

    Sets the description’s deprecatedAliases property.

    -
    -
    - - requiresFileOnDisk - - -
    -

    Sets the description’s requiresFileOnDisk property.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Equatable -

-
-
-
    -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: `Self`, rhs: `Self`) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleList.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleList.html deleted file mode 100644 index b87d7a1d9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleList.html +++ /dev/null @@ -1,573 +0,0 @@ - - - - RuleList Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleList

-
-
- -
public struct RuleList
-
extension RuleList: Equatable
- -
-
-

A list of available SwiftLint rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - list - -
    -
    -
    -
    -
    -
    -

    The rules contained in this list.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let list: [String : any Rule.Type]
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Initializers -

-
-
-
    -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: any Rule.Type...)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(rules:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleList by specifying all its rules.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(rules: [any Rule.Type])
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - rules - - -
    -

    The rules to be contained in this list.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - ==(_:_:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func == (lhs: RuleList, rhs: RuleList) -> Bool
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html deleted file mode 100644 index fa67c5bce..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleListDocumentation.html +++ /dev/null @@ -1,505 +0,0 @@ - - - - RuleListDocumentation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleListDocumentation

-
-
- -
public struct RuleListDocumentation
- -
-
-

User-facing documentation for a SwiftLint RuleList.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleListDocumentation instance from a RuleList.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ list: RuleList)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - list - - -
    -

    A RuleList to document.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - write(to:) - -
    -
    -
    -
    -
    -
    -

    Write the rule list documentation as markdown files to the specified directory.

    -
    -

    Throws

    -

    Throws if the files could not be written to.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func write(to url: URL) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - url - - -
    -

    Local URL for directory where the markdown files for this documentation should be saved.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleParameter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleParameter.html deleted file mode 100644 index bdc6bba5c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/RuleParameter.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - RuleParameter Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

RuleParameter

-
-
- -
public struct RuleParameter<T> : Equatable where T : Equatable
- -
-
-

A configuration parameter for rules.

- - -
-
- -
-
-
-
    -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let severity: ViolationSeverity
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The value to configure the rule.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: T
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(severity:value:) - -
    -
    -
    -
    -
    -
    -

    Creates a RuleParameter by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(severity: ViolationSeverity, value: T)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - severity - - -
    -

    The severity that should be assigned to the violation of this parameter’s value is met.

    -
    -
    - - value - - -
    -

    The value to configure the rule.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityConfiguration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityConfiguration.html deleted file mode 100644 index 1b465b14e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityConfiguration.html +++ /dev/null @@ -1,613 +0,0 @@ - - - - SeverityConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SeverityConfiguration

-
-
- -
public struct SeverityConfiguration<Parent> : SeverityBasedRuleConfiguration, InlinableOptionType where Parent : Rule
- -
-
-

A rule configuration that allows specifying the desired severity level for violations.

- - -
-
- -
-
-
-
    -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    Configuration with a warning severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var error: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    Configuration with an error severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static var warning: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severityConfiguration - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var severityConfiguration: `Self` { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(_:) - -
    -
    -
    -
    -
    -
    -

    Create a SeverityConfiguration with the specified severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(_ severity: ViolationSeverity)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - severity - - -
    -

    The severity that should be used when emitting violations.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

RuleConfiguration conformances -

-
-
-
    -
  • -
    - - - - asDescription(with:) - -
    -
    -
    -
    -
    -
    -

    Severity configurations are special in that they shall not be nested when an option name is provided. -Instead, their only option value must be used together with the option name.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    func asDescription(with key: String) -> RuleConfigurationDescription
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityLevelsConfiguration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityLevelsConfiguration.html deleted file mode 100644 index 23732806c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SeverityLevelsConfiguration.html +++ /dev/null @@ -1,584 +0,0 @@ - - - - SeverityLevelsConfiguration Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SeverityLevelsConfiguration

-
-
- -
public struct SeverityLevelsConfiguration<Parent> : RuleConfiguration, InlinableOptionType where Parent : Rule
- -
-
-

A rule configuration that allows specifying thresholds for warning and error severities.

- - -
-
- -
-
-
-
    -
  • -
    - - - - warning - -
    -
    -
    -
    -
    -
    -

    The threshold for a violation to be a warning.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @ConfigurationElement
    -public var warning: Int { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - error - -
    -
    -
    -
    -
    -
    -

    The threshold for a violation to be an error.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @ConfigurationElement
    -public var error: Int? { get set }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(warning:error:) - -
    -
    -
    -
    -
    -
    -

    Create a SeverityLevelsConfiguration based on the specified warning and error thresholds.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(warning: Int, error: Int? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - warning - - -
    -

    The threshold for a violation to be a warning.

    -
    -
    - - error - - -
    -

    The threshold for a violation to be an error.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - params - -
    -
    -
    -
    -
    -
    -

    The rule parameters that define the thresholds that should map to each severity.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var params: [RuleParameter<Int>] { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - apply(configuration:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func apply(configuration: Any) throws
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Stack.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Stack.html deleted file mode 100644 index 54dfb759c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Stack.html +++ /dev/null @@ -1,752 +0,0 @@ - - - - Stack Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Stack

-
-
- -
public struct Stack<Element>
-
extension Stack: Sequence
-
extension Stack: CustomDebugStringConvertible where Element: CustomDebugStringConvertible
- -
-
-

A basic stack type implementing the LIFO principle - only the last inserted element can be accessed and removed.

- - -
-
- -
-
-
-
    -
  • -
    - - - - init() - -
    -
    -
    -
    -
    -
    -

    Creates an empty Stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init()
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - count - -
    -
    -
    -
    -
    -
    -

    The number of elements in this stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var count: Int { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - push(_:) - -
    -
    -
    -
    -
    -
    -

    Pushes (appends) an element onto the stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func push(_ element: Element)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - element - - -
    -

    The element to push onto the stack.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - pop() - -
    -
    -
    -
    -
    -
    -

    Removes and returns the last element of the stack.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    @discardableResult
    -public mutating func pop() -> Element?
    - -
    -
    -
    -

    Return Value

    -

    The last element of the stack if the stack is not empty; otherwise, nil.

    -
    - -
    -
    -
  • -
  • -
    - - - - peek() - -
    -
    -
    -
    -
    -
    -

    Returns the last element of the stack if the stack is not empty; otherwise, nil.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func peek() -> Element?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - contains(where:) - -
    -
    -
    -
    -
    -
    -

    Check whether the sequence contains an element that satisfies the given predicate.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func contains(where predicate: (Element) -> Bool) -> Bool
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - predicate - - -
    -

    A closure that takes an element of the sequence -and returns whether it represents a match.

    -
    -
    -
    -
    -

    Return Value

    -

    true if the sequence contains an element that satisfies predicate.

    -
    - -
    -
    -
  • -
  • -
    - - - - modifyLast(by:) - -
    -
    -
    -
    -
    -
    -

    Modify the last element.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public mutating func modifyLast(by modifier: (inout Element) -> Void)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - modifier - - -
    -

    A function to be applied to the last element to modify the same in place.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - makeIterator() - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func makeIterator() -> [Element].Iterator
    - -
    -
    - -
    -
    -
  • -
-
-
-
- - -
- -

Available where Element: CustomDebugStringConvertible -

-
-
-
    -
  • -
    - - - - debugDescription - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var debugDescription: String { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/StyleViolation.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/StyleViolation.html deleted file mode 100644 index 01649f140..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/StyleViolation.html +++ /dev/null @@ -1,828 +0,0 @@ - - - - StyleViolation Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

StyleViolation

-
-
- -
public struct StyleViolation : CustomStringConvertible, Codable, Hashable
- -
-
-

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

- - -
-
- -
-
-
-
    -
  • -
    - - - - ruleIdentifier - -
    -
    -
    -
    -
    -
    -

    The identifier of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleIdentifier: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleDescription - -
    -
    -
    -
    -
    -
    -

    The description of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleDescription: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - ruleName - -
    -
    -
    -
    -
    -
    -

    The name of the rule that generated this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let ruleName: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - severity - -
    -
    -
    -
    -
    -
    -

    The severity of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var severity: ViolationSeverity { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - location - -
    -
    -
    -
    -
    -
    -

    The location of this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var location: Location { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - reason - -
    -
    -
    -
    -
    -
    -

    The justification for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let reason: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - description - -
    -
    -
    -
    -
    -
    -

    A printable description for this violation.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var description: String { get }
    - -
    -
    - -
    -
    -
  • -
  • - -
    -
    -
    -
    -
    -

    Creates a StyleViolation by specifying its properties directly.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(ruleDescription: RuleDescription,
    -            severity: ViolationSeverity = .warning,
    -            location: Location,
    -            reason: String? = nil)
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - - - - - - - - - -
    - - ruleDescription - - -
    -

    The description of the rule that generated this violation.

    -
    -
    - - severity - - -
    -

    The severity of this violation.

    -
    -
    - - location - - -
    -

    The location of this violation.

    -
    -
    - - reason - - -
    -

    The justification for this violation. If not specified the rule’s description will - be used.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(severity:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the severity that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(severity: ViolationSeverity) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - severity - - -
    -

    the new severity to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - with(location:) - -
    -
    -
    -
    -
    -
    -

    Returns the same violation, but with the location that is passed in

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func with(location: Location) -> StyleViolation
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - location - - -
    -

    the new location to use in the modified violation

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - hash(into:) - -
    -
    -
    -
    -
    -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func hash(into hasher: inout Hasher)
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html deleted file mode 100644 index 3e08b4918..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxMap.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - SwiftLintSyntaxMap Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxMap

-
-
- -
public struct SwiftLintSyntaxMap
- -
-
-

Represents a Swift file’s syntax information.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxMap
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - tokens - -
    -
    -
    -
    -
    -
    -

    The SwiftLint-specific syntax tokens for this syntax map.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let tokens: [SwiftLintSyntaxToken]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxMap)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxMap obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - tokens(inByteRange:) - -
    -
    -
    -
    -
    -
    -

    Returns array of syntax tokens intersecting with byte range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func tokens(inByteRange byteRange: ByteRange) -> [SwiftLintSyntaxToken]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - byteRange - - -
    -

    Byte-based NSRange.

    -
    -
    -
    -
    -

    Return Value

    -

    The array of syntax tokens intersecting with byte range.

    -
    - -
    -
    -
  • -
  • -
    - - - - kinds(inByteRange:) - -
    -
    -
    -
    -
    -
    -

    Returns the syntax kinds in the specified byte range.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func kinds(inByteRange byteRange: ByteRange) -> [SyntaxKind]
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - byteRange - - -
    -

    Byte range.

    -
    -
    -
    -
    -

    Return Value

    -

    The syntax kinds in the specified byte range.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html deleted file mode 100644 index 230977a4a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftLintSyntaxToken.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - SwiftLintSyntaxToken Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftLintSyntaxToken

-
-
- -
public struct SwiftLintSyntaxToken
- -
-
-

A SwiftLint-aware Swift syntax token.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: SyntaxToken
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - kind - -
    -
    -
    -
    -
    -
    -

    The syntax kind associated with is token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let kind: SyntaxKind?
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: SyntaxToken)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The raw SyntaxToken obtained by SourceKitten.

    -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - range - -
    -
    -
    -
    -
    -
    -

    The byte range in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var range: ByteRange { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - offset - -
    -
    -
    -
    -
    -
    -

    The starting byte offset in a source file for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var offset: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - length - -
    -
    -
    -
    -
    -
    -

    The length in bytes for this token.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var length: ByteCount { get }
    - -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftVersion.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftVersion.html deleted file mode 100644 index 5f99a0e46..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/SwiftVersion.html +++ /dev/null @@ -1,824 +0,0 @@ - - - - SwiftVersion Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

SwiftVersion

-
-
- -
public struct SwiftVersion : RawRepresentable, Codable, VersionComparable, Sendable
- -
-
-

A value describing the version of the Swift compiler.

- - -
-
- -
-
-
- -
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Version.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Version.html deleted file mode 100644 index 5d6ebce5a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/Version.html +++ /dev/null @@ -1,541 +0,0 @@ - - - - Version Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

Version

-
-
- -
public struct Version : VersionComparable
- -
-
-

A type describing the SwiftLint version.

- - -
-
- -
-
-
-
    -
  • -
    - - - - value - -
    -
    -
    -
    -
    -
    -

    The string value for this version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public let value: String
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - rawValue - -
    -
    -
    -
    -
    -
    -

    An alias for value required for protocol conformance.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public var rawValue: String { get }
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - current - -
    -
    -
    -
    -
    -
    -

    The current SwiftLint version.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static let current: Version
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(value:) - -
    -
    -
    -
    -
    -
    -

    Public initializer.

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(value: String)
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - value - - -
    -

    The string value for this version.

    -
    -
    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/YamlParser.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/YamlParser.html deleted file mode 100644 index 0252cef73..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/Structs/YamlParser.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - YamlParser Structure Reference - - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
-

YamlParser

-
-
- -
public struct YamlParser
- -
-
-

An interface for parsing YAML.

- - -
-
- -
-
-
-
    -
  • -
    - - - - parse(_:env:) - -
    -
    -
    -
    -
    -
    -

    Parses the input YAML string as an untyped dictionary.

    -
    -

    Throws

    -

    Throws if the yaml string provided could not be parsed.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public static func parse(_ yaml: String,
    -                         env: [String: String] = ProcessInfo.processInfo.environment) throws -> [String: Any]
    - -
    -
    -
    -

    Parameters

    - - - - - - - - - - - -
    - - yaml - - -
    -

    YAML-formatted string.

    -
    -
    - - env - - -
    -

    The environment to use to expand variables in the YAML.

    -
    -
    -
    -
    -

    Return Value

    -

    The parsed YAML as an untyped dictionary.

    -
    - -
    -
    -
  • -
-
-
-
- -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_label_for_image.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_label_for_image.html deleted file mode 100644 index 073cd9002..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_label_for_image.html +++ /dev/null @@ -1,648 +0,0 @@ - - - - accessibility_label_for_image Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Accessibility Label for Image

- -

Images that provide context should have an accessibility label or should be explicitly hidden from accessibility

- -
    -
  • Identifier: accessibility_label_for_image
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        Image(decorative: "my-image")
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image", label: Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibility(hidden: true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibility(label: Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image("my-image")
-            .accessibilityLabel(Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(uiImage: myUiImage)
-            .renderingMode(.template)
-            .foregroundColor(.blue)
-            .accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(uiImage: myUiImage)
-            .accessibilityLabel(Text("Alt text for my image"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        SwiftUI.Image(uiImage: "my-image").resizable().accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image(decorative: "my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityElement()
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityHidden(true)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack(spacing: 8) {
-            Image(decorative: "my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Text("Text to accompany my image")
-        }.accessibilityElement(children: .combine)
-        .padding(16)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack(spacing: 8) {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Text("Text to accompany my image")
-        }.accessibilityElement(children: .ignore)
-        .padding(16)
-        .accessibilityLabel(Text("Label for my image and text"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Button(action: { doAction() }) {
-            Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-        }
-        .accessibilityLabel(Text("Label for my image"))
-    }
-}
-
-

Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        ↓Image("my-image")
-            .resizable(true)
-            .frame(width: 48, height: 48)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Image(uiImage: myUiImage)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓SwiftUI.Image(uiImage: "my-image").resizable().accessibilityHidden(false)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(uiImage: myUiImage)
-            .resizable()
-            .frame(width: 48, height: 48)
-            .accessibilityLabel(Text("Alt text for my image"))
-        ↓Image("other image")
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Image(decorative: "image1")
-        ↓Image("image2")
-        Image(uiImage: "image3")
-            .accessibility(label: Text("a pretty picture"))
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            Image(decorative: "my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            ↓Image("my-image")
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityElement(children: .contain)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        VStack {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Image("my-image")
-                .accessibility(label: Text("Alt text for my image"))
-        }.accessibilityHidden(false)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack(spacing: 8) {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-            Text("Text to accompany my image")
-        }.accessibilityElement(children: .combine)
-        .padding(16)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Button(action: { doAction() }) {
-            ↓Image("my-image")
-                .renderingMode(.template)
-                .foregroundColor(.blue)
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Image(systemName: "circle.plus")
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_trait_for_button.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_trait_for_button.html deleted file mode 100644 index cc975c862..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/accessibility_trait_for_button.html +++ /dev/null @@ -1,651 +0,0 @@ - - - - accessibility_trait_for_button Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Accessibility Trait for Button

- -

All views with tap gestures added should include the .isButton or the .isLink accessibility traits

- -
    -
  • Identifier: accessibility_trait_for_button
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        Button {
-            print("tapped")
-        } label: {
-            Text("Learn more")
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Link("Open link", destination: myUrl)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture {
-                print("tapped - open URL")
-            }
-            .accessibility(addTraits: .isLink)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .accessibilityAddTraits(.isButton)
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .accessibility(addTraits: [.isButton, .isHeader])
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture {
-                print("tapped - open URL")
-            }
-            .accessibilityAddTraits([.isHeader, .isLink])
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-            .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .onTapGesture(count: 1, perform: {
-                print("tapped")
-            })
-            .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            // This rule does not include tap gestures with multiple taps for now.
-            // Custom gestures like this are also not very accessible, but require
-            // alternative ways to accomplish the same task with assistive tech.
-            .onTapGesture(count: 2) {
-                print("double-tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Label("Learn more", systemImage: "info.circle")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-            .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        HStack {
-            Image(systemName: "info.circle")
-            Text("Learn more")
-        }
-        .onTapGesture {
-            print("tapped")
-        }
-        // This modifier is not strictly required — each subview will inherit the button trait.
-        // That said, grouping a tappable stack into a single element is a good way to reduce
-        // the number of swipes required for a VoiceOver user to navigate the page.
-        .accessibilityElement(children: .combine)
-        .accessibility(addTraits: .isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .gesture(TapGesture().onEnded {
-                print("tapped")
-            })
-            .accessibilityAddTraits(.isButton)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .simultaneousGesture(TapGesture(count: 1).onEnded {
-                print("tapped - open URL")
-            })
-            .accessibilityAddTraits(.isLink)
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .highPriorityGesture(TapGesture().onEnded {
-                print("tapped")
-            })
-            .accessibility(addTraits: [.isButton])
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        Text("Learn more")
-            .gesture(TapGesture(count: 2).onEnded {
-                print("tapped")
-            })
-    }
-}
-
-

Triggering Examples

-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .accessibility(addTraits: .isHeader)
-            .onTapGesture {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .onTapGesture(count: 1, perform: {
-                print("tapped")
-            })
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Label("Learn more", systemImage: "info.circle")
-            .onTapGesture(count: 1) {
-                print("tapped")
-            }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓HStack {
-            Image(systemName: "info.circle")
-            Text("Learn more")
-        }
-        .onTapGesture {
-            print("tapped")
-        }
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .gesture(TapGesture().onEnded {
-                print("tapped")
-            })
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .simultaneousGesture(TapGesture(count: 1).onEnded {
-                print("tapped")
-            })
-    }
-}
-
-
struct MyView: View {
-    var body: some View {
-        ↓Text("Learn more")
-            .highPriorityGesture(TapGesture().onEnded {
-                print("tapped")
-            })
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html deleted file mode 100644 index 93e9399db..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/anonymous_argument_in_multiline_closure.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - anonymous_argument_in_multiline_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Anonymous Argument in Multiline Closure

- -

Use named arguments in multiline closures

- -
    -
  • Identifier: anonymous_argument_in_multiline_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
closure { $0 }
-
-
closure { print($0) }
-
-
closure { arg in
-    print(arg)
-}
-
-
closure { arg in
-    nestedClosure { $0 + arg }
-}
-
-

Triggering Examples

-
closure {
-    print(↓$0)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/array_init.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/array_init.html deleted file mode 100644 index 0f23193b5..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/array_init.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - array_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Array Init

- -

Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array

- -
    -
  • Identifier: array_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
Array(foo)
-
-
foo.map { $0.0 }
-
-
foo.map { $1 }
-
-
foo.map { $0() }
-
-
foo.map { ((), $0) }
-
-
foo.map { $0! }
-
-
foo.map { $0! /* force unwrap */ }
-
-
foo.something { RouteMapper.map($0) }
-
-
foo.map { !$0 }
-
-
foo.map { /* a comment */ !$0 }
-
-

Triggering Examples

-
foo.↓map({ $0 })
-
-
foo.↓map { $0 }
-
-
foo.↓map { return $0 }
-
-
foo.↓map { elem in
-    elem
-}
-
-
foo.↓map { elem in
-    return elem
-}
-
-
foo.↓map { (elem: String) in
-    elem
-}
-
-
foo.↓map { elem -> String in
-    elem
-}
-
-
foo.↓map { $0 /* a comment */ }
-
-
foo.↓map { /* a comment */ $0 }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/attribute_name_spacing.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/attribute_name_spacing.html deleted file mode 100644 index 122322128..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/attribute_name_spacing.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - attribute_name_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Attribute Name Spacing

- -

This rule prevents trailing spaces after attribute names, ensuring compatibility with Swift 6 where a space between an attribute name and the opening parenthesis results in a compilation error (e.g. @MyPropertyWrapper (), private (set)).

- -
    -
  • Identifier: attribute_name_spacing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
private(set) var foo: Bool = false
-
-
fileprivate(set) var foo: Bool = false
-
-
@MainActor class Foo {}
-
-
func funcWithEscapingClosure(_ x: @escaping () -> Int) {}
-
-
@available(*, deprecated)
-
-
@MyPropertyWrapper(param: 2) 
-
-
nonisolated(unsafe) var _value: X?
-
-
@testable import SwiftLintCore
-
-
func func_type_attribute_with_space(x: @convention(c) () -> Int) {}
-
-
@propertyWrapper
-struct MyPropertyWrapper {
-    var wrappedValue: Int = 1
-
-    init(param: Int) {}
-}
-
-
let closure2 = { @MainActor
-  (a: Int, b: Int) in
-}
-
-

Triggering Examples

-
private ↓(set) var foo: Bool = false
-
-
fileprivate ↓(set) var foo: Bool = false
-
-
public ↓(set) var foo: Bool = false
-
-
  public  ↓(set) var foo: Bool = false
-
-
@ ↓MainActor class Foo {}
-
-
func funcWithEscapingClosure(_ x: @ ↓escaping () -> Int) {}
-
-
func funcWithEscapingClosure(_ x: @escaping↓() -> Int) {}
-
-
@available ↓(*, deprecated)
-
-
@MyPropertyWrapper ↓(param: 2) 
-
-
nonisolated ↓(unsafe) var _value: X?
-
-
@MyProperty ↓() class Foo {}
-
-
let closure1 = { @MainActor ↓(a, b) in
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/attributes.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/attributes.html deleted file mode 100644 index 5a13421d7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/attributes.html +++ /dev/null @@ -1,667 +0,0 @@ - - - - attributes Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Attributes

- -

Attributes should be on their own lines in functions and types, but on the same line as variables and imports

- -
    -
  • Identifier: attributes
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -attributes_with_arguments_always_on_line_above - -true -
    -always_on_same_line - -[“@IBAction”, “@NSManaged”] -
    -always_on_line_above - -[] -
  • -
-

Non Triggering Examples

-
@objc var x: String
-
-
@objc private var x: String
-
-
@nonobjc var x: String
-
-
@IBOutlet private var label: UILabel
-
-
@IBOutlet @objc private var label: UILabel
-
-
@NSCopying var name: NSString
-
-
@NSManaged var name: String?
-
-
@IBInspectable var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *)
- let stackView: UIStackView
-
-
@NSManaged func addSomeObject(book: SomeObject)
-
-
@IBAction func buttonPressed(button: UIButton)
-
-
@objc
- @IBAction func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *)
- func animate(view: UIStackView)
-
-
@available(*, deprecated, message: "A message")
- func animate(view: UIStackView)
-
-
@nonobjc
- final class X {}
-
-
@available(iOS 9.0, *)
- class UIStackView {}
-
-
@NSApplicationMain
- class AppDelegate: NSObject, NSApplicationDelegate {}
-
-
@UIApplicationMain
- class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable
- class MyCustomView: UIView {}
-
-
@testable import SourceKittenFramework
-
-
@objc(foo_x)
- var x: String
-
-
@available(iOS 9.0, *)
-@objc(abc_stackView)
- let stackView: UIStackView
-
-
@objc(abc_addSomeObject:)
- @NSManaged func addSomeObject(book: SomeObject)
-
-
@objc(ABCThing)
- @available(iOS 9.0, *)
- class Thing {}
-
-
class Foo: NSObject {
- override var description: String { return "" }
-}
-
-
class Foo: NSObject {
-
- override func setUp() {}
-}
-
-
@objc
-class ⽺ {}
-
-
extension Property {
-
-    @available(*, unavailable, renamed: "isOptional")
-    public var optional: Bool { fatalError() }
-}
-
-
@GKInspectable var maxSpeed: Float
-
-
@discardableResult
- func a() -> Int
-
-
@objc
- @discardableResult
- func a() -> Int
-
-
func increase(f: @autoclosure () -> Int) -> Int
-
-
func foo(completionHandler: @escaping () -> Void)
-
-
private struct DefaultError: Error {}
-
-
@testable import foo
-
-private let bar = 1
-
-
import XCTest
-@testable import DeleteMe
-
-@available (iOS 11.0, *)
-class DeleteMeTests: XCTestCase {
-}
-
-
@objc
-internal func foo(identifier: String, completion: @escaping (() -> Void)) {}
-
-
@objc
-internal func foo(identifier: String, completion: @autoclosure (() -> Bool)) {}
-
-
func printBoolOrTrue(_ expression: @autoclosure () throws -> Bool?) rethrows {
-  try print(expression() ?? true)
-}
-
-
import Foundation
-
-class MyClass: NSObject {
-  @objc(
-    first:
-  )
-  static func foo(first: String) {}
-}
-
-
func refreshable(action: @escaping @Sendable () async -> Void) -> some View {
-    modifier(RefreshableModifier(action: action))
-}
-
-
import AppKit
-
-@NSApplicationMain
-@MainActor
-final class AppDelegate: NSAppDelegate {}
-
-

Triggering Examples

-
@objc
- ↓var x: String
-
-
@objc
-
- ↓var x: String
-
-
@objc
- private ↓var x: String
-
-
@nonobjc
- ↓var x: String
-
-
@IBOutlet
- private ↓var label: UILabel
-
-
@IBOutlet
-
- private ↓var label: UILabel
-
-
@NSCopying
- ↓var name: NSString
-
-
@NSManaged
- ↓var name: String?
-
-
@IBInspectable
- ↓var cornerRadius: CGFloat
-
-
@available(iOS 9.0, *) ↓let stackView: UIStackView
-
-
@NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@IBAction
- ↓func buttonPressed(button: UIButton)
-
-
@IBAction
- @objc
- ↓func buttonPressed(button: UIButton)
-
-
@available(iOS 9.0, *) ↓func animate(view: UIStackView)
-
-
@nonobjc final ↓class X {}
-
-
@available(iOS 9.0, *) ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
- @objc ↓class UIStackView {}
-
-
@available(iOS 9.0, *) @objc
- ↓class UIStackView {}
-
-
@available(iOS 9.0, *)
-
- ↓class UIStackView {}
-
-
@UIApplicationMain ↓class AppDelegate: NSObject, UIApplicationDelegate {}
-
-
@IBDesignable ↓class MyCustomView: UIView {}
-
-
@testable
-↓import SourceKittenFramework
-
-
@testable
-
-
-↓import SourceKittenFramework
-
-
@available(iOS 9.0, *) @objc(abc_stackView)
- ↓let stackView: UIStackView
-
-
@objc(abc_addSomeObject:) @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@objc(abc_addSomeObject:)
- @NSManaged
- ↓func addSomeObject(book: SomeObject)
-
-
@available(iOS 9.0, *)
- @objc(ABCThing) ↓class Thing {}
-
-
@GKInspectable
- ↓var maxSpeed: Float
-
-
@discardableResult ↓func a() -> Int
-
-
@objc
- @discardableResult ↓func a() -> Int
-
-
@objc
-
- @discardableResult
- ↓func a() -> Int
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html deleted file mode 100644 index 525ed29ca..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/balanced_xctest_lifecycle.html +++ /dev/null @@ -1,496 +0,0 @@ - - - - balanced_xctest_lifecycle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Balanced XCTest Life Cycle

- -

Test classes must implement balanced setUp and tearDown methods

- -
    -
  • Identifier: balanced_xctest_lifecycle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDown() {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-final class BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-    override func tearDownWithError() throws {}
-}
-
-
struct FooTests {
-    override func setUp() {}
-}
-class BarTests {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUpAlLExamples() {}
-}
-
-
final class FooTests: XCTestCase {
-    class func setUp() {}
-    class func tearDown() {}
-}
-
-

Triggering Examples

-
final class ↓FooTests: XCTestCase {
-    override func setUp() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func setUpWithError() throws {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    class func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDown() {}
-}
-
-
final class ↓FooTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
-
final class FooTests: XCTestCase {
-    override func setUp() {}
-    override func tearDownWithError() throws {}
-}
-final class ↓BarTests: XCTestCase {
-    override func tearDownWithError() throws {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/blanket_disable_command.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/blanket_disable_command.html deleted file mode 100644 index 2dc93713a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/blanket_disable_command.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - blanket_disable_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Blanket Disable Command

- -

swiftlint:disable commands should use next, this or previous to disable rules for a single line, or swiftlint:enable to re-enable the rules immediately after the violations to be ignored, instead of disabling the rule for the rest of the file.

- -
    -
  • Identifier: blanket_disable_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allowed_rules - -[“file_header”, “file_length”, “file_name”, “file_name_no_space”, “single_test_class”] -
    -always_blanket_disable - -[] -
  • -
-

Non Triggering Examples

-
// swiftlint:disable unused_import
-// swiftlint:enable unused_import
-
-
// swiftlint:disable unused_import unused_declaration
-// swiftlint:enable unused_import
-// swiftlint:enable unused_declaration
-
-
// swiftlint:disable:this unused_import
-
-
// swiftlint:disable:next unused_import
-
-
// swiftlint:disable:previous unused_import
-
-

Triggering Examples

-
// swiftlint:disable ↓unused_import
-
-
// swiftlint:disable unused_import ↓unused_declaration
-// swiftlint:enable unused_import
-
-
// swiftlint:disable unused_import
-// swiftlint:disable ↓unused_import
-// swiftlint:enable unused_import
-
-
// swiftlint:enable ↓unused_import
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/block_based_kvo.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/block_based_kvo.html deleted file mode 100644 index 0a7a10c50..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/block_based_kvo.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - block_based_kvo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Block Based KVO

- -

Prefer the new block based KVO API with keypaths when using Swift 3.2 or later

- -
    -
  • Identifier: block_based_kvo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let observer = foo.observe(\.value, options: [.new]) { (foo, change) in
-   print(change.newValue)
-}
-
-

Triggering Examples

-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: [NSKeyValueChangeKey : Any]?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
-
class Foo: NSObject {
-  override ↓func observeValue(forKeyPath keyPath: String?, of object: Any?,
-                              change: Dictionary<NSKeyValueChangeKey, Any>?,
-                              context: UnsafeMutableRawPointer?) {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/capture_variable.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/capture_variable.html deleted file mode 100644 index d4defa842..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/capture_variable.html +++ /dev/null @@ -1,533 +0,0 @@ - - - - capture_variable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Capture Variable

- -

Non-constant variables should not be listed in a closure’s capture list to avoid confusion about closures capturing variables at creation time

- -
    -
  • Identifier: capture_variable
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-let j: Int = 0
-let c = C(1)
-
-let closure: () -> Void = { [j, c] in
-    print(c.i, j)
-}
-
-closure()
-
-
let iGlobal: Int = 0
-
-class C {
-    class var iClass: Int { 0 }
-    static let iStatic: Int = 0
-    let iInstance: Int = 0
-
-    func callTest() {
-        var iLocal: Int = 0
-        test { [unowned self, iGlobal, iInstance, iLocal, iClass=C.iClass, iStatic=C.iStatic] j in
-            print(iGlobal, iClass, iStatic, iInstance, iLocal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
var j: Int!
-j = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
lazy var j: Int = { 0 }()
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-

Triggering Examples

-
var j: Int = 0
-
-let closure: () -> Void = { [j] in
-    print(j)
-}
-
-closure()
-j = 1
-closure()
-
-
class C {
-    let i: Int
-    init(_ i: Int) { self.i = i }
-}
-
-var c = C(0)
-let closure: () -> Void = { [c] in
-    print(c.i)
-}
-
-closure()
-c = C(1)
-closure()
-
-
var iGlobal: Int = 0
-
-class C {
-    func callTest() {
-        test { [iGlobal] j in
-            print(iGlobal, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
-
class C {
-    static var iStatic: Int = 0
-
-    static func callTest() {
-        test { [↓iStatic] j in
-            print(iStatic, j)
-        }
-    }
-
-    static func test(_ completionHandler: @escaping (Int) -> Void) {
-        completionHandler(2)
-        C.iStatic = 1
-        completionHandler(3)
-    }
-}
-
-C.callTest()
-
-
class C {
-    var iInstance: Int = 0
-
-    func callTest() {
-        test { [iInstance] j in
-            print(iInstance, j)
-        }
-    }
-
-    func test(_ completionHandler: @escaping (Int) -> Void) {
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/class_delegate_protocol.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/class_delegate_protocol.html deleted file mode 100644 index f2f4da470..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/class_delegate_protocol.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - class_delegate_protocol Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Class Delegate Protocol

- -

Delegate protocols should be class-only so they can be weakly referenced

- -
    -
  • Identifier: class_delegate_protocol
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
protocol FooDelegate: class {}
-
-
protocol FooDelegate: class, BarDelegate {}
-
-
protocol Foo {}
-
-
class FooDelegate {}
-
-
@objc protocol FooDelegate {}
-
-
@objc(MyFooDelegate)
- protocol FooDelegate {}
-
-
protocol FooDelegate: BarDelegate {}
-
-
protocol FooDelegate: AnyObject {}
-
-
protocol FooDelegate: NSObjectProtocol {}
-
-
protocol FooDelegate where Self: BarDelegate {}
-
-
protocol FooDelegate where Self: AnyObject {}
-
-
protocol FooDelegate where Self: NSObjectProtocol {}
-
-

Triggering Examples

-
↓protocol FooDelegate {}
-
-
↓protocol FooDelegate: Bar {}
-
-
↓protocol FooDelegate where Self: StringProtocol {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closing_brace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closing_brace.html deleted file mode 100644 index f591bf904..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closing_brace.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - closing_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closing Brace Spacing

- -

Closing brace with closing parenthesis should not have any whitespaces in the middle

- -
    -
  • Identifier: closing_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[].map({ })
-
-
[].map(
-  { }
-)
-
-

Triggering Examples

-
[].map({ ↓} )
-
-
[].map({ ↓}   )
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_body_length.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_body_length.html deleted file mode 100644 index 44e8877cb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_body_length.html +++ /dev/null @@ -1,1110 +0,0 @@ - - - - closure_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Body Length

- -

Closure bodies should not span too many lines

- -
    -
  • Identifier: closure_body_length
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -30 -
    -error - -100 -
  • -
-

Non Triggering Examples

-
foo.bar { $0 }
-
-
foo.bar { toto in
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}
-
-
foo.bar { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar({ toto in
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-})
-
-
foo.bar({ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-})
-
-
foo.bar(label: { toto in
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}, anotherLabel: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-})
-
-
foo.bar(label: { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}) { toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-}
-
-
let foo: Bar = { toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    return bar
-}()
-
-

Triggering Examples

-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}
-
-
foo.bar ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-    // toto
-
-
-
-
-
-
-
-
-
-
-}
-
-
foo.bar(↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}, anotherLabel: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-})
-
-
foo.bar(label: ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}) ↓{ toto in
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    let a29 = 0
-    let a30 = 0
-}
-
-
let foo: Bar = ↓{ toto in
-    let bar = Bar()
-    let a0 = 0
-    let a1 = 0
-    let a2 = 0
-    let a3 = 0
-    let a4 = 0
-    let a5 = 0
-    let a6 = 0
-    let a7 = 0
-    let a8 = 0
-    let a9 = 0
-    let a10 = 0
-    let a11 = 0
-    let a12 = 0
-    let a13 = 0
-    let a14 = 0
-    let a15 = 0
-    let a16 = 0
-    let a17 = 0
-    let a18 = 0
-    let a19 = 0
-    let a20 = 0
-    let a21 = 0
-    let a22 = 0
-    let a23 = 0
-    let a24 = 0
-    let a25 = 0
-    let a26 = 0
-    let a27 = 0
-    let a28 = 0
-    return bar
-}()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_end_indentation.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_end_indentation.html deleted file mode 100644 index 96d1bc679..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_end_indentation.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - closure_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure End Indentation

- -

Closure end should have the same indentation as the line that started it.

- -
    -
  • Identifier: closure_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-   }
-
-
-
[1, 2].map { $0 + 1 }
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-}.flatMap { command in
-   return command.expand()
-}
-
-
-
foo(foo: bar,
-    options: baz) { _ in }
-
-
-
someReallyLongProperty.chainingWithAnotherProperty
-   .foo { _ in }
-
-
foo(abc, 123)
-{ _ in }
-
-
-
function(
-    closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
function(parameter: param,
-         closure: { x in
-    print(x)
-})
-
-
function(parameter: param, closure: { x in
-        print(x)
-    },
-    anotherClosure: { y in
-        print(y)
-    })
-
-
(-variable).foo()
-
-

Triggering Examples

-
SignalProducer(values: [1, 2, 3])
-   .startWithNext { number in
-       print(number)
-↓}
-
-
-
return match(pattern: pattern, with: [.comment]).flatMap { range in
-   return Command(string: contents, range: range)
-   ↓}.flatMap { command in
-   return command.expand()
-↓}
-
-
-
function(
-    closure: { x in
-        print(x)
-↓},
-    anotherClosure: { y in
-        print(y)
-↓})
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_parameter_position.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_parameter_position.html deleted file mode 100644 index d3a7265f9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_parameter_position.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - closure_parameter_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Parameter Position

- -

Closure parameters should be on the same line as opening brace

- -
    -
  • Identifier: closure_parameter_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
[1, 2].map({ $0 + 1 })
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
[1, 2].map { number -> Int in
- number + 1 
-}
-
-
[1, 2].map { (number: Int) -> Int in
- number + 1 
-}
-
-
[1, 2].map { [weak self] number in
- number + 1 
-}
-
-
[1, 2].something(closure: { number in
- number + 1 
-})
-
-
let isEmpty = [1, 2].isEmpty()
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-    return { migration, schemaVersion in
-        rlmMigration(migration.rlmMigration, schemaVersion)
-    }
-}
-
-
let mediaView: UIView = { [weak self] index in
-   return UIView()
-}(index)
-
-

Triggering Examples

-
[1, 2].map {
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map {
-    ↓number -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    (↓number: Int) -> Int in
-    number + 1
-}
-
-
[1, 2].map {
-    [weak ↓self] ↓number in
-    number + 1
-}
-
-
[1, 2].map { [weak self]
-    ↓number in
-    number + 1
-}
-
-
[1, 2].map({
-    ↓number in
-    number + 1
-})
-
-
[1, 2].something(closure: {
-    ↓number in
-    number + 1
-})
-
-
[1, 2].reduce(0) {
-    ↓sum, ↓number in
-    number + sum
-})
-
-
f.completionHandler = {
-    ↓thing in
-    doStuff()
-}
-
-
foo {
-    [weak ↓self] in
-    self?.bar()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_spacing.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_spacing.html deleted file mode 100644 index 96e903096..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/closure_spacing.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - closure_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Closure Spacing

- -

Closure expressions should have a single space inside each brace

- -
    -
  • Identifier: closure_spacing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[].map ({ $0.description })
-
-
[].filter { $0.contains(location) }
-
-
extension UITableViewCell: ReusableView { }
-
-
extension UITableViewCell: ReusableView {}
-
-

Triggering Examples

-
[].filter↓{ $0.contains(location) }
-
-
[].filter(↓{$0.contains(location)})
-
-
[].map(↓{$0})
-
-
(↓{each in return result.contains(where: ↓{e in return e}) }).count
-
-
filter ↓{ sorted ↓{ $0 < $1}}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/collection_alignment.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/collection_alignment.html deleted file mode 100644 index 3b8569e52..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/collection_alignment.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - collection_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Collection Element Alignment

- -

All elements in a collection literal should be vertically aligned

- -
    -
  • Identifier: collection_alignment
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -align_colons - -false -
  • -
-

Non Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-    "fizz": 2,
-    "buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-    "beta": "b",
-    "gamma": "g",
-    "delta": "d",
-    "epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-                "dinner": "burger"
-]
-
-
NSAttributedString(string: "…", attributes: [.font: UIFont.systemFont(ofSize: 12, weight: .regular),
-                                             .foregroundColor: UIColor(white: 0, alpha: 0.2)])
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-    CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-    4,
-    6
-]
-
-
let abc = [1, 2, 3, 4]
-
-
let abc = [
-    1, 2, 3, 4
-]
-
-
let abc = [
-    "foo": "bar", "fizz": "buzz"
-]
-
-

Triggering Examples

-
doThings(arg: [
-    "foo": 1,
-    "bar": 2,
-   ↓"fizz": 2,
-   ↓"buzz": 2
-])
-
-
let abc = [
-    "alpha": "a",
-     ↓"beta": "b",
-    "gamma": "g",
-    "delta": "d",
-  ↓"epsilon": "e"
-]
-
-
let meals = [
-                "breakfast": "oatmeal",
-                "lunch": "sandwich",
-    ↓"dinner": "burger"
-]
-
-
let coordinates = [
-    CLLocationCoordinate2D(latitude: 0, longitude: 33),
-        ↓CLLocationCoordinate2D(latitude: 0, longitude: 66),
-    CLLocationCoordinate2D(latitude: 0, longitude: 99)
-]
-
-
var evenNumbers: Set<Int> = [
-    2,
-  ↓4,
-    6
-]
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/colon.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/colon.html deleted file mode 100644 index b4a91e47d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/colon.html +++ /dev/null @@ -1,640 +0,0 @@ - - - - colon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Colon Spacing

- -

Colons should be next to the identifier when specifying a type and next to the key in dictionary literals

- -
    -
  • Identifier: colon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -flexible_right_spacing - -false -
    -apply_to_dictionaries - -true -
  • -
-

Non Triggering Examples

-
let abc: Void
-
-
let abc: [Void: Void]
-
-
let abc: (Void, Void)
-
-
let abc: ([Void], String, Int)
-
-
let abc: [([Void], String, Int)]
-
-
let abc: String="def"
-
-
let abc: Int=0
-
-
let abc: Enum=Enum.Value
-
-
func abc(def: Void) {}
-
-
func abc(def: Void, ghi: Void) {}
-
-
let abc: String = "abc:"
-
-
let abc = [Void: Void]()
-
-
let abc = [1: [3: 2], 3: 4]
-
-
let abc = ["string": "string"]
-
-
let abc = ["string:string": "string"]
-
-
let abc: [String: Int]
-
-
func foo(bar: [String: Int]) {}
-
-
func foo() -> [String: Int] { return [:] }
-
-
let abc: Any
-
-
let abc: [Any: Int]
-
-
let abc: [String: Any]
-
-
class Foo: Bar {}
-
-
class Foo<T>: Bar {}
-
-
class Foo<T: Equatable>: Bar {}
-
-
class Foo<T, U>: Bar {}
-
-
class Foo<T: Equatable> {}
-
-
object.method(x: /* comment */ 5)
-
-
switch foo {
-case .bar:
-    _ = something()
-}
-
-
object.method(x: 5, y: "string")
-
-
object.method(x: 5, y:
-              "string")
-
-
object.method(5, y: "string")
-
-
func abc() { def(ghi: jkl) }
-
-
func abc(def: Void) { ghi(jkl: mno) }
-
-
class ABC { let def = ghi(jkl: mno) } }
-
-
func foo() { let dict = [1: 1] }
-
-
let aaa = Self.bbb ? Self.ccc : Self.ddd else {
-return nil
-Example("}
-
-
range.flatMap(file.syntaxMap.kinds(inByteRange:)) ?? []
-
-
@objc(receiveReply:)
-public class func receiveReply(_ reply: bad_instruction_exception_reply_t) -> CInt { 0 }
-
-
switch str {
-case "adlm", "adlam":             return .adlam
-case "aghb", "caucasianalbanian": return .caucasianAlbanian
-default:                          return nil
-}
-
-
precedencegroup PipelinePrecedence {
-  associativity: left
-}
-infix operator |> : PipelinePrecedence
-
-
switch scalar {
-  case 0x000A...0x000D /* LF ... CR */: return true
-  case 0x0085 /* NEXT LINE (NEL) */: return true
-  case 0x2028 /* LINE SEPARATOR */: return true
-  case 0x2029 /* PARAGRAPH SEPARATOR */: return true
-  default: return false
-}
-
-

Triggering Examples

-
let abc↓:Void
-
-
let abc↓:  Void
-
-
let abc↓ :Void
-
-
let abc↓ : Void
-
-
let abc↓ : [Void: Void]
-
-
let abc↓ : (Void, String, Int)
-
-
let abc↓ : ([Void], String, Int)
-
-
let abc↓ : [([Void], String, Int)]
-
-
let abc↓:  (Void, String, Int)
-
-
let abc↓:  ([Void], String, Int)
-
-
let abc↓:  [([Void], String, Int)]
-
-
let abc↓ :String="def"
-
-
let abc↓ :Int=0
-
-
let abc↓ :Int = 0
-
-
let abc↓:Int=0
-
-
let abc↓:Int = 0
-
-
let abc↓:Enum=Enum.Value
-
-
func abc(def↓:Void) {}
-
-
func abc(def↓:  Void) {}
-
-
func abc(def↓ :Void) {}
-
-
func abc(def↓ : Void) {}
-
-
func abc(def: Void, ghi↓ :Void) {}
-
-
let abc = [Void↓:Void]()
-
-
let abc = [Void↓ : Void]()
-
-
let abc = [Void↓:  Void]()
-
-
let abc = [Void↓ :  Void]()
-
-
let abc = [1: [3↓ : 2], 3: 4]
-
-
let abc = [1: [3↓ : 2], 3↓:  4]
-
-
let abc: [String↓ : Int]
-
-
let abc: [String↓:Int]
-
-
func foo(bar: [String↓ : Int]) {}
-
-
func foo(bar: [String↓:Int]) {}
-
-
func foo() -> [String↓ : Int] { return [:] }
-
-
func foo() -> [String↓:Int] { return [:] }
-
-
let abc↓ : Any
-
-
let abc: [Any↓ : Int]
-
-
let abc: [String↓ : Any]
-
-
class Foo↓ : Bar {}
-
-
class Foo↓:Bar {}
-
-
class Foo<T>↓ : Bar {}
-
-
class Foo<T>↓:Bar {}
-
-
class Foo<T, U>↓:Bar {}
-
-
class Foo<T: Equatable>↓:Bar {}
-
-
class Foo<T↓:Equatable> {}
-
-
class Foo<T↓ : Equatable> {}
-
-
object.method(x: 5, y↓ : "string")
-
-
object.method(x↓:5, y: "string")
-
-
object.method(x↓:  5, y: "string")
-
-
func abc() { def(ghi↓:jkl) }
-
-
func abc(def: Void) { ghi(jkl↓:mno) }
-
-
class ABC { let def = ghi(jkl↓:mno) } }
-
-
func foo() { let dict = [1↓ : 1] }
-
-
switch foo {
-case .bar↓ : return baz
-}
-
-
private var action↓:(() -> Void)?
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma.html deleted file mode 100644 index 4c52be74a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comma Spacing

- -

There should be no space before and one after any comma

- -
    -
  • Identifier: comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func abc(a: String, b: String) { }
-
-
abc(a: "string", b: "string"
-
-
enum a { case a, b, c }
-
-
func abc(
-  a: String,  // comment
-  bcd: String // comment
-) {
-}
-
-
func abc(
-  a: String,
-  bcd: String
-) {
-}
-
-
#imageLiteral(resourceName: "foo,bar,baz")
-
-
kvcStringBuffer.advanced(by: rootKVCLength)
-  .storeBytes(of: 0x2E /* '.' */, as: CChar.self)
-
-

Triggering Examples

-
func abc(a: String↓ ,b: String) { }
-
-
func abc(a: String↓ ,b: String↓ ,c: String↓ ,d: String) { }
-
-
abc(a: "string"↓,b: "string"
-
-
enum a { case a↓ ,b }
-
-
let result = plus(
-    first: 3↓ , // #683
-    second: 4
-)
-
-
Foo(
-  parameter: a.b.c,
-  tag: a.d,
-  value: a.identifier.flatMap { Int64($0) }↓ ,
-  reason: Self.abcd()
-)
-
-
return Foo(bar: .baz, title: fuzz,
-          message: My.Custom.message↓ ,
-          another: parameter, doIt: true,
-          alignment: .center)
-
-
Logger.logError("Hat is too large"↓,  info: [])
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma_inheritance.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma_inheritance.html deleted file mode 100644 index 66a1239ba..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comma_inheritance.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - comma_inheritance Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comma Inheritance Rule

- -

Use commas to separate types in inheritance lists

- -
    -
  • Identifier: comma_inheritance
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct A: Codable, Equatable {}
-
-
enum B: Codable, Equatable {}
-
-
class C: Codable, Equatable {}
-
-
protocol D: Codable, Equatable {}
-
-
typealias E = Equatable & Codable
-
-
func foo<T: Equatable & Codable>(_ param: T) {}
-
-
protocol G {
-    associatedtype Model: Codable, Equatable
-}
-
-

Triggering Examples

-
struct A: Codable↓ & Equatable {}
-
-
struct A: Codable↓  & Equatable {}
-
-
struct A: Codable↓&Equatable {}
-
-
struct A: Codable↓& Equatable {}
-
-
enum B: Codable↓ & Equatable {}
-
-
class C: Codable↓ & Equatable {}
-
-
protocol D: Codable↓ & Equatable {}
-
-
protocol G {
-    associatedtype Model: Codable↓ & Equatable
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comment_spacing.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comment_spacing.html deleted file mode 100644 index 128529c5a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/comment_spacing.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - comment_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Comment Spacing

- -

Prefer at least one space after slashes for comments

- -
    -
  • Identifier: comment_spacing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
// This is a comment
-
-
/// Triple slash comment
-
-
// Multiline double-slash
-// comment
-
-
/// Multiline triple-slash
-/// comment
-
-
/// Multiline triple-slash
-///   - This is indented
-
-
// - MARK: Mark comment
-
-
//: Swift Playground prose section
-
-
///////////////////////////////////////////////
-// Comment with some lines of slashes boxing it
-///////////////////////////////////////////////
-
-
//:#localized(key: "SwiftPlaygroundLocalizedProse")
-
-
/* Asterisk comment */
-
-
/*
-    Multiline asterisk comment
-*/
-
-
/*:
-    Multiline Swift Playground prose section
-*/
-
-
/*#-editable-code Swift Playground editable area*/default/*#-end-editable-code*/
-
-

Triggering Examples

-
//↓Something
-
-
//↓MARK
-
-
//↓👨‍👨‍👦‍👦Something
-
-
func a() {
-    //↓This needs refactoring
-    print("Something")
-}
-//↓We should improve above function
-
-
///↓This is a comment
-
-
/// Multiline triple-slash
-///↓This line is incorrect, though
-
-
//↓- MARK: Mark comment
-
-
//:↓Swift Playground prose section
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/compiler_protocol_init.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/compiler_protocol_init.html deleted file mode 100644 index 29918677a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/compiler_protocol_init.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - compiler_protocol_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Compiler Protocol Init

- -

The initializers declared in compiler protocols such as ExpressibleByArrayLiteral shouldn’t be called directly.

- -
    -
  • Identifier: compiler_protocol_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let set: Set<Int> = [1, 2]
-
-
let set = Set(array)
-
-

Triggering Examples

-
let set = ↓Set(arrayLiteral: 1, 2)
-
-
let set = ↓Set (arrayLiteral: 1, 2)
-
-
let set = ↓Set.init(arrayLiteral: 1, 2)
-
-
let set = ↓Set.init(arrayLiteral : 1, 2)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/computed_accessors_order.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/computed_accessors_order.html deleted file mode 100644 index 38193d1dc..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/computed_accessors_order.html +++ /dev/null @@ -1,617 +0,0 @@ - - - - computed_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Computed Accessors Order

- -

Getter and setters in computed properties and subscripts should be in a consistent order.

- -
    -
  • Identifier: computed_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -order - -get_set -
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
protocol Foo {
-    var foo: Int { set get }
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-    set { print(newValue) }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-    set {
-        self.count = newValue
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { set get }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓set { print(newValue) }
-    get { return 20 }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓set { print(bar) }
-        get { _bar }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓set {
-            print(newValue)
-        }
-        mutating get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓set {
-            print(i)
-        }
-        get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/conditional_returns_on_newline.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/conditional_returns_on_newline.html deleted file mode 100644 index cddd6b199..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/conditional_returns_on_newline.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - conditional_returns_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Conditional Returns on Newline

- -

Conditional statements should always return on the next line

- -
    -
  • Identifier: conditional_returns_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -if_only - -false -
  • -
-

Non Triggering Examples

-
guard true else {
- return true
-}
-
-
guard true,
- let x = true else {
- return true
-}
-
-
if true else {
- return true
-}
-
-
if true,
- let x = true else {
- return true
-}
-
-
if textField.returnKeyType == .Next {
-
-
if true { // return }
-
-
guard something
-else { return }
-
-

Triggering Examples

-
↓guard true else { return }
-
-
↓if true { return }
-
-
↓if true { break } else { return }
-
-
↓if true { break } else {       return }
-
-
↓if true { return "YES" } else { return "NO" }
-
-
↓guard condition else { XCTFail(); return }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_count.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_count.html deleted file mode 100644 index 41988c2aa..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_count.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - contains_over_filter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over Filter Count

- -

Prefer contains over comparing filter(where:).count to 0

- -
    -
  • Identifier: contains_over_filter_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 01
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 01
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 01
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
let result = myList.contains(10)
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count > 0
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count > 0
-
-
let result = ↓myList.filter(where: someFunction).count > 0
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count == 0
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count == 0
-
-
let result = ↓myList.filter(where: someFunction).count == 0
-
-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).count != 0
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.count != 0
-
-
let result = ↓myList.filter(where: someFunction).count != 0
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html deleted file mode 100644 index 6a2f60bdc..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_filter_is_empty.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - contains_over_filter_is_empty Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over Filter is Empty

- -

Prefer contains over using filter(where:).isEmpty

- -
    -
  • Identifier: contains_over_filter_is_empty
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let result = myList.filter(where: { $0 % 2 == 0 }).count > 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count > 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count == 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count == 1
-
-
let result = myList.filter(where: { $0 % 2 == 0 }).count != 1
-
-
let result = myList.filter { $0 % 2 == 0 }.count != 1
-
-
let result = myList.contains(where: { $0 % 2 == 0 })
-
-
let result = !myList.contains(where: { $0 % 2 == 0 })
-
-
let result = myList.contains(10)
-
-

Triggering Examples

-
let result = ↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
let result = !↓myList.filter(where: { $0 % 2 == 0 }).isEmpty
-
-
let result = ↓myList.filter { $0 % 2 == 0 }.isEmpty
-
-
let result = ↓myList.filter(where: someFunction).isEmpty
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_first_not_nil.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_first_not_nil.html deleted file mode 100644 index a5c3019a9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_first_not_nil.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - contains_over_first_not_nil Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over First not Nil

- -

Prefer contains over first(where:) != nil and firstIndex(where:) != nil.

- -
    -
  • Identifier: contains_over_first_not_nil
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let first = myList.first(where: { $0 % 2 == 0 })
-
-
let first = myList.first { $0 % 2 == 0 }
-
-
let firstIndex = myList.firstIndex(where: { $0 % 2 == 0 })
-
-
let firstIndex = myList.firstIndex { $0 % 2 == 0 }
-
-

Triggering Examples

-
↓myList.first { $0 % 2 == 0 } != nil
-
-
↓myList.first(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.first(where: someFunction) != nil
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } != nil
-
-
(↓myList.first { $0 % 2 == 0 }) != nil
-
-
↓myList.first { $0 % 2 == 0 } == nil
-
-
↓myList.first(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.map { $0 + 1 }.first(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.first(where: someFunction) == nil
-
-
↓myList.map { $0 + 1 }.first { $0 % 2 == 0 } == nil
-
-
(↓myList.first { $0 % 2 == 0 }) == nil
-
-
↓myList.firstIndex { $0 % 2 == 0 } != nil
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) != nil
-
-
↓myList.firstIndex(where: someFunction) != nil
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } != nil
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) != nil
-
-
↓myList.firstIndex { $0 % 2 == 0 } == nil
-
-
↓myList.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.map { $0 + 1 }.firstIndex(where: { $0 % 2 == 0 }) == nil
-
-
↓myList.firstIndex(where: someFunction) == nil
-
-
↓myList.map { $0 + 1 }.firstIndex { $0 % 2 == 0 } == nil
-
-
(↓myList.firstIndex { $0 % 2 == 0 }) == nil
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html deleted file mode 100644 index 485df96e6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contains_over_range_nil_comparison.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - contains_over_range_nil_comparison Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contains over Range Comparison to Nil

- -

Prefer contains over range(of:) != nil and range(of:) == nil

- -
    -
  • Identifier: contains_over_range_nil_comparison
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let range = myString.range(of: "Test")
-
-
myString.contains("Test")
-
-
!myString.contains("Test")
-
-
resourceString.range(of: rule.regex, options: .regularExpression) != nil
-
-

Triggering Examples

-
↓myString.range(of: "Test") != nil
-
-
↓myString.range(of: "Test") == nil
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contrasted_opening_brace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contrasted_opening_brace.html deleted file mode 100644 index 364ad5e00..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/contrasted_opening_brace.html +++ /dev/null @@ -1,597 +0,0 @@ - - - - contrasted_opening_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Contrasted Opening Brace

- -

The correct positioning of braces that introduce a block of code or member list is highly controversial. No matter which style is preferred, consistency is key. Apart from different tastes, the positioning of braces can also have a significant impact on the readability of the code, especially for visually impaired developers. This rule ensures that braces are on a separate line after the declaration to contrast the code block from the rest of the declaration. Comments between the declaration and the opening brace are respected. Check out the opening_brace rule for a different style.

- -
    -
  • Identifier: contrasted_opening_brace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func abc()
-{
-}
-
-
[].map()
-{
-    $0
-}
-
-
[].map(
-    {
-    }
-)
-
-
if let a = b
-{
-}
-
-
while a == b
-{
-}
-
-
guard let a = b else
-{
-}
-
-
struct Rule
-{
-}
-
-
struct Parent
-{
-    struct Child
-    {
-        let foo: Int
-    }
-}
-
-
func f(rect: CGRect)
-{
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }()
-}
-
-
func f(rect: CGRect) -> () -> Void
-{
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }
-}
-
-
func f() -> () -> Void
-{
-    {}
-}
-
-
@MyProperty class Rule:
-  NSObject
-{
-  var a: String
-  {
-    return ""
-  }
-}
-
-
self.foo(
-    (
-        "String parameter",
-        { "Do something here" }
-    )
-)
-
-
let pattern = #/(\{(?<key>\w+)\})/#
-
-
if c
-{}
-else
-{}
-
-
    if c /* comment */
-    {
-        return
-    }
-
-
if c1
-{
-  return
-} else if c2
-{
-  return
-} else if c3
-{
-  return
-}
-
-
let a = f.map
-{ a in
-    a
-}
-
-

Triggering Examples

-
func abc()↓{
-}
-
-
func abc() { }
-
-
func abc(a: A,
-         b: B) {}
-
-
[].map { $0 }
-
-
struct OldContentView: View ↓{
-  @State private var showOptions = false
-
-  var body: some View ↓{
-    Button(action: {
-      self.showOptions.toggle()
-    })↓{
-      Image(systemName: "gear")
-    } label: ↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
class Rule
-{
-  var a: String↓{
-    return ""
-  }
-}
-
-
@MyProperty class Rule
-{
-  var a: String
-  {
-    willSet↓{
-
-    }
-    didSet  ↓{
-
-    }
-  }
-}
-
-
precedencegroup Group ↓{
-  assignment: true
-}
-
-
if
-    "test".isEmpty ↓{
-    // code here
-}
-
-
if c  ↓{}
-else /* comment */  ↓{}
-
-
if c
-  ↓{
-    // code here
-}
-
-
if c1 ↓{
-  return
-} else if c2↓{
-  return
-} else if c3
- ↓{
-  return
-}
-
-
func f()
-{
-    return a.map
-            ↓{ $0 }
-}
-
-
a ↓{
-    $0
-} b: ↓{
-    $1
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/control_statement.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/control_statement.html deleted file mode 100644 index a0210cbe0..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/control_statement.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - control_statement Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Control Statement

- -

if, for, guard, switch, while, and catch statements shouldn’t unnecessarily wrap their conditionals or arguments in parentheses

- -
    -
  • Identifier: control_statement
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if condition {}
-
-
if (a, b) == (0, 1) {}
-
-
if (a || b) && (c || d) {}
-
-
if (min...max).contains(value) {}
-
-
if renderGif(data) {}
-
-
renderGif(data)
-
-
guard condition else {}
-
-
while condition {}
-
-
do {} while condition {}
-
-
do { ; } while condition {}
-
-
switch foo {}
-
-
do {} catch let error as NSError {}
-
-
foo().catch(all: true) {}
-
-
if max(a, b) < c {}
-
-
switch (lhs, rhs) {}
-
-
if (f() { g() {} }) {}
-
-
if (a + f() {} == 1) {}
-
-
if ({ true }()) {}
-
-

Triggering Examples

-
↓if (condition) {}
-
-
↓if(condition) {}
-
-
↓if (condition == endIndex) {}
-
-
↓if ((a || b) && (c || d)) {}
-
-
↓if ((min...max).contains(value)) {}
-
-
↓guard (condition) else {}
-
-
↓while (condition) {}
-
-
↓while(condition) {}
-
-
do { ; } ↓while(condition) {}
-
-
do { ; } ↓while (condition) {}
-
-
↓switch (foo) {}
-
-
do {} ↓catch(let error as NSError) {}
-
-
↓if (max(a, b) < c) {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/convenience_type.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/convenience_type.html deleted file mode 100644 index de2057d5e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/convenience_type.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - convenience_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Convenience Type

- -

Types used for hosting only static members should be implemented as a caseless enum to avoid instantiation

- -
    -
  • Identifier: convenience_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Math { // enum
-  public static let pi = 3.14
-}
-
-
// class with inheritance
-class MathViewController: UIViewController {
-  public static let pi = 3.14
-}
-
-
@objc class Math: NSObject { // class visible to Obj-C
-  public static let pi = 3.14
-}
-
-
struct Math { // type with non-static declarations
-  public static let pi = 3.14
-  public let randomNumber = 2
-}
-
-
class DummyClass {}
-
-
class Foo: NSObject { // class with Obj-C class property
-    class @objc let foo = 1
-}
-
-
class Foo: NSObject { // class with Obj-C static property
-    static @objc let foo = 1
-}
-
-
class Foo { // @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
class Foo { // @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
@objcMembers class Foo { // @objc static func can't exist on an enum
-   static func foo() {}
-}
-
-
final class Foo { // final class, but @objc class func can't exist on an enum
-   @objc class func foo() {}
-}
-
-
final class Foo { // final class, but @objc static func can't exist on an enum
-   @objc static func foo() {}
-}
-
-
@globalActor actor MyActor {
-  static let shared = MyActor()
-}
-
-

Triggering Examples

-
↓struct Math {
-  public static let pi = 3.14
-}
-
-
↓struct Math {
-  public static let pi = 3.14
-  @available(*, unavailable) init() {}
-}
-
-
final ↓class Foo { // final class can't be inherited
-    class let foo = 1
-}
-
-
↓class Foo {
-    class let foo = 1
-}
-
-
↓class Foo {
-    final class let foo = 1
-}
-
-
↓class SomeClass {
-    static func foo() {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/highlight.css b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/highlight.css deleted file mode 100644 index c170357ce..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/highlight.css +++ /dev/null @@ -1,202 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -/* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight .c { - color: #999988; - font-style: italic; } - -.highlight .err { - color: #a61717; - background-color: #e3d2d2; } - -.highlight .k { - color: #000000; - font-weight: bold; } - -.highlight .o { - color: #000000; - font-weight: bold; } - -.highlight .cm { - color: #999988; - font-style: italic; } - -.highlight .cp { - color: #999999; - font-weight: bold; } - -.highlight .c1 { - color: #999988; - font-style: italic; } - -.highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - -.highlight .gd { - color: #000000; - background-color: #ffdddd; } - -.highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - -.highlight .ge { - color: #000000; - font-style: italic; } - -.highlight .gr { - color: #aa0000; } - -.highlight .gh { - color: #999999; } - -.highlight .gi { - color: #000000; - background-color: #ddffdd; } - -.highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - -.highlight .go { - color: #888888; } - -.highlight .gp { - color: #555555; } - -.highlight .gs { - font-weight: bold; } - -.highlight .gu { - color: #aaaaaa; } - -.highlight .gt { - color: #aa0000; } - -.highlight .kc { - color: #000000; - font-weight: bold; } - -.highlight .kd { - color: #000000; - font-weight: bold; } - -.highlight .kp { - color: #000000; - font-weight: bold; } - -.highlight .kr { - color: #000000; - font-weight: bold; } - -.highlight .kt { - color: #445588; } - -.highlight .m { - color: #009999; } - -.highlight .s { - color: #d14; } - -.highlight .na { - color: #008080; } - -.highlight .nb { - color: #0086B3; } - -.highlight .nc { - color: #445588; - font-weight: bold; } - -.highlight .no { - color: #008080; } - -.highlight .ni { - color: #800080; } - -.highlight .ne { - color: #990000; - font-weight: bold; } - -.highlight .nf { - color: #990000; } - -.highlight .nn { - color: #555555; } - -.highlight .nt { - color: #000080; } - -.highlight .nv { - color: #008080; } - -.highlight .ow { - color: #000000; - font-weight: bold; } - -.highlight .w { - color: #bbbbbb; } - -.highlight .mf { - color: #009999; } - -.highlight .mh { - color: #009999; } - -.highlight .mi { - color: #009999; } - -.highlight .mo { - color: #009999; } - -.highlight .sb { - color: #d14; } - -.highlight .sc { - color: #d14; } - -.highlight .sd { - color: #d14; } - -.highlight .s2 { - color: #d14; } - -.highlight .se { - color: #d14; } - -.highlight .sh { - color: #d14; } - -.highlight .si { - color: #d14; } - -.highlight .sx { - color: #d14; } - -.highlight .sr { - color: #009926; } - -.highlight .s1 { - color: #d14; } - -.highlight .ss { - color: #990073; } - -.highlight .bp { - color: #999999; } - -.highlight .vc { - color: #008080; } - -.highlight .vg { - color: #008080; } - -.highlight .vi { - color: #008080; } - -.highlight .il { - color: #009999; } diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/jazzy.css b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/jazzy.css deleted file mode 100644 index 9d4b08b8c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/css/jazzy.css +++ /dev/null @@ -1,405 +0,0 @@ -/*! Jazzy - https://github.com/realm/jazzy - * Copyright Realm Inc. - * SPDX-License-Identifier: MIT - */ -*, *:before, *:after { - box-sizing: inherit; } - -body { - margin: 0; - background: #fff; - color: #333; - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - letter-spacing: .2px; - -webkit-font-smoothing: antialiased; - box-sizing: border-box; } - -h1 { - font-size: 2rem; - font-weight: 700; - margin: 1.275em 0 0.6em; } - -h2 { - font-size: 1.75rem; - font-weight: 700; - margin: 1.275em 0 0.3em; } - -h3 { - font-size: 1.5rem; - font-weight: 700; - margin: 1em 0 0.3em; } - -h4 { - font-size: 1.25rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h5 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; } - -h6 { - font-size: 1rem; - font-weight: 700; - margin: 1.275em 0 0.85em; - color: #777; } - -p { - margin: 0 0 1em; } - -ul, ol { - padding: 0 0 0 2em; - margin: 0 0 0.85em; } - -blockquote { - margin: 0 0 0.85em; - padding: 0 15px; - color: #858585; - border-left: 4px solid #e5e5e5; } - -img { - max-width: 100%; } - -a { - color: #4183c4; - text-decoration: none; } - a:hover, a:focus { - outline: 0; - text-decoration: underline; } - a.discouraged { - text-decoration: line-through; } - a.discouraged:hover, a.discouraged:focus { - text-decoration: underline line-through; } - -table { - background: #fff; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - overflow: auto; - margin: 0 0 0.85em; } - -tr:nth-child(2n) { - background-color: #fbfbfb; } - -th, td { - padding: 6px 13px; - border: 1px solid #ddd; } - -hr { - height: 1px; - border: none; - background-color: #ddd; } - -pre { - margin: 0 0 1.275em; - padding: .85em 1em; - overflow: auto; - background: #f7f7f7; - font-size: .85em; - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -code { - font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } - -.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code { - background: #f7f7f7; - padding: .2em; } - .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after { - letter-spacing: -.2em; - content: "\00a0"; } - -pre code { - padding: 0; - white-space: pre; } - -.content-wrapper { - display: flex; - flex-direction: column; } - @media (min-width: 768px) { - .content-wrapper { - flex-direction: row; } } -.header { - display: flex; - padding: 8px; - font-size: 0.875em; - background: #444; - color: #999; } - -.header-col { - margin: 0; - padding: 0 8px; } - -.header-col--primary { - flex: 1; } - -.header-link { - color: #fff; } - -.header-icon { - padding-right: 2px; - vertical-align: -3px; - height: 16px; } - -.breadcrumbs { - font-size: 0.875em; - padding: 8px 16px; - margin: 0; - background: #fbfbfb; - border-bottom: 1px solid #ddd; } - -.carat { - height: 10px; - margin: 0 5px; } - -.navigation { - order: 2; } - @media (min-width: 768px) { - .navigation { - order: 1; - width: 25%; - max-width: 300px; - padding-bottom: 64px; - overflow: hidden; - word-wrap: normal; - background: #fbfbfb; - border-right: 1px solid #ddd; } } -.nav-groups { - list-style-type: none; - padding-left: 0; } - -.nav-group-name { - border-bottom: 1px solid #ddd; - padding: 8px 0 8px 16px; } - -.nav-group-name-link { - color: #333; } - -.nav-group-tasks { - margin: 8px 0; - padding: 0 0 0 8px; } - -.nav-group-task { - font-size: 1em; - list-style-type: none; - white-space: nowrap; } - -.nav-group-task-link { - color: #808080; } - -.main-content { - order: 1; } - @media (min-width: 768px) { - .main-content { - order: 2; - flex: 1; - padding-bottom: 60px; } } -.section { - padding: 0 32px; - border-bottom: 1px solid #ddd; } - -.section-content { - max-width: 834px; - margin: 0 auto; - padding: 16px 0; } - -.section-name { - color: #666; - display: block; } - .section-name p { - margin-bottom: inherit; } - -.declaration .highlight { - overflow-x: initial; - padding: 8px 0; - margin: 0; - background-color: transparent; - border: none; } - -.task-group-section { - border-top: 1px solid #ddd; } - -.task-group { - padding-top: 0px; } - -.task-name-container a[name]:before { - content: ""; - display: block; } - -.section-name-container { - position: relative; } - .section-name-container .section-name-link { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin-bottom: 0; } - .section-name-container .section-name { - position: relative; - pointer-events: none; - z-index: 1; } - .section-name-container .section-name a { - pointer-events: auto; } - -.item-container { - padding: 0; } - -.item { - padding-top: 8px; - width: 100%; - list-style-type: none; } - .item a[name]:before { - content: ""; - display: block; } - .item .token, .item .direct-link { - display: inline-block; - text-indent: -20px; - padding-left: 3px; - margin-left: 20px; - font-size: 1rem; } - -.declaration-note { - font-size: .85em; - color: #808080; - font-style: italic; } - -.pointer-container { - border-bottom: 1px solid #ddd; - left: -23px; - padding-bottom: 13px; - position: relative; - width: 110%; } - -.pointer { - left: 21px; - top: 7px; - display: block; - position: absolute; - width: 12px; - height: 12px; - border-left: 1px solid #ddd; - border-top: 1px solid #ddd; - background: #fff; - transform: rotate(45deg); } - -.height-container { - display: none; - position: relative; - width: 100%; - overflow: hidden; } - .height-container .section { - background: #fff; - border: 1px solid #ddd; - border-top-width: 0; - padding-top: 10px; - padding-bottom: 5px; - padding: 8px 16px; } - -.aside, .language { - padding: 6px 12px; - margin: 12px 0; - border-left: 5px solid #dddddd; - overflow-y: hidden; } - .aside .aside-title, .language .aside-title { - font-size: 9px; - letter-spacing: 2px; - text-transform: uppercase; - padding-bottom: 0; - margin: 0; - color: #aaa; - -webkit-user-select: none; } - .aside p:last-child, .language p:last-child { - margin-bottom: 0; } - -.language { - border-left: 5px solid #cde9f4; } - .language .aside-title { - color: #4183c4; } - -.aside-warning, .aside-deprecated, .aside-unavailable { - border-left: 5px solid #ff6666; } - .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title { - color: #ff0000; } - -.graybox { - border-collapse: collapse; - width: 100%; } - .graybox p { - margin: 0; - word-break: break-word; - min-width: 50px; } - .graybox td { - border: 1px solid #ddd; - padding: 5px 25px 5px 10px; - vertical-align: middle; } - .graybox tr td:first-of-type { - text-align: right; - padding: 7px; - vertical-align: top; - word-break: normal; - width: 40px; } - -.slightly-smaller { - font-size: 0.9em; } - -.footer { - padding: 8px 16px; - background: #444; - color: #ddd; - font-size: 0.8em; } - .footer p { - margin: 8px 0; } - .footer a { - color: #fff; } - -html.dash .header, html.dash .breadcrumbs, html.dash .navigation { - display: none; } - -html.dash .height-container { - display: block; } - -form[role=search] input { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 24px; - padding: 0 10px; - margin: 0; - border: none; - border-radius: 1em; } - .loading form[role=search] input { - background: white url(../img/spinner.gif) center right 4px no-repeat; } - -form[role=search] .tt-menu { - margin: 0; - min-width: 300px; - background: #fbfbfb; - color: #333; - border: 1px solid #ddd; } - -form[role=search] .tt-highlight { - font-weight: bold; } - -form[role=search] .tt-suggestion { - font: 16px/1.7 "Helvetica Neue", Helvetica, Arial, sans-serif; - padding: 0 8px; } - form[role=search] .tt-suggestion span { - display: table-cell; - white-space: nowrap; } - form[role=search] .tt-suggestion .doc-parent-name { - width: 100%; - text-align: right; - font-weight: normal; - font-size: 0.9em; - padding-left: 16px; } - -form[role=search] .tt-suggestion:hover, -form[role=search] .tt-suggestion.tt-cursor { - cursor: pointer; - background-color: #4183c4; - color: #fff; } - -form[role=search] .tt-suggestion:hover .doc-parent-name, -form[role=search] .tt-suggestion.tt-cursor .doc-parent-name { - color: #fff; } diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/custom_rules.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/custom_rules.html deleted file mode 100644 index dd78a7e58..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/custom_rules.html +++ /dev/null @@ -1,394 +0,0 @@ - - - - custom_rules Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Custom Rules

- -

Create custom rules by providing a regex string. Optionally specify what syntax kinds to match against, the severity level, and what message to display.

- -
    -
  • Identifier: custom_rules
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/cyclomatic_complexity.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/cyclomatic_complexity.html deleted file mode 100644 index 7c4a28057..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/cyclomatic_complexity.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - cyclomatic_complexity Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Cyclomatic Complexity

- -

Complexity of function bodies should be limited.

- -
    -
  • Identifier: cyclomatic_complexity
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -10 -
    -error - -20 -
    -ignores_case_statements - -false -
  • -
-

Non Triggering Examples

-
func f1() {
-    if true {
-        for _ in 1..5 { }
-    }
-    if false { }
-}
-
-
func f(code: Int) -> Int {
-    switch code {
-    case 0: fallthrough
-    case 1: return 1
-    case 2: return 1
-    case 3: return 1
-    case 4: return 1
-    case 5: return 1
-    case 6: return 1
-    case 7: return 1
-    case 8: return 1
-    default: return 1
-    }
-}
-
-
func f1() {
-    if true {}; if true {}; if true {}; if true {}; if true {}; if true {}
-    func f2() {
-        if true {}; if true {}; if true {}; if true {}; if true {}
-    }
-}
-
-

Triggering Examples

-
↓func f1() {
-    if true {
-        if true {
-            if false {}
-        }
-    }
-    if false {}
-    let i = 0
-    switch i {
-        case 1: break
-        case 2: break
-        case 3: break
-        case 4: break
-        default: break
-    }
-    for _ in 1...5 {
-        guard true else {
-            return
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/deployment_target.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/deployment_target.html deleted file mode 100644 index a43e94043..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/deployment_target.html +++ /dev/null @@ -1,554 +0,0 @@ - - - - deployment_target Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Deployment Target

- -

Availability checks or attributes shouldn’t be using older versions that are satisfied by the deployment target.

- -
    -
  • Identifier: deployment_target
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -iOSApplicationExtension_deployment_target - -7.0 -
    -iOS_deployment_target - -7.0 -
    -macOSApplicationExtension_deployment_target - -10.9 -
    -macOS_deployment_target - -10.9 -
    -tvOSApplicationExtension_deployment_target - -9.0 -
    -tvOS_deployment_target - -9.0 -
    -watchOSApplicationExtension_deployment_target - -1.0 -
    -watchOS_deployment_target - -1.0 -
  • -
-

Non Triggering Examples

-
@available(iOS 12.0, *)
-class A {}
-
-
@available(iOSApplicationExtension 13.0, *)
-class A {}
-
-
@available(watchOS 4.0, *)
-class A {}
-
-
@available(watchOSApplicationExtension 4.0, *)
-class A {}
-
-
@available(swift 3.0.2)
-class A {}
-
-
class A {}
-
-
if #available(iOS 10.0, *) {}
-
-
if #available(iOS 10, *) {}
-
-
guard #available(iOS 12.0, *) else { return }
-
-
#if #unavailable(iOS 15.0) {}
-
-
#guard #unavailable(iOS 15.0) {} else { return }
-
-

Triggering Examples

-
↓@available(iOS 6.0, *)
-class A {}
-
-
↓@available(iOSApplicationExtension 6.0, *)
-class A {}
-
-
↓@available(iOS 7.0, *)
-class A {}
-
-
↓@available(iOS 6, *)
-class A {}
-
-
↓@available(iOS 6.0, macOS 10.12, *)
- class A {}
-
-
↓@available(macOS 10.12, iOS 6.0, *)
- class A {}
-
-
↓@available(macOS 10.7, *)
-class A {}
-
-
↓@available(macOSApplicationExtension 10.7, *)
-class A {}
-
-
↓@available(OSX 10.7, *)
-class A {}
-
-
↓@available(watchOS 0.9, *)
-class A {}
-
-
↓@available(watchOSApplicationExtension 0.9, *)
-class A {}
-
-
↓@available(tvOS 8, *)
-class A {}
-
-
↓@available(tvOSApplicationExtension 8, *)
-class A {}
-
-
if ↓#available(iOS 6.0, *) {}
-
-
if ↓#available(iOS 6, *) {}
-
-
guard ↓#available(iOS 6.0, *) else { return }
-
-
if ↓#unavailable(iOS 7.0) {}
-
-
if ↓#unavailable(iOS 6.9) {}
-
-
guard ↓#unavailable(iOS 7.0) {} else { return }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/direct_return.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/direct_return.html deleted file mode 100644 index e4a168e86..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/direct_return.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - direct_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Direct Return

- -

Directly return the expression instead of assigning it to a variable first

- -
    -
  • Identifier: direct_return
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func f() -> Int {
-    let b = 2
-    let a = 1
-    return b
-}
-
-
struct S {
-    var a: Int {
-        var b = 1
-        b = 2
-        return b
-    }
-}
-
-
func f() -> Int {
-    let b = 2
-    f()
-    return b
-}
-
-
func f() -> Int {
-    { i in
-        let b = 2
-        return i
-    }(1)
-}
-
-

Triggering Examples

-
func f() -> Int {
-    let ↓b = 2
-    return b
-}
-
-
struct S {
-    var a: Int {
-        var ↓b = 1
-        // comment
-        return b
-    }
-}
-
-
func f() -> Bool {
-    let a = 1, ↓b = true
-    return b
-}
-
-
func f() -> Int {
-    { _ in
-        let ↓b = 2
-        return b
-    }(1)
-}
-
-
func f(i: Int) -> Int {
-    if i > 1 {
-        let ↓a = 2
-        return a
-    } else {
-        let ↓b = 2, a = 1
-        return b
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discarded_notification_center_observer.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discarded_notification_center_observer.html deleted file mode 100644 index f7486bd79..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discarded_notification_center_observer.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - discarded_notification_center_observer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discarded Notification Center Observer

- -

When registering for a notification using a block, the opaque observer that is returned should be stored so it can be removed later

- -
    -
  • Identifier: discarded_notification_center_observer
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
let foo = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
func foo() -> Any {
-    return nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
func foo() -> Any {
-    nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
var obs: [String: Any?] = []
-obs["foo"] = nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
var obs: [Any?] = []
-obs.append(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
func foo(_ notify: Any) {
-   obs.append(notify)
-}
-foo(nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }))
-
-
var obs: [NSObjectProtocol] = [
-   nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { }),
-   nc.addObserver(forName: .CKAccountChanged, object: nil, queue: nil, using: { })
-]
-
-
names.map { self.notificationCenter.addObserver(forName: $0, object: object, queue: queue, using: block) }
-
-
f { return nc.addObserver(forName: $0, object: object, queue: queue, using: block) }
-
-

Triggering Examples

-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
_ = ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil) { }
-
-
↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-
-
@discardableResult func foo() -> Any {
-   return ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-}
-
-
class C {
-    var i: Int {
-        set { ↓notificationCenter.addObserver(forName: $0, object: object, queue: queue, using: block) }
-        get {
-            ↓notificationCenter.addObserver(forName: $0, object: object, queue: queue, using: block)
-            return 2
-        }
-    }
-}
-
-
f {
-    ↓nc.addObserver(forName: $0, object: object, queue: queue) {}
-    return 2
-}
-
-
func foo() -> Any {
-    if cond {
-        ↓nc.addObserver(forName: .NSSystemTimeZoneDidChange, object: nil, queue: nil, using: { })
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_assert.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_assert.html deleted file mode 100644 index a2a8d3f12..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_assert.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - discouraged_assert Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Assert

- -

Prefer assertionFailure() and/or preconditionFailure() over assert(false)

- -
    -
  • Identifier: discouraged_assert
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
assert(true)
-
-
assert(true, "foobar")
-
-
assert(true, "foobar", file: "toto", line: 42)
-
-
assert(false || true)
-
-
XCTAssert(false)
-
-

Triggering Examples

-
↓assert(false)
-
-
↓assert(false, "foobar")
-
-
↓assert(false, "foobar", file: "toto", line: 42)
-
-
↓assert(   false    , "foobar")
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_direct_init.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_direct_init.html deleted file mode 100644 index 0e4f5a9aa..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_direct_init.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - discouraged_direct_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Direct Initialization

- -

Discouraged direct initialization of types that can be harmful

- -
    -
  • Identifier: discouraged_direct_init
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -types - -[“Bundle”, “Bundle.init”, “NSError”, “NSError.init”, “UIDevice”, “UIDevice.init”] -
  • -
-

Non Triggering Examples

-
let foo = UIDevice.current
-
-
let foo = Bundle.main
-
-
let foo = Bundle(path: "bar")
-
-
let foo = Bundle(identifier: "bar")
-
-
let foo = Bundle.init(path: "bar")
-
-
let foo = Bundle.init(identifier: "bar")
-
-
let foo = NSError(domain: "bar", code: 0)
-
-
let foo = NSError.init(domain: "bar", code: 0)
-
-
func testNSError()
-
-

Triggering Examples

-
↓UIDevice()
-
-
↓Bundle()
-
-
let foo = ↓UIDevice()
-
-
let foo = ↓Bundle()
-
-
let foo = ↓NSError()
-
-
let foo = bar(bundle: ↓Bundle(), device: ↓UIDevice(), error: ↓NSError())
-
-
↓UIDevice.init()
-
-
↓Bundle.init()
-
-
↓NSError.init()
-
-
let foo = ↓UIDevice.init()
-
-
let foo = ↓Bundle.init()
-
-
let foo = bar(bundle: ↓Bundle.init(), device: ↓UIDevice.init(), error: ↓NSError.init())
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_none_name.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_none_name.html deleted file mode 100644 index 6d3b6eaf7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_none_name.html +++ /dev/null @@ -1,540 +0,0 @@ - - - - discouraged_none_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged None Name

- -

Enum cases and static members named none are discouraged as they can conflict with Optional<T>.none.

- -
    -
  • Identifier: discouraged_none_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum MyEnum {
-    case nOne
-}
-
-
enum MyEnum {
-    case _none
-}
-
-
enum MyEnum {
-    case none_
-}
-
-
enum MyEnum {
-    case none(Any)
-}
-
-
enum MyEnum {
-    case nonenone
-}
-
-
class MyClass {
-    class var nonenone: MyClass { MyClass() }
-}
-
-
class MyClass {
-    static var nonenone = MyClass()
-}
-
-
class MyClass {
-    static let nonenone = MyClass()
-}
-
-
struct MyStruct {
-    static var nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    static let nonenone = MyStruct()
-}
-
-
struct MyStruct {
-    let none = MyStruct()
-}
-
-
struct MyStruct {
-    var none = MyStruct()
-}
-
-
class MyClass {
-    let none = MyClass()
-}
-
-
class MyClass {
-    var none = MyClass()
-}
-
-

Triggering Examples

-
enum MyEnum {
-    case ↓none
-}
-
-
enum MyEnum {
-    case a, ↓none
-}
-
-
enum MyEnum {
-    case ↓none, b
-}
-
-
enum MyEnum {
-    case a, ↓none, b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-}
-
-
enum MyEnum {
-    case ↓none
-    case b
-}
-
-
enum MyEnum {
-    case a
-    case ↓none
-    case b
-}
-
-
class MyClass {
-    ↓static let none = MyClass()
-}
-
-
class MyClass {
-    ↓static let none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓static var none: MyClass = MyClass()
-}
-
-
class MyClass {
-    ↓class var none: MyClass { MyClass() }
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none: MyStruct = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var a = MyStruct(), none = MyStruct()
-}
-
-
struct MyStruct {
-    ↓static var none = MyStruct(), a = MyStruct()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_object_literal.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_object_literal.html deleted file mode 100644 index cf075b337..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_object_literal.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - discouraged_object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Object Literal

- -

Prefer initializers over object literals

- -
    -
  • Identifier: discouraged_object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -image_literal - -true -
    -color_literal - -true -
  • -
-

Non Triggering Examples

-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓#imageLiteral(resourceName: "image.jpg")
-
-
let color = ↓#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_boolean.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_boolean.html deleted file mode 100644 index 29687f8a0..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_boolean.html +++ /dev/null @@ -1,796 +0,0 @@ - - - - discouraged_optional_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Boolean

- -

Prefer non-optional booleans over optional booleans

- -
    -
  • Identifier: discouraged_optional_boolean
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var foo: Bool
-
-
var foo: [String: Bool]
-
-
var foo: [Bool]
-
-
let foo: Bool = true
-
-
let foo: Bool = false
-
-
let foo: [String: Bool] = [:]
-
-
let foo: [Bool] = []
-
-
var foo: Bool { return true }
-
-
let foo: Bool { return false }()
-
-
func foo() -> Bool {}
-
-
func foo() -> [String: Bool] {}
-
-
func foo() -> ([Bool]) -> String {}
-
-
func foo(input: Bool = true) {}
-
-
func foo(input: [String: Bool] = [:]) {}
-
-
func foo(input: [Bool] = []) {}
-
-
class Foo {
-    func foo() -> Bool {}
-}
-
-
class Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
class Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> Bool {}
-}
-
-
struct Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
struct Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> Bool {}
-}
-
-
enum Foo {
-    func foo() -> [String: Bool] {}
-}
-
-
enum Foo {
-    func foo() -> ([Bool]) -> String {}
-}
-
-
class Foo {
-    func foo(input: Bool = true) {}
-}
-
-
class Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
struct Foo {
-    func foo(input: Bool = true) {}
-}
-
-
struct Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-
enum Foo {
-    func foo(input: Bool = true) {}
-}
-
-
enum Foo {
-    func foo(input: [String: Bool] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: [Bool] = []) {}
-}
-
-

Triggering Examples

-
var foo: ↓Bool?
-
-
var foo: [String: ↓Bool?]
-
-
var foo: [↓Bool?]
-
-
let foo: ↓Bool? = nil
-
-
let foo: [String: ↓Bool?] = [:]
-
-
let foo: [↓Bool?] = []
-
-
let foo = ↓Optional.some(false)
-
-
let foo = ↓Optional.some(true)
-
-
var foo: ↓Bool? { return nil }
-
-
let foo: ↓Bool? { return nil }()
-
-
func foo() -> ↓Bool? {}
-
-
func foo() -> [String: ↓Bool?] {}
-
-
func foo() -> [↓Bool?] {}
-
-
static func foo() -> ↓Bool? {}
-
-
static func foo() -> [String: ↓Bool?] {}
-
-
static func foo() -> [↓Bool?] {}
-
-
func foo() -> (↓Bool?) -> String {}
-
-
func foo() -> ([Int]) -> ↓Bool? {}
-
-
func foo(input: ↓Bool?) {}
-
-
func foo(input: [String: ↓Bool?]) {}
-
-
func foo(input: [↓Bool?]) {}
-
-
static func foo(input: ↓Bool?) {}
-
-
static func foo(input: [String: ↓Bool?]) {}
-
-
static func foo(input: [↓Bool?]) {}
-
-
class Foo {
-    var foo: ↓Bool?
-}
-
-
class Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
class Foo {
-    let foo: ↓Bool? = nil
-}
-
-
class Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
class Foo {
-    let foo: [↓Bool?] = []
-}
-
-
struct Foo {
-    var foo: ↓Bool?
-}
-
-
struct Foo {
-    var foo: [String: ↓Bool?]
-}
-
-
struct Foo {
-    let foo: ↓Bool? = nil
-}
-
-
struct Foo {
-    let foo: [String: ↓Bool?] = [:]
-}
-
-
struct Foo {
-    let foo: [↓Bool?] = []
-}
-
-
class Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
class Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓Bool? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓Bool? { return nil }()
-}
-
-
class Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
class Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
class Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
class Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
struct Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
struct Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> ↓Bool? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: ↓Bool?] {}
-}
-
-
enum Foo {
-    static func foo() -> [↓Bool?] {}
-}
-
-
enum Foo {
-    func foo() -> (↓Bool?) -> String {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> ↓Bool? {}
-}
-
-
class Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
class Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
class Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
struct Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
struct Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    func foo(input: [↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓Bool?) {}
-}
-
-
enum Foo {
-    static func foo(input: [String: ↓Bool?]) {}
-}
-
-
enum Foo {
-    static func foo(input: [↓Bool?]) {}
-}
-
-
_ = ↓Bool?.values()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_collection.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_collection.html deleted file mode 100644 index 93c9a125b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/discouraged_optional_collection.html +++ /dev/null @@ -1,976 +0,0 @@ - - - - discouraged_optional_collection Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Discouraged Optional Collection

- -

Prefer empty collection over optional collection

- -
    -
  • Identifier: discouraged_optional_collection
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var foo: [Int]
-
-
var foo: [String: Int]
-
-
var foo: Set<String>
-
-
var foo: [String: [String: Int]]
-
-
let foo: [Int] = []
-
-
let foo: [String: Int] = [:]
-
-
let foo: Set<String> = []
-
-
let foo: [String: [String: Int]] = [:]
-
-
var foo: [Int] { return [] }
-
-
func foo() -> [Int] {}
-
-
func foo() -> [String: String] {}
-
-
func foo() -> Set<Int> {}
-
-
func foo() -> ([Int]) -> String {}
-
-
func foo(input: [String] = []) {}
-
-
func foo(input: [String: String] = [:]) {}
-
-
func foo(input: Set<String> = []) {}
-
-
class Foo {
-    func foo() -> [Int] {}
-}
-
-
class Foo {
-    func foo() -> [String: String] {}
-}
-
-
class Foo {
-    func foo() -> Set<Int> {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
struct Foo {
-    func foo() -> [Int] {}
-}
-
-
struct Foo {
-    func foo() -> [String: String] {}
-}
-
-
struct Foo {
-    func foo() -> Set<Int> {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
enum Foo {
-    func foo() -> [Int] {}
-}
-
-
enum Foo {
-    func foo() -> [String: String] {}
-}
-
-
enum Foo {
-    func foo() -> Set<Int> {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> String {}
-}
-
-
class Foo {
-    func foo(input: [String] = []) {}
-}
-
-
class Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
class Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String] = []) {}
-}
-
-
struct Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
struct Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String] = []) {}
-}
-
-
enum Foo {
-    func foo(input: [String: String] = [:]) {}
-}
-
-
enum Foo {
-    func foo(input: Set<String> = []) {}
-}
-
-

Triggering Examples

-
var foo: ↓[Int]?
-
-
var foo: ↓[String: Int]?
-
-
var foo: ↓Set<String>?
-
-
let foo: ↓[Int]? = nil
-
-
let foo: ↓[String: Int]? = nil
-
-
let foo: ↓Set<String>? = nil
-
-
var foo: ↓[Int]? { return nil }
-
-
let foo: ↓[Int]? { return nil }()
-
-
func foo() -> ↓[T]? {}
-
-
func foo() -> ↓[String: String]? {}
-
-
func foo() -> ↓[String: [String: String]]? {}
-
-
func foo() -> [String: ↓[String: String]?] {}
-
-
func foo() -> ↓Set<Int>? {}
-
-
static func foo() -> ↓[T]? {}
-
-
static func foo() -> ↓[String: String]? {}
-
-
static func foo() -> ↓[String: [String: String]]? {}
-
-
static func foo() -> [String: ↓[String: String]?] {}
-
-
static func foo() -> ↓Set<Int>? {}
-
-
func foo() -> (↓[Int]?) -> String {}
-
-
func foo() -> ([Int]) -> ↓[String]? {}
-
-
func foo(input: ↓[String: String]?) {}
-
-
func foo(input: ↓[String: [String: String]]?) {}
-
-
func foo(input: [String: ↓[String: String]?]) {}
-
-
func foo(input: ↓[String: ↓[String: String]?]?) {}
-
-
func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-
-
func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-
-
static func foo(input: ↓[String: String]?) {}
-
-
static func foo(input: ↓[String: [String: String]]?) {}
-
-
static func foo(input: [String: ↓[String: String]?]) {}
-
-
static func foo(input: ↓[String: ↓[String: String]?]?) {}
-
-
static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-
-
static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-
-
class Foo {
-    var foo: ↓[Int]?
-}
-
-
class Foo {
-    var foo: ↓[String: Int]?
-}
-
-
class Foo {
-    var foo: ↓Set<String>?
-}
-
-
class Foo {
-    let foo: ↓[Int]? = nil
-}
-
-
class Foo {
-    let foo: ↓[String: Int]? = nil
-}
-
-
class Foo {
-    let foo: ↓Set<String>? = nil
-}
-
-
struct Foo {
-    var foo: ↓[Int]?
-}
-
-
struct Foo {
-    var foo: ↓[String: Int]?
-}
-
-
struct Foo {
-    var foo: ↓Set<String>?
-}
-
-
struct Foo {
-    let foo: ↓[Int]? = nil
-}
-
-
struct Foo {
-    let foo: ↓[String: Int]? = nil
-}
-
-
struct Foo {
-    let foo: ↓Set<String>? = nil
-}
-
-
class Foo {
-    var foo: ↓[Int]? { return nil }
-}
-
-
class Foo {
-    let foo: ↓[Int]? { return nil }()
-}
-
-
class Foo {
-    var foo: ↓Set<String>? { return nil }
-}
-
-
class Foo {
-    let foo: ↓Set<String>? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓[Int]? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓[Int]? { return nil }()
-}
-
-
struct Foo {
-    var foo: ↓Set<String>? { return nil }
-}
-
-
struct Foo {
-    let foo: ↓Set<String>? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓[Int]? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓[Int]? { return nil }()
-}
-
-
enum Foo {
-    var foo: ↓Set<String>? { return nil }
-}
-
-
enum Foo {
-    let foo: ↓Set<String>? { return nil }()
-}
-
-
class Foo {
-    func foo() -> [T]? {}
-}
-
-
class Foo {
-    func foo() -> ↓[String: String]? {}
-}
-
-
class Foo {
-    func foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    func foo() -> [String: ↓[String: String]?] {}
-}
-
-
class Foo {
-    func foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    static func foo() -> [T]? {}
-}
-
-
class Foo {
-    static func foo() -> ↓[String: String]? {}
-}
-
-
class Foo {
-    static func foo() -> [String: [String: String]]? {}
-}
-
-
class Foo {
-    static func foo() -> [String: ↓[String: String]?] {}
-}
-
-
class Foo {
-    static func foo() -> Set<Int>? {}
-}
-
-
class Foo {
-    func foo() -> ([Int]?) -> String {}
-}
-
-
class Foo {
-    func foo() -> ([Int]) -> [String]? {}
-}
-
-
struct Foo {
-    func foo() -> [T]? {}
-}
-
-
struct Foo {
-    func foo() -> ↓[String: String]? {}
-}
-
-
struct Foo {
-    func foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    func foo() -> [String: ↓[String: String]?] {}
-}
-
-
struct Foo {
-    func foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    static func foo() -> [T]? {}
-}
-
-
struct Foo {
-    static func foo() -> ↓[String: String]? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: [String: String]]? {}
-}
-
-
struct Foo {
-    static func foo() -> [String: ↓[String: String]?] {}
-}
-
-
struct Foo {
-    static func foo() -> Set<Int>? {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]?) -> String {}
-}
-
-
struct Foo {
-    func foo() -> ([Int]) -> [String]? {}
-}
-
-
enum Foo {
-    func foo() -> [T]? {}
-}
-
-
enum Foo {
-    func foo() -> ↓[String: String]? {}
-}
-
-
enum Foo {
-    func foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    func foo() -> [String: ↓[String: String]?] {}
-}
-
-
enum Foo {
-    func foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    static func foo() -> [T]? {}
-}
-
-
enum Foo {
-    static func foo() -> ↓[String: String]? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: [String: String]]? {}
-}
-
-
enum Foo {
-    static func foo() -> [String: ↓[String: String]?] {}
-}
-
-
enum Foo {
-    static func foo() -> Set<Int>? {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]?) -> String {}
-}
-
-
enum Foo {
-    func foo() -> ([Int]) -> [String]? {}
-}
-
-
class Foo {
-    func foo(input: ↓[String: String]?) {}
-}
-
-
class Foo {
-    func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
class Foo {
-    func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
class Foo {
-    func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
class Foo {
-    func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
class Foo {
-    func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo(input: ↓[String: String]?) {}
-}
-
-
class Foo {
-    static func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
class Foo {
-    static func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
class Foo {
-    static func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
class Foo {
-    static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
class Foo {
-    static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo(input: ↓[String: String]?) {}
-}
-
-
struct Foo {
-    func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
struct Foo {
-    func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
struct Foo {
-    func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
struct Foo {
-    func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo(input: ↓[String: String]?) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
struct Foo {
-    static func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
struct Foo {
-    static func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
struct Foo {
-    static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
struct Foo {
-    static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo(input: ↓[String: String]?) {}
-}
-
-
enum Foo {
-    func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
enum Foo {
-    func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
enum Foo {
-    func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
enum Foo {
-    func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo(input: ↓[String: String]?) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓[String: [String: String]]?) {}
-}
-
-
enum Foo {
-    static func foo(input: [String: ↓[String: String]?]) {}
-}
-
-
enum Foo {
-    static func foo(input: ↓[String: ↓[String: String]?]?) {}
-}
-
-
enum Foo {
-    static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
-}
-
-
enum Foo {
-    static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_conditions.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_conditions.html deleted file mode 100644 index 6330888eb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_conditions.html +++ /dev/null @@ -1,534 +0,0 @@ - - - - duplicate_conditions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Conditions

- -

Duplicate sets of conditions in the same branch instruction should be avoided

- -
    -
  • Identifier: duplicate_conditions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
if x < 5 {
-    foo()
-} else if y == "s" {
-    bar()
-}
-
-
if x < 5 {
-    foo()
-}
-if x < 5 {
-    bar()
-}
-
-
if x < 5, y == "s" {
-    foo()
-} else if x < 5 {
-    bar()
-}
-
-
switch x {
-case "a":
-    foo()
-    bar()
-}
-
-
switch x {
-case "a" where y == "s":
-    foo()
-case "a" where y == "t":
-    bar()
-}
-
-
if let x = maybeAbc {
-    foo()
-} else if let x = maybePqr {
-    bar()
-}
-
-
if let x = maybeAbc, let z = x.maybeY {
-    foo()
-} else if let x = maybePqr, let z = x.maybeY {
-    bar()
-}
-
-
if case .p = x {
-    foo()
-} else if case .q = x {
-    bar()
-}
-
-
if true {
-    if true { foo() }
-}
-
-

Triggering Examples

-
if ↓x < 5 {
-    foo()
-} else if y == "s" {
-    bar()
-} else if ↓x < 5 {
-    baz()
-}
-
-
if z {
-    if ↓x < 5 {
-        foo()
-    } else if y == "s" {
-        bar()
-    } else if ↓x < 5 {
-        baz()
-    }
-}
-
-
if ↓x < 5, y == "s" {
-    foo()
-} else if x < 10 {
-    bar()
-} else if ↓y == "s", x < 5 {
-    baz()
-}
-
-
switch x {
-case ↓"a", "b":
-    foo()
-case "c", ↓"a":
-    bar()
-}
-
-
switch x {
-case ↓"a" where y == "s":
-    foo()
-case ↓"a" where y == "s":
-    bar()
-}
-
-
if ↓let xyz = maybeXyz {
-    foo()
-} else if ↓let xyz = maybeXyz {
-    bar()
-}
-
-
if ↓let x = maybeAbc, let z = x.maybeY {
-    foo()
-} else if ↓let x = maybeAbc, let z = x.maybeY {
-    bar()
-}
-
-
if ↓#available(macOS 10.15, *) {
-    foo()
-} else if ↓#available(macOS 10.15, *) {
-    bar()
-}
-
-
if ↓case .p = x {
-    foo()
-} else if ↓case .p = x {
-    bar()
-}
-
-
if ↓x < 5 {}
-else if ↓x < 5 {}
-else if ↓x < 5 {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_enum_cases.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_enum_cases.html deleted file mode 100644 index ffff370c1..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_enum_cases.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - duplicate_enum_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Enum Cases

- -

Enum shouldn’t contain multiple cases with the same name

- -
    -
  • Identifier: duplicate_enum_cases
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
enum PictureImport {
-    case addImage(image: UIImage)
-    case addData(data: Data)
-}
-
-
enum A {
-    case add(image: UIImage)
-}
-enum B {
-    case add(image: UIImage)
-}
-
-
enum Tag: String {
-#if CONFIG_A
-    case value = "CONFIG_A"
-#elseif CONFIG_B
-    case value = "CONFIG_B"
-#else
-    case value = "CONFIG_DEFAULT"
-#endif
-}
-
-
enum Target {
-#if os(iOS)
-  case file
-#else
-  case file(URL)
-#endif
-}
-
-

Triggering Examples

-
enum PictureImport {
-    case ↓add(image: UIImage)
-    case addURL(url: URL)
-    case ↓add(data: Data)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_imports.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_imports.html deleted file mode 100644 index f6d3be305..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicate_imports.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - duplicate_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Imports

- -

Imports should be unique

- -
    -
  • Identifier: duplicate_imports
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
import A
-import B
-import C
-
-
import A.B
-import A.C
-
-
@_implementationOnly import A
-@_implementationOnly import B
-
-
@testable import A
-@testable import B
-
-
#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-
-
import A // module
-import B // module
-
-
#if TEST
-func test() {
-}
-
-
import Foo
-@testable import struct Foo.Bar
-
-

Triggering Examples

-
@_implementationOnly import A
-↓@_implementationOnly import A
-
-
-
@testable import A
-↓@testable import A
-
-
-
@testable import Foo
-import struct Foo.Bar
-
-
import A
-#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-↓import A
-
-
-
import A
-↓import class A.Foo
-
-
-
import A
-↓import enum A.Foo
-
-
-
import A
-↓import func A.Foo
-
-
-
import A
-↓import let A.Foo
-
-
-
import A
-↓import protocol A.Foo
-
-
-
import A
-↓import struct A.Foo
-
-
-
import A
-↓import typealias A.Foo
-
-
-
import A
-↓import var A.Foo
-
-
-
import A.B
-↓import A.B.C
-
-
-
import Foundation
-import Dispatch
-↓import Foundation
-
-
-
import Foundation
-↓import Foundation
-↓import Foundation
-
-
-
import Foundation
-↓import Foundation.NSString
-
-
-
↓import A.B.C
-import A.B
-
-
-
↓import Foundation.NSString
-import Foundation
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html deleted file mode 100644 index 07540bf3f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/duplicated_key_in_dictionary_literal.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - duplicated_key_in_dictionary_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicated Key in Dictionary Literal

- -

Dictionary literals with duplicated keys will crash at runtime

- -
    -
  • Identifier: duplicated_key_in_dictionary_literal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[
-    1: "1",
-    2: "2"
-]
-
-
[
-    "1": 1,
-    "2": 2
-]
-
-
[
-    foo: "1",
-    bar: "2"
-]
-
-
[
-    UUID(): "1",
-    UUID(): "2"
-]
-
-
[
-    #line: "1",
-    #line: "2"
-]
-
-

Triggering Examples

-
[
-    1: "1",
-    2: "2",
-    ↓1: "one"
-]
-
-
[
-    "1": 1,
-    "2": 2,
-    ↓"2": 2
-]
-
-
[
-    foo: "1",
-    bar: "2",
-    baz: "3",
-    ↓foo: "4",
-    zaz: "5"
-]
-
-
[
-    .one: "1",
-    .two: "2",
-    .three: "3",
-    ↓.one: "1",
-    .four: "4",
-    .five: "5"
-]
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/dynamic_inline.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/dynamic_inline.html deleted file mode 100644 index 202f8845e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/dynamic_inline.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - dynamic_inline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Dynamic Inline

- -

Avoid using ‘dynamic’ and ‘@inline(__always)’ together

- -
    -
  • Identifier: dynamic_inline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
class C {
-dynamic func f() {}}
-
-
class C {
-@inline(__always) func f() {}}
-
-
class C {
-@inline(never) dynamic func f() {}}
-
-

Triggering Examples

-
class C {
-@inline(__always) dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) public dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) dynamic internal ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic
-↓func f() {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_collection_literal.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_collection_literal.html deleted file mode 100644 index 7f43bcecb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_collection_literal.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - empty_collection_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Collection Literal

- -

Prefer checking isEmpty over comparing collection to an empty array or dictionary literal

- -
    -
  • Identifier: empty_collection_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
myArray = []
-
-
myArray.isEmpty
-
-
!myArray.isEmpty
-
-
myDict = [:]
-
-

Triggering Examples

-
myArray↓ == []
-
-
myArray↓ != []
-
-
myArray↓ == [ ]
-
-
myDict↓ == [:]
-
-
myDict↓ != [:]
-
-
myDict↓ == [: ]
-
-
myDict↓ == [ :]
-
-
myDict↓ == [ : ]
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_count.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_count.html deleted file mode 100644 index 86a145cc6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_count.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - empty_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Count

- -

Prefer checking isEmpty over comparing count to zero

- -
    -
  • Identifier: empty_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -error -
    -only_after_dot - -false -
  • -
-

Non Triggering Examples

-
var count = 0
-
-
[Int]().isEmpty
-
-
[Int]().count > 1
-
-
[Int]().count == 1
-
-
[Int]().count == 0xff
-
-
[Int]().count == 0b01
-
-
[Int]().count == 0o07
-
-
discount == 0
-
-
order.discount == 0
-
-

Triggering Examples

-
[Int]().↓count == 0
-
-
0 == [Int]().↓count
-
-
[Int]().↓count==0
-
-
[Int]().↓count > 0
-
-
[Int]().↓count != 0
-
-
[Int]().↓count == 0x0
-
-
[Int]().↓count == 0x00_00
-
-
[Int]().↓count == 0b00
-
-
[Int]().↓count == 0o00
-
-
↓count == 0
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_enum_arguments.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_enum_arguments.html deleted file mode 100644 index 6bdf9226d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_enum_arguments.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - empty_enum_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Enum Arguments

- -

Arguments can be omitted when matching enums with associated values if they are not used

- -
    -
  • Identifier: empty_enum_arguments
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar: break
-}
-
-
switch foo {
-case .bar(let x): break
-}
-
-
switch foo {
-case let .bar(x): break
-}
-
-
switch (foo, bar) {
-case (_, _): break
-}
-
-
switch foo {
-case "bar".uppercased(): break
-}
-
-
switch (foo, bar) {
-case (_, _) where !something: break
-}
-
-
switch foo {
-case (let f as () -> String)?: break
-}
-
-
switch foo {
-case .bar(Baz()): break
-}
-
-
switch foo {
-case .bar(.init()): break
-}
-
-
switch foo {
-default: break
-}
-
-
if case .bar = foo {
-}
-
-
guard case .bar = foo else {
-}
-
-
if foo == .bar() {}
-
-
guard foo == .bar() else { return }
-
-
if case .appStore = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
-
let updatedUserNotificationSettings = deepLink.filter { nav in
-    guard case .settings(.notifications(_, nil)) = nav else { return false }
-    return true
-}
-
-

Triggering Examples

-
switch foo {
-case .bar↓(_): break
-}
-
-
switch foo {
-case .bar↓(): break
-}
-
-
switch foo {
-case .bar↓(_), .bar2↓(_): break
-}
-
-
switch foo {
-case .bar↓() where method() > 2: break
-}
-
-
switch foo {
-case .bar(.baz↓()): break
-}
-
-
switch foo {
-case .bar(.baz↓(_)): break
-}
-
-
func example(foo: Foo) {
-    switch foo {
-    case .bar↓(_):
-        break
-    }
-}
-
-
if case .bar↓(_) = foo {
-}
-
-
guard case .bar↓(_) = foo else {
-}
-
-
if case .bar↓() = foo {
-}
-
-
guard case .bar↓() = foo else {
-}
-
-
if case .appStore↓(_) = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
-
let updatedUserNotificationSettings = deepLink.filter { nav in
-    guard case .settings(.notifications↓(_, _)) = nav else { return false }
-    return true
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parameters.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parameters.html deleted file mode 100644 index 6ed252786..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parameters.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - empty_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parameters

- -

Prefer () -> over Void ->

- -
    -
  • Identifier: empty_parameters
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
func foo(completion: () -> Void)
-
-
func foo(completion: () throws -> Void)
-
-
let foo: (ConfigurationTests) -> Void throws -> Void)
-
-
let foo: (ConfigurationTests) ->   Void throws -> Void)
-
-
let foo: (ConfigurationTests) ->Void throws -> Void)
-
-

Triggering Examples

-
let abc: ↓(Void) -> Void = {}
-
-
func foo(completion: ↓(Void) -> Void)
-
-
func foo(completion: ↓(Void) throws -> Void)
-
-
let foo: ↓(Void) -> () throws -> Void)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html deleted file mode 100644 index 7723fbb3f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_parentheses_with_trailing_closure.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - empty_parentheses_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parentheses with Trailing Closure

- -

When using trailing closures, empty parentheses should be avoided after the method call

- -
    -
  • Identifier: empty_parentheses_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
[1, 2].map({ $0 + 1 })
-
-
[1, 2].reduce(0) { $0 + $1 }
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
let isEmpty = [1, 2].isEmpty()
-
-
UIView.animateWithDuration(0.3, animations: {
-   self.disableInteractionRightView.alpha = 0
-}, completion: { _ in
-   ()
-})
-
-

Triggering Examples

-
[1, 2].map↓() { $0 + 1 }
-
-
[1, 2].map↓( ) { $0 + 1 }
-
-
[1, 2].map↓() { number in
- number + 1 
-}
-
-
[1, 2].map↓(  ) { number in
- number + 1 
-}
-
-
func foo() -> [Int] {
-    return [1, 2].map↓() { $0 + 1 }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_string.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_string.html deleted file mode 100644 index fb58cad52..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_string.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - empty_string Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty String

- -

Prefer checking isEmpty over comparing string to an empty string literal

- -
    -
  • Identifier: empty_string
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
myString.isEmpty
-
-
!myString.isEmpty
-
-
"""
-foo==
-"""
-
-

Triggering Examples

-
myString↓ == ""
-
-
myString↓ != ""
-
-
myString↓==""
-
-
myString↓ == #""#
-
-
myString↓ == ##""##
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_xctest_method.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_xctest_method.html deleted file mode 100644 index 857d821e2..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/empty_xctest_method.html +++ /dev/null @@ -1,559 +0,0 @@ - - - - empty_xctest_method Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty XCTest Method

- -

Empty XCTest method should be avoided

- -
    -
  • Identifier: empty_xctest_method
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
class TotoTests: XCTestCase {
-    var foobar: Foobar?
-
-    override func setUp() {
-        super.setUp()
-        foobar = Foobar()
-    }
-
-    override func setUpWithError() throws {
-        foobar = nil
-    }
-
-    override func tearDown() {
-        foobar = nil
-        super.tearDown()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(foobar?.foo)
-    }
-
-    func testBar() {
-        // comment...
-
-        XCTAssertFalse(foobar?.bar)
-
-        // comment...
-    }
-
-    func testBaz() {
-        _ = 4 + 4
-    }
-}
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-
class TotoTests: XCTestCase {
-    func setUp(with object: Foobar) {}
-
-    func tearDown(object: Foobar) {}
-
-    func testFoo(_ foo: Foobar) {}
-
-    func testBar(bar: (String) -> Int) {}
-}
-
-
class TotoTests: XCTestCase {
-    func testFoo() { XCTAssertTrue(foobar?.foo) }
-
-    func testBar() { XCTAssertFalse(foobar?.bar) }
-}
-
-
class TotoTests: XCTestCase {
-    override class var runsForEachTargetApplicationUIConfiguration: Bool { true }
-
-    static var allTests = [("testFoo", testFoo)]
-
-    func testFoo() { XCTAssert(true) }
-}
-
-

Triggering Examples

-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-    }
-
-    override ↓func tearDown() {
-
-    }
-
-    ↓func testFoo() {
-
-
-    }
-
-    ↓func testBar() {
-
-
-
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {}
-
-    override ↓func tearDown() {}
-
-    ↓func testFoo() {}
-
-    func helperFunction() {}
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-        // comment...
-    }
-
-    override ↓func tearDown() {
-        // comment...
-        // comment...
-    }
-
-    ↓func testFoo() {
-        // comment...
-
-        // comment...
-
-        // comment...
-    }
-
-    ↓func testBar() {
-        /*
-         * comment...
-         *
-         * comment...
-         *
-         * comment...
-         */
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class FooTests: XCTestCase {
-    override ↓func setUp() {}
-}
-
-class BarTests: XCTestCase {
-    ↓func testFoo() {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/enum_case_associated_values_count.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/enum_case_associated_values_count.html deleted file mode 100644 index 736c8d536..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/enum_case_associated_values_count.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - enum_case_associated_values_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Enum Case Associated Values Count

- -

The number of associated values in an enum case should be low.

- -
    -
  • Identifier: enum_case_associated_values_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -5 -
    -error - -6 -
  • -
-

Non Triggering Examples

-
enum Employee {
-    case fullTime(name: String, retirement: Date, designation: String, contactNumber: Int)
-    case partTime(name: String, age: Int, contractEndDate: Date)
-}
-
-
enum Barcode {
-    case upc(Int, Int, Int, Int)
-}
-
-

Triggering Examples

-
enum Employee {
-    case ↓fullTime(name: String, retirement: Date, age: Int, designation: String, contactNumber: Int)
-    case ↓partTime(name: String, contractEndDate: Date, age: Int, designation: String, contactNumber: Int)
-}
-
-
enum Barcode {
-    case ↓upc(Int, Int, Int, Int, Int, Int)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/expiring_todo.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/expiring_todo.html deleted file mode 100644 index 4328ae6c8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/expiring_todo.html +++ /dev/null @@ -1,510 +0,0 @@ - - - - expiring_todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Expiring Todo

- -

TODOs and FIXMEs should be resolved prior to their expiry date.

- -
    -
  • Identifier: expiring_todo
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -approaching_expiry_severity - -warning -
    -expired_severity - -error -
    -bad_formatting_severity - -error -
    -approaching_expiry_threshold - -15 -
    -date_delimiters - - - - - - - - - - - - - - - -
    KeyValue
    -opening - -“[” -
    -closing - -“]” -
    -
    -date_format - -“MM/dd/yyyy” -
    -date_separator - -“/” -
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
// notaFIXME:
-
-
// TODO: [12/31/9999]
-
-
// TODO(note)
-
-
// FIXME(note)
-
-
/* FIXME: */
-
-
/* TODO: */
-
-
/** FIXME: */
-
-
/** TODO: */
-
-

Triggering Examples

-
// TODO: [↓10/14/2019]
-
-
// FIXME: [↓10/14/2019]
-
-
// FIXME: [↓1/14/2019]
-
-
// FIXME: [↓10/14/2019]
-
-
// TODO: [↓9999/14/10]
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_acl.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_acl.html deleted file mode 100644 index 0d5a80126..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_acl.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - explicit_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit ACL

- -

All declarations should specify Access Control Level keywords explicitly

- -
    -
  • Identifier: explicit_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
public final class B {}
-
-
private struct C {}
-
-
internal enum A { internal enum B {} }
-
-
internal final class Foo {}
-
-
internal
-class Foo {
-  private let bar = 5
-}
-
-
internal func a() { let a =  }
-
-
private func a() { func innerFunction() { } }
-
-
private enum Foo { enum Bar { } }
-
-
private struct C { let d = 5 }
-
-
internal protocol A {
-  func b()
-}
-
-
internal protocol A {
-  var b: Int
-}
-
-
internal class A { deinit {} }
-
-
extension A: Equatable {}
-
-
extension A {}
-
-
extension Foo {
-    internal func bar() {}
-}
-
-
internal enum Foo {
-    case bar
-}
-
-
extension Foo {
-    public var isValid: Bool {
-        let result = true
-        return result
-    }
-}
-
-
extension Foo {
-    private var isValid: Bool {
-        get {
-            return true
-        }
-        set(newValue) {
-            print(newValue)
-        }
-    }
-}
-
-
private extension Foo {
-    var isValid: Bool { true }
-    struct S {
-        let b = 2
-    }
-}
-
-

Triggering Examples

-
↓enum A {}
-
-
final ↓class B {}
-
-
internal struct C { ↓let d = 5 }
-
-
public struct C { private(set) ↓var d = 5 }
-
-
internal struct C { static ↓let d = 5 }
-
-
public struct C { ↓let d = 5 }
-
-
public struct C { ↓init() }
-
-
static ↓func a() {}
-
-
internal let a = 0
-↓func b() {}
-
-
extension Foo {
-    ↓func bar() {}
-    static ↓func baz() {}
-}
-
-
public extension E {
-    let a = 1
-    struct S {
-        ↓let b = 2
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_enum_raw_value.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_enum_raw_value.html deleted file mode 100644 index 155d52175..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_enum_raw_value.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - explicit_enum_raw_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Enum Raw Value

- -

Enums should be explicitly assigned their raw values

- -
    -
  • Identifier: explicit_enum_raw_value
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Numbers {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String {
-  case one = "one"
-  case two = "two"
-}
-
-
protocol Algebra {}
-enum Numbers: Algebra {
-  case one
-}
-
-

Triggering Examples

-
enum Numbers: Int {
-  case one = 10, ↓two, three = 30
-}
-
-
enum Numbers: NSInteger {
-  case ↓one
-}
-
-
enum Numbers: String {
-  case ↓one
-  case ↓two
-}
-
-
enum Numbers: String {
-   case ↓one, two = "two"
-}
-
-
enum Numbers: Decimal {
-  case ↓one, ↓two
-}
-
-
enum Outer {
-    enum Numbers: Decimal {
-      case ↓one, ↓two
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_init.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_init.html deleted file mode 100644 index 9afdbe00a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_init.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Init

- -

Explicitly calling .init() should be avoided

- -
    -
  • Identifier: explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -include_bare_init - -false -
  • -
-

Non Triggering Examples

-
import Foundation
-class C: NSObject {
-    override init() {
-        super.init()
-    }
-}
-
-
struct S {
-    let n: Int
-}
-extension S {
-    init() {
-        self.init(n: 1)
-    }
-}
-
-
[1].flatMap(String.init)
-
-
[String.self].map { $0.init(1) }
-
-
[String.self].map { type in type.init(1) }
-
-
Observable.zip(obs1, obs2, resultSelector: MyType.init).asMaybe()
-
-
_ = GleanMetrics.Tabs.someType.init()
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: MyType.init
-).asMaybe()
-
-

Triggering Examples

-
[1].flatMap{String↓.init($0)}
-
-
[String.self].map { Type in Type↓.init(1) }
-
-
func foo() -> [String] {
-    return [1].flatMap { String↓.init($0) }
-}
-
-
_ = GleanMetrics.Tabs.GroupedTabExtra↓.init()
-
-
_ = Set<KsApi.Category>↓.init()
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: { MyType↓.init($0, $1) }
-).asMaybe()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_self.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_self.html deleted file mode 100644 index 4b1ffaa4d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_self.html +++ /dev/null @@ -1,483 +0,0 @@ - - - - explicit_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Self

- -

Instance variables and functions should be explicitly accessed with ‘self.’

- -
    -
  • Identifier: explicit_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        self.f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = self.p1
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        self.$p1
-        self._p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
-

Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        ↓f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = ↓p1
-    }
-}
-
-
struct A {
-    func f1(a b: Int) {}
-    func f2() {
-        ↓f1(a: 0)
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        ↓$p1
-        ↓_p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_top_level_acl.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_top_level_acl.html deleted file mode 100644 index a23b64b97..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_top_level_acl.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - explicit_top_level_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Top Level ACL

- -

Top-level declarations should specify Access Control Level keywords explicitly

- -
    -
  • Identifier: explicit_top_level_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
public final class B {}
-
-
private struct S1 {
-    struct S2 {}
-}
-
-
internal enum A { enum B {} }
-
-
internal final actor Foo {}
-
-
internal typealias Foo = Bar
-
-
internal func a() {}
-
-
extension A: Equatable {}
-
-
extension A {}
-
-

Triggering Examples

-
↓enum A {}
-
-
final ↓class B {}
-
-
↓protocol P {}
-
-
↓func a() {}
-
-
internal let a = 0
-↓func b() {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_type_interface.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_type_interface.html deleted file mode 100644 index db87042ae..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/explicit_type_interface.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - explicit_type_interface Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Type Interface

- -

Properties should have a type interface

- -
    -
  • Identifier: explicit_type_interface
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
    -allow_redundancy - -false -
  • -
-

Non Triggering Examples

-
class Foo {
-  var myVar: Int? = 0
-}
-
-
class Foo {
-  let myVar: Int? = 0, s: String = ""
-}
-
-
class Foo {
-  static var myVar: Int? = 0
-}
-
-
class Foo {
-  class var myVar: Int? = 0
-}
-
-

Triggering Examples

-
class Foo {
-  var ↓myVar = 0
-}
-
-
class Foo {
-  let ↓mylet = 0
-}
-
-
class Foo {
-  static var ↓myStaticVar = 0
-}
-
-
class Foo {
-  class var ↓myClassVar = 0
-}
-
-
class Foo {
-  let ↓myVar = Int(0), ↓s = ""
-}
-
-
class Foo {
-  let ↓myVar = Set<Int>(0)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/extension_access_modifier.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/extension_access_modifier.html deleted file mode 100644 index 063450f6c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/extension_access_modifier.html +++ /dev/null @@ -1,543 +0,0 @@ - - - - extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Extension Access Modifier

- -

Prefer to use extension access modifiers

- -
    -
  • Identifier: extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
extension Foo: SomeProtocol {
-  public var bar: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public func baz() {}
-}
-
-
extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
extension Foo {
-  var bar: Int { return 1 }
-  internal var baz: Int { return 1 }
-}
-
-
internal extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  var bar: Int { return 1 }
-  internal var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  private var baz: Int { return 1 }
-}
-
-
extension Foo {
-  open var bar: Int { return 1 }
-  open var baz: Int { return 1 }
-}
-
-
extension Foo {
-    func setup() {}
-    public func update() {}
-}
-
-
private extension Foo {
-  private var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
extension Foo {
-  internal private(set) var bar: Int {
-    get { Foo.shared.bar }
-    set { Foo.shared.bar = newValue }
-  }
-}
-
-
extension Foo {
-  private(set) internal var bar: Int {
-    get { Foo.shared.bar }
-    set { Foo.shared.bar = newValue }
-  }
-}
-
-
public extension Foo {
-  private(set) var value: Int { 1 }
-}
-
-

Triggering Examples

-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public var baz: Int { return 1 }
-}
-
-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public func baz() {}
-}
-
-
public extension Foo {
-  ↓public func bar() {}
-  ↓public func baz() {}
-}
-
-
↓extension Foo {
-   public var bar: Int {
-      let value = 1
-      return value
-   }
-
-   public var baz: Int { return 1 }
-}
-
-
↓extension Array where Element: Equatable {
-    public var unique: [Element] {
-        var uniqueValues = [Element]()
-        for item in self where !uniqueValues.contains(item) {
-            uniqueValues.append(item)
-        }
-        return uniqueValues
-    }
-}
-
-
↓extension Foo {
-   #if DEBUG
-   public var bar: Int {
-      let value = 1
-      return value
-   }
-   #endif
-
-   public var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  ↓private func bar() {}
-  ↓private func baz() {}
-}
-
-
↓extension Foo {
-  private(set) public var value: Int { 1 }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/fallthrough.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/fallthrough.html deleted file mode 100644 index 101754e76..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/fallthrough.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - fallthrough Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fallthrough

- -

Fallthrough should be avoided

- -
    -
  • Identifier: fallthrough
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar, .bar2, .bar3:
-  something()
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-  ↓fallthrough
-case .bar2:
-  something()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/fatal_error_message.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/fatal_error_message.html deleted file mode 100644 index 4773b7ba3..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/fatal_error_message.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - fatal_error_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fatal Error Message

- -

A fatalError call should have a message

- -
    -
  • Identifier: fatal_error_message
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo() {
-  fatalError("Foo")
-}
-
-
func foo() {
-  fatalError(x)
-}
-
-

Triggering Examples

-
func foo() {
-  ↓fatalError("")
-}
-
-
func foo() {
-  ↓fatalError()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_header.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_header.html deleted file mode 100644 index 6de3e6621..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_header.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - file_header Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Header

- -

Header comments should be consistent with project patterns. The SWIFTLINT_CURRENT_FILENAME placeholder can optionally be used in the required and forbidden patterns. It will be replaced by the real file name.

- -
    -
  • Identifier: file_header
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = "Copyright"
-
-
let foo = 2 // Copyright
-
-
let foo = 2
- // Copyright
-
-

Triggering Examples

-
// ↓Copyright
-
-
//
-// ↓Copyright
-
-
//
-//  FileHeaderRule.swift
-//  SwiftLint
-//
-//  Created by Marcelo Fabri on 27/11/16.
-//  ↓Copyright © 2016 Realm. All rights reserved.
-//
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_length.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_length.html deleted file mode 100644 index 36f8a939c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_length.html +++ /dev/null @@ -1,2039 +0,0 @@ - - - - file_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Length

- -

Files should not span too many lines.

- -
    -
  • Identifier: file_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -400 -
    -error - -1000 -
    -ignore_comment_only_lines - -false -
  • -
-

Non Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-

Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-//
-
-
-
print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name.html deleted file mode 100644 index 501940a6b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - file_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name

- -

File name should match a type or extension declared in the file (if any)

- -
    -
  • Identifier: file_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[“LinuxMain.swift”, “main.swift”] -
    -prefix_pattern - -“” -
    -suffix_pattern - -“+.*” -
    -nested_type_separator - -“.” -
  • -
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name_no_space.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name_no_space.html deleted file mode 100644 index dfc52aea1..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_name_no_space.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - file_name_no_space Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name no Space

- -

File name should not contain any whitespace

- -
    -
  • Identifier: file_name_no_space
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
  • -
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_types_order.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_types_order.html deleted file mode 100644 index 65c9097eb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/file_types_order.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - file_types_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Types Order

- -

Specifies how the types within a file should be ordered.

- -
    -
  • Identifier: file_types_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -order - -[[supporting_type], [main_type], [extension], [preview_provider], [library_content_provider]] -
  • -
-

Non Triggering Examples

-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Main Type
-class TestViewController: UIViewController {
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-
-    struct TestStruct {
-        // 3 lines
-    }
-
-    enum TestEnum {
-        // 5 lines
-    }
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-
-    // Stored Instance Properties
-    var shouldLayoutView1: Bool!
-    weak var delegate: TestViewControllerDelegate?
-    private var hasLayoutedView1: Bool = false
-    private var hasLayoutedView2: Bool = false
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-
-    // Initializers
-    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-
-    // Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-    }
-
-    override func viewDidLayoutSubviews() {
-        super.viewDidLayoutSubviews()
-    }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    @objc
-    func goToRandomVcButtonPressed() {
-        goToRandomVc()
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-
-    func goToInfoVc() { /* TODO */ }
-
-    func goToRandomVc() {
-        let viewCtrl = getRandomVc()
-        present(viewCtrl, animated: true)
-    }
-
-    private func getRandomVc() -> UIViewController { return UIViewController() }
-
-    // Subscripts
-    subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Only extensions
-extension Foo {}
-extension Bar {
-}
-
-
// Main Type
-struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
-// Preview Provider
-struct ContentView_Previews: PreviewProvider {
-    static var previews: some View { ContentView() }
-}
-
-// Library Content Provider
-struct ContentView_LibraryContent: LibraryContentProvider {
-    var views: [LibraryItem] {
-        LibraryItem(ContentView())
-    }
-}
-
-

Triggering Examples

-
↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Preview Provider
-↓struct ContentView_Previews: PreviewProvider {
-    static var previews: some View { ContentView() }
-}
-
-// Main Type
-struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
-
// Library Content Provider
-↓struct ContentView_LibraryContent: LibraryContentProvider {
-    var views: [LibraryItem] {
-        LibraryItem(ContentView())
-    }
-}
-
-// Main Type
-struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/final_test_case.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/final_test_case.html deleted file mode 100644 index 1ad099329..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/final_test_case.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - final_test_case Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Final Test Case

- -

Test cases should be final

- -
    -
  • Identifier: final_test_case
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
final class Test: XCTestCase {}
-
-
open class Test: XCTestCase {}
-
-
public final class Test: QuickSpec {}
-
-
class Test: MyTestCase {}
-
-
//
-// test_parent_classes: ["MyTestCase", "QuickSpec", "XCTestCase"]
-//
-
-struct Test: MyTestCase {}
-
-
-

Triggering Examples

-
class ↓Test: XCTestCase {}
-
-
public class ↓Test: QuickSpec {}
-
-
//
-// test_parent_classes: ["MyTestCase", "QuickSpec", "XCTestCase"]
-//
-
-class ↓Test: MyTestCase {}
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/first_where.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/first_where.html deleted file mode 100644 index 215c5e31e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/first_where.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - first_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

First Where

- -

Prefer using .first(where:) over .filter { }.first in collections

- -
    -
  • Identifier: first_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.first == .identifier
-
-
myList.first(where: { $0 % 2 == 0 })
-
-
match(pattern: pattern).filter { $0.first == .identifier }
-
-
(myList.filter { $0 == 1 }.suffix(2)).first
-
-
collection.filter("stringCol = '3'").first
-
-
realm?.objects(User.self).filter(NSPredicate(format: "email ==[c] %@", email)).first
-
-
if let pause = timeTracker.pauses.filter("beginDate < %@", beginDate).first { print(pause) }
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.first
-
-
↓myList.filter({ $0 % 2 == 0 }).first
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first?.something()
-
-
↓myList.filter(someFunction).first
-
-
↓myList.filter({ $0 % 2 == 0 })
-.first
-
-
(↓myList.filter { $0 == 1 }).first
-
-
↓myListOfDict.filter { dict in dict["1"] }.first
-
-
↓myListOfDict.filter { $0["someString"] }.first
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html deleted file mode 100644 index 421b07cce..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/flatmap_over_map_reduce.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - flatmap_over_map_reduce Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Flat Map over Map Reduce

- -

Prefer flatMap over map followed by reduce([], +)

- -
    -
  • Identifier: flatmap_over_map_reduce
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = bar.map { $0.count }.reduce(0, +)
-
-
let foo = bar.flatMap { $0.array }
-
-

Triggering Examples

-
let foo = ↓bar.map { $0.array }.reduce([], +)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/for_where.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/for_where.html deleted file mode 100644 index e7418dff6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/for_where.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - for_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer For-Where

- -

where clauses are preferred over a single if inside a for

- -
    -
  • Identifier: for_where
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allow_for_as_filter - -false -
  • -
-

Non Triggering Examples

-
for user in users where user.id == 1 { }
-
-
for user in users {
-  if let id = user.id { }
-}
-
-
for user in users {
-  if var id = user.id { }
-}
-
-
for user in users {
-  if user.id == 1 { } else { }
-}
-
-
for user in users {
-  if user.id == 1 {
-  } else if user.id == 2 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  print(user)
-}
-
-
for user in users {
-  let id = user.id
-  if id == 1 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  return true
-}
-
-
for user in users {
-  if user.id == 1 && user.age > 18 { }
-}
-
-
for user in users {
-  if user.id == 1, user.age > 18 { }
-}
-
-
for (index, value) in array.enumerated() {
-  if case .valueB(_) = value {
-    return index
-  }
-}
-
-
//
-// allow_for_as_filter: true
-//
-
-for user in users {
-  if user.id == 1 { return true }
-}
-
-
-
//
-// allow_for_as_filter: true
-//
-
-for user in users {
-  if user.id == 1 {
-    let derivedValue = calculateValue(from: user)
-    return derivedValue != 0
-  }
-}
-
-
-

Triggering Examples

-
for user in users {
-  ↓if user.id == 1 { return true }
-}
-
-
for subview in subviews {
-    ↓if !(subview is UIStackView) {
-        subview.removeConstraints(subview.constraints)
-        subview.removeFromSuperview()
-    }
-}
-
-
//
-// allow_for_as_filter: true
-//
-
-for subview in subviews {
-    ↓if !(subview is UIStackView) {
-        subview.removeConstraints(subview.constraints)
-        subview.removeFromSuperview()
-    }
-}
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_cast.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_cast.html deleted file mode 100644 index c97b40abc..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_cast.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - force_cast Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Cast

- -

Force casts should be avoided

- -
    -
  • Identifier: force_cast
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
NSNumber() as? Int
-
-

Triggering Examples

-
NSNumber() ↓as! Int
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_try.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_try.html deleted file mode 100644 index 8d28059cb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_try.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - force_try Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Try

- -

Force tries should be avoided

- -
    -
  • Identifier: force_try
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
func a() throws {}
-do {
-  try a()
-} catch {}
-
-

Triggering Examples

-
func a() throws {}
-↓try! a()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_unwrapping.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_unwrapping.html deleted file mode 100644 index 873ad986a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/force_unwrapping.html +++ /dev/null @@ -1,490 +0,0 @@ - - - - force_unwrapping Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Unwrapping

- -

Force unwrapping should be avoided

- -
    -
  • Identifier: force_unwrapping
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if let url = NSURL(string: query)
-
-
navigationController?.pushViewController(viewController, animated: true)
-
-
let s as! Test
-
-
try! canThrowErrors()
-
-
let object: Any!
-
-
@IBOutlet var constraints: [NSLayoutConstraint]!
-
-
setEditing(!editing, animated: true)
-
-
navigationController.setNavigationBarHidden(!navigationController.navigationBarHidden, animated: true)
-
-
if addedToPlaylist && (!self.selectedFilters.isEmpty || self.searchBar?.text?.isEmpty == false) {}
-
-
print("\(xVar)!")
-
-
var test = (!bar)
-
-
var a: [Int]!
-
-
private var myProperty: (Void -> Void)!
-
-
func foo(_ options: [AnyHashable: Any]!) {
-
-
func foo() -> [Int]!
-
-
func foo() -> [AnyHashable: Any]!
-
-
func foo() -> [Int]! { return [] }
-
-
return self
-
-

Triggering Examples

-
let url = NSURL(string: query)↓!
-
-
navigationController↓!.pushViewController(viewController, animated: true)
-
-
let unwrapped = optional↓!
-
-
return cell↓!
-
-
let url = NSURL(string: "http://www.google.com")↓!
-
-
let dict = ["Boooo": "👻"]
-func bla() -> String {
-    return dict["Boooo"]↓!
-}
-
-
let dict = ["Boooo": "👻"]
-func bla() -> String {
-    return dict["Boooo"]↓!.contains("B")
-}
-
-
let a = dict["abc"]↓!.contains("B")
-
-
dict["abc"]↓!.bar("B")
-
-
if dict["a"]↓!↓!↓!↓! {}
-
-
var foo: [Bool]! = dict["abc"]↓!
-
-
realm.objects(SwiftUTF8Object.self).filter("%K == %@", "柱нǢкƱаم👍", utf8TestString).first↓!
-
-
context("abc") {
-  var foo: [Bool]! = dict["abc"]↓!
-}
-
-
open var computed: String { return foo.bar↓! }
-
-
return self↓!
-
-
[1, 3, 5, 6].first { $0.isMultiple(of: 2) }↓!
-
-
map["a"]↓!↓!
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_body_length.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_body_length.html deleted file mode 100644 index d60b67493..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_body_length.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - function_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Body Length

- -

Function bodies should not span too many lines

- -
    -
  • Identifier: function_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -50 -
    -error - -100 -
  • -
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_default_parameter_at_end.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_default_parameter_at_end.html deleted file mode 100644 index b1356c286..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_default_parameter_at_end.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - function_default_parameter_at_end Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Default Parameter at End

- -

Prefer to locate parameters with defaults toward the end of the parameter list

- -
    -
  • Identifier: function_default_parameter_at_end
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_first_isolation_inheritance_parameter - -true -
  • -
-

Non Triggering Examples

-
func foo(baz: String, bar: Int = 0) {}
-
-
func foo(x: String, y: Int = 0, z: CGFloat = 0) {}
-
-
func foo(bar: String, baz: Int = 0, z: () -> Void) {}
-
-
func foo(bar: String, z: () -> Void, baz: Int = 0) {}
-
-
func foo(bar: Int = 0) {}
-
-
func foo() {}
-
-
class A: B {
-  override func foo(bar: Int = 0, baz: String) {}
-
-
func foo(bar: Int = 0, completion: @escaping CompletionHandler) {}
-
-
func foo(a: Int, b: CGFloat = 0) {
-  let block = { (error: Error?) in }
-}
-
-
func foo(a: String, b: String? = nil,
-         c: String? = nil, d: @escaping AlertActionHandler = { _ in }) {}
-
-
override init?(for date: Date = Date(), coordinate: CLLocationCoordinate2D) {}
-
-
func handleNotification(_ userInfo: NSDictionary,
-                        userInteraction: Bool = false,
-                        completionHandler: ((UIBackgroundFetchResult) -> Void)?) {}
-
-
func write(withoutNotifying tokens: [NotificationToken] =  {}, _ block: (() throws -> Int)) {}
-
-
func foo(bar: Int, baz: Int = 0, z: () -> Void) {}
-
-
func foo(bar: Int, baz: Int = 0, z: () -> Void, x: Int = 0) {}
-
-
func foo(isolation: isolated (any Actor)? = #isolation, bar: String) {}
-
-

Triggering Examples

-
func foo(↓bar: Int = 0, baz: String) {}
-
-
private func foo(↓bar: Int = 0, baz: String) {}
-
-
public init?(↓for date: Date = Date(), coordinate: CLLocationCoordinate2D) {}
-
-
func foo(bar: Int, ↓baz: Int = 0, z: () -> Void, x: Int) {}
-
-
//
-// ignore_first_isolation_inheritance_parameter: false
-//
-
-func foo(isolation: isolated (any Actor)? = #isolation, bar: String) {}
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_parameter_count.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_parameter_count.html deleted file mode 100644 index e70161685..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/function_parameter_count.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - function_parameter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Parameter Count

- -

Number of function parameters should be low.

- -
    -
  • Identifier: function_parameter_count
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -5 -
    -error - -8 -
    -ignores_default_parameters - -true -
  • -
-

Non Triggering Examples

-
init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
`init`(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T: String>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
func f2(p1: Int, p2: Int) { }
-
-
func f(a: Int, b: Int, c: Int, d: Int, x: Int = 42) {}
-
-
func f(a: [Int], b: Int, c: Int, d: Int, f: Int) -> [Int] {
-    let s = a.flatMap { $0 as? [String: Int] } ?? []}}
-
-
override func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-

Triggering Examples

-
↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
↓func initialValue(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
private ↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int = 2, g: Int) {}
-
-
struct Foo {
-    init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-    ↓func bar(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/generic_type_name.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/generic_type_name.html deleted file mode 100644 index 713e8f084..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/generic_type_name.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - generic_type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Generic Type Name

- -

Generic type name should only contain alphanumeric characters, start with an uppercase character and span between 1 and 20 characters in length.

- -
    -
  • Identifier: generic_type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -min_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -1 -
    -error - -0 -
    -
    -max_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -20 -
    -error - -1000 -
    -
    -excluded - -[] -
    -allowed_symbols - -[] -
    -unallowed_symbols_severity - -error -
    -validates_start_with_lowercase - -error -
  • -
-

Non Triggering Examples

-
func foo<T>() {}
-
-
func foo<T>() -> T {}
-
-
func foo<T, U>(param: U) -> T {}
-
-
func foo<T: Hashable, U: Rule>(param: U) -> T {}
-
-
struct Foo<T> {}
-
-
class Foo<T> {}
-
-
enum Foo<T> {}
-
-
func run(_ options: NoOptions<CommandantError<()>>) {}
-
-
func foo(_ options: Set<type>) {}
-
-
func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool
-
-
func configureWith(data: Either<MessageThread, (project: Project, backing: Backing)>)
-
-
typealias StringDictionary<T> = Dictionary<String, T>
-
-
typealias BackwardTriple<T1, T2, T3> = (T3, T2, T1)
-
-
typealias DictionaryOfStrings<T : Hashable> = Dictionary<T, String>
-
-

Triggering Examples

-
func foo<↓T_Foo>() {}
-
-
func foo<T, ↓U_Foo>(param: U_Foo) -> T {}
-
-
func foo<↓TTTTTTTTTTTTTTTTTTTTT>() {}
-
-
func foo<↓type>() {}
-
-
typealias StringDictionary<↓T_Foo> = Dictionary<String, T_Foo>
-
-
typealias BackwardTriple<T1, ↓T2_Bar, T3> = (T3, T2_Bar, T1)
-
-
typealias DictionaryOfStrings<↓T_Foo: Hashable> = Dictionary<T_Foo, String>
-
-
class Foo<↓T_Foo> {}
-
-
class Foo<T, ↓U_Foo> {}
-
-
class Foo<↓T_Foo, ↓U_Foo> {}
-
-
class Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
class Foo<↓type> {}
-
-
struct Foo<↓T_Foo> {}
-
-
struct Foo<T, ↓U_Foo> {}
-
-
struct Foo<↓T_Foo, ↓U_Foo> {}
-
-
struct Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
struct Foo<↓type> {}
-
-
enum Foo<↓T_Foo> {}
-
-
enum Foo<T, ↓U_Foo> {}
-
-
enum Foo<↓T_Foo, ↓U_Foo> {}
-
-
enum Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
enum Foo<↓type> {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/ibinspectable_in_extension.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/ibinspectable_in_extension.html deleted file mode 100644 index cbb7ef683..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/ibinspectable_in_extension.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - ibinspectable_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

IBInspectable in Extension

- -

Extensions shouldn’t add @IBInspectable properties

- -
    -
  • Identifier: ibinspectable_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-

Triggering Examples

-
extension Foo {
-  ↓@IBInspectable private var x: Int
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/identical_operands.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/identical_operands.html deleted file mode 100644 index ac49bc599..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/identical_operands.html +++ /dev/null @@ -1,898 +0,0 @@ - - - - identical_operands Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identical Operands

- -

Comparing two identical operands is likely a mistake

- -
    -
  • Identifier: identical_operands
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
1 == 2
-
-
foo == bar
-
-
prefixedFoo == foo
-
-
foo.aProperty == foo.anotherProperty
-
-
self.aProperty == self.anotherProperty
-
-
"1 == 1"
-
-
self.aProperty == aProperty
-
-
lhs.aProperty == rhs.aProperty
-
-
lhs.identifier == rhs.identifier
-
-
i == index
-
-
$0 == 0
-
-
keyValues?.count ?? 0 == 0
-
-
string == string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num == num?.byteSwapped
-
-
num == num!.byteSwapped
-
-
1    + 1 ==   1     +    2
-
-
f(  i :   2) ==   f (i: 3 )
-
-
1 != 2
-
-
foo != bar
-
-
prefixedFoo != foo
-
-
foo.aProperty != foo.anotherProperty
-
-
self.aProperty != self.anotherProperty
-
-
"1 != 1"
-
-
self.aProperty != aProperty
-
-
lhs.aProperty != rhs.aProperty
-
-
lhs.identifier != rhs.identifier
-
-
i != index
-
-
$0 != 0
-
-
keyValues?.count ?? 0 != 0
-
-
string != string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num != num?.byteSwapped
-
-
num != num!.byteSwapped
-
-
1    + 1 !=   1     +    2
-
-
f(  i :   2) !=   f (i: 3 )
-
-
1 === 2
-
-
foo === bar
-
-
prefixedFoo === foo
-
-
foo.aProperty === foo.anotherProperty
-
-
self.aProperty === self.anotherProperty
-
-
"1 === 1"
-
-
self.aProperty === aProperty
-
-
lhs.aProperty === rhs.aProperty
-
-
lhs.identifier === rhs.identifier
-
-
i === index
-
-
$0 === 0
-
-
keyValues?.count ?? 0 === 0
-
-
string === string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num === num?.byteSwapped
-
-
num === num!.byteSwapped
-
-
1    + 1 ===   1     +    2
-
-
f(  i :   2) ===   f (i: 3 )
-
-
1 !== 2
-
-
foo !== bar
-
-
prefixedFoo !== foo
-
-
foo.aProperty !== foo.anotherProperty
-
-
self.aProperty !== self.anotherProperty
-
-
"1 !== 1"
-
-
self.aProperty !== aProperty
-
-
lhs.aProperty !== rhs.aProperty
-
-
lhs.identifier !== rhs.identifier
-
-
i !== index
-
-
$0 !== 0
-
-
keyValues?.count ?? 0 !== 0
-
-
string !== string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num !== num?.byteSwapped
-
-
num !== num!.byteSwapped
-
-
1    + 1 !==   1     +    2
-
-
f(  i :   2) !==   f (i: 3 )
-
-
1 > 2
-
-
foo > bar
-
-
prefixedFoo > foo
-
-
foo.aProperty > foo.anotherProperty
-
-
self.aProperty > self.anotherProperty
-
-
"1 > 1"
-
-
self.aProperty > aProperty
-
-
lhs.aProperty > rhs.aProperty
-
-
lhs.identifier > rhs.identifier
-
-
i > index
-
-
$0 > 0
-
-
keyValues?.count ?? 0 > 0
-
-
string > string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num > num?.byteSwapped
-
-
num > num!.byteSwapped
-
-
1    + 1 >   1     +    2
-
-
f(  i :   2) >   f (i: 3 )
-
-
1 >= 2
-
-
foo >= bar
-
-
prefixedFoo >= foo
-
-
foo.aProperty >= foo.anotherProperty
-
-
self.aProperty >= self.anotherProperty
-
-
"1 >= 1"
-
-
self.aProperty >= aProperty
-
-
lhs.aProperty >= rhs.aProperty
-
-
lhs.identifier >= rhs.identifier
-
-
i >= index
-
-
$0 >= 0
-
-
keyValues?.count ?? 0 >= 0
-
-
string >= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num >= num?.byteSwapped
-
-
num >= num!.byteSwapped
-
-
1    + 1 >=   1     +    2
-
-
f(  i :   2) >=   f (i: 3 )
-
-
1 < 2
-
-
foo < bar
-
-
prefixedFoo < foo
-
-
foo.aProperty < foo.anotherProperty
-
-
self.aProperty < self.anotherProperty
-
-
"1 < 1"
-
-
self.aProperty < aProperty
-
-
lhs.aProperty < rhs.aProperty
-
-
lhs.identifier < rhs.identifier
-
-
i < index
-
-
$0 < 0
-
-
keyValues?.count ?? 0 < 0
-
-
string < string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num < num?.byteSwapped
-
-
num < num!.byteSwapped
-
-
1    + 1 <   1     +    2
-
-
f(  i :   2) <   f (i: 3 )
-
-
1 <= 2
-
-
foo <= bar
-
-
prefixedFoo <= foo
-
-
foo.aProperty <= foo.anotherProperty
-
-
self.aProperty <= self.anotherProperty
-
-
"1 <= 1"
-
-
self.aProperty <= aProperty
-
-
lhs.aProperty <= rhs.aProperty
-
-
lhs.identifier <= rhs.identifier
-
-
i <= index
-
-
$0 <= 0
-
-
keyValues?.count ?? 0 <= 0
-
-
string <= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num <= num?.byteSwapped
-
-
num <= num!.byteSwapped
-
-
1    + 1 <=   1     +    2
-
-
f(  i :   2) <=   f (i: 3 )
-
-
func evaluate(_ mode: CommandMode) -> Result<Options, CommandantError<CommandantError<()>>>
-
-
let array = Array<Array<Int>>()
-
-
guard Set(identifiers).count != identifiers.count else { return }
-
-
expect("foo") == "foo"
-
-
type(of: model).cachePrefix == cachePrefix
-
-
histogram[156].0 == 0x003B8D96 && histogram[156].1 == 1
-
-
[Wrapper(type: .three), Wrapper(type: .one)].sorted { "\($0.type)" > "\($1.type)"}
-
-
array.sorted { "\($0)" < "\($1)" }
-
-

Triggering Examples

-
↓1 == 1
-
-
↓foo == foo
-
-
↓foo.aProperty == foo.aProperty
-
-
↓self.aProperty == self.aProperty
-
-
↓$0 == $0
-
-
↓a?.b == a?.b
-
-
if (↓elem == elem) {}
-
-
XCTAssertTrue(↓s3 == s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView == tab.webView
-
-
↓1    + 1 ==   1     +    1
-
-
 ↓f(  i :   2) ==   f (i: 
- 2 )
-
-
↓1 != 1
-
-
↓foo != foo
-
-
↓foo.aProperty != foo.aProperty
-
-
↓self.aProperty != self.aProperty
-
-
↓$0 != $0
-
-
↓a?.b != a?.b
-
-
if (↓elem != elem) {}
-
-
XCTAssertTrue(↓s3 != s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView != tab.webView
-
-
↓1    + 1 !=   1     +    1
-
-
 ↓f(  i :   2) !=   f (i: 
- 2 )
-
-
↓1 === 1
-
-
↓foo === foo
-
-
↓foo.aProperty === foo.aProperty
-
-
↓self.aProperty === self.aProperty
-
-
↓$0 === $0
-
-
↓a?.b === a?.b
-
-
if (↓elem === elem) {}
-
-
XCTAssertTrue(↓s3 === s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView === tab.webView
-
-
↓1    + 1 ===   1     +    1
-
-
 ↓f(  i :   2) ===   f (i: 
- 2 )
-
-
↓1 !== 1
-
-
↓foo !== foo
-
-
↓foo.aProperty !== foo.aProperty
-
-
↓self.aProperty !== self.aProperty
-
-
↓$0 !== $0
-
-
↓a?.b !== a?.b
-
-
if (↓elem !== elem) {}
-
-
XCTAssertTrue(↓s3 !== s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView !== tab.webView
-
-
↓1    + 1 !==   1     +    1
-
-
 ↓f(  i :   2) !==   f (i: 
- 2 )
-
-
↓1 > 1
-
-
↓foo > foo
-
-
↓foo.aProperty > foo.aProperty
-
-
↓self.aProperty > self.aProperty
-
-
↓$0 > $0
-
-
↓a?.b > a?.b
-
-
if (↓elem > elem) {}
-
-
XCTAssertTrue(↓s3 > s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView > tab.webView
-
-
↓1    + 1 >   1     +    1
-
-
 ↓f(  i :   2) >   f (i: 
- 2 )
-
-
↓1 >= 1
-
-
↓foo >= foo
-
-
↓foo.aProperty >= foo.aProperty
-
-
↓self.aProperty >= self.aProperty
-
-
↓$0 >= $0
-
-
↓a?.b >= a?.b
-
-
if (↓elem >= elem) {}
-
-
XCTAssertTrue(↓s3 >= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView >= tab.webView
-
-
↓1    + 1 >=   1     +    1
-
-
 ↓f(  i :   2) >=   f (i: 
- 2 )
-
-
↓1 < 1
-
-
↓foo < foo
-
-
↓foo.aProperty < foo.aProperty
-
-
↓self.aProperty < self.aProperty
-
-
↓$0 < $0
-
-
↓a?.b < a?.b
-
-
if (↓elem < elem) {}
-
-
XCTAssertTrue(↓s3 < s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView < tab.webView
-
-
↓1    + 1 <   1     +    1
-
-
 ↓f(  i :   2) <   f (i: 
- 2 )
-
-
↓1 <= 1
-
-
↓foo <= foo
-
-
↓foo.aProperty <= foo.aProperty
-
-
↓self.aProperty <= self.aProperty
-
-
↓$0 <= $0
-
-
↓a?.b <= a?.b
-
-
if (↓elem <= elem) {}
-
-
XCTAssertTrue(↓s3 <= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView <= tab.webView
-
-
↓1    + 1 <=   1     +    1
-
-
 ↓f(  i :   2) <=   f (i: 
- 2 )
-
-
    return ↓lhs.foo == lhs.foo &&
-           lhs.bar == rhs.bar
-
-
    return lhs.foo == rhs.foo &&
-           ↓lhs.bar == lhs.bar
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/identifier_name.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/identifier_name.html deleted file mode 100644 index ded1921a9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/identifier_name.html +++ /dev/null @@ -1,622 +0,0 @@ - - - - identifier_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identifier Name

- -

Identifier names should only contain alphanumeric characters and start with a lowercase character or should only contain capital letters. In an exception to the above, variable names may start with a capital letter when they are declared as static. Variable names should not be too long or too short.

- -
    -
  • Identifier: identifier_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -min_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -3 -
    -error - -2 -
    -
    -max_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -40 -
    -error - -60 -
    -
    -excluded - -[“^id$”] -
    -allowed_symbols - -[] -
    -unallowed_symbols_severity - -error -
    -validates_start_with_lowercase - -error -
    -additional_operators - -[“!”, “%”, “&”, “*”, “+”, “-”, “.”, “/”, “<”, “=”, “>”, “?”, “^”, “|”, “~”] -
  • -
-

Non Triggering Examples

-
let myLet = 0
-
-
var myVar = 0
-
-
private let _myLet = 0
-
-
private func _myFunc() {}
-
-
fileprivate let _myLet = 0
-
-
fileprivate func _myFunc() {}
-
-
fileprivate func _myFunc() {}
-
-
class Abc { static let MyLet = 0 }
-
-
let URL: NSURL? = nil
-
-
let XMLString: String? = nil
-
-
override var i = 0
-
-
enum Foo { case myEnum }
-
-
func isOperator(name: String) -> Bool
-
-
func typeForKind(_ kind: SwiftDeclarationKind) -> String
-
-
func == (lhs: SyntaxToken, rhs: SyntaxToken) -> Bool
-
-
override func IsOperator(name: String) -> Bool
-
-
enum Foo { case `private` }
-
-
enum Foo { case value(String) }
-
-
f { $abc in }
-
-
class Foo {
-   static let Bar = 0
-}
-
-
class Foo {
-   static var Bar = 0
-}
-
-
//
-// additional_operators: ["!", "%", "&", "*", "+", "-", ".", "/", "<", "=", ">", "?", "^", "|", "~", "√"]
-//
-
-func √ (arg: Double) -> Double { arg }
-
-
-

Triggering Examples

-
class C { static let ↓_myLet = 0 }
-
-
class C { class let ↓MyLet = 0 }
-
-
class C { static func ↓MyFunc() {} }
-
-
class C { class func ↓MyFunc() {} }
-
-
private let ↓myLet_ = 0
-
-
let ↓myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
var ↓myExtremelyVeryVeryVeryVeryVeryVeryLongVar = 0
-
-
private let ↓_myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
let ↓i = 0
-
-
var ↓aa = 0
-
-
private let ↓_i = 0
-
-
if let ↓_x {}
-
-
guard var ↓x = x else {}
-
-
func myFunc(
-    _ ↓s: String,
-    i ↓j: Int,
-    _ goodName: Double,
-    name ↓n: String,
-    ↓x: Int,
-    abc: Double,
-    _: Double,
-    last _: Double
-) {}
-
-
let (↓a, abc) = (1, 1)
-
-
if let ↓i {}
-
-
for ↓i in [] {}
-
-
f { ↓x in }
-
-
f { ↓$x in }
-
-
f { (x abc: Int, _ ↓x: Int) in }
-
-
enum E {
-    case ↓c
-    case case1(Int)
-    case case2(↓a: Int)
-    case case3(_ ↓a: Int)
-}
-
-
class C {
-    var ↓x: Int {
-        get { 1 }
-        set(↓y) { x = y }
-    }
-}
-
-
func ↓√ (arg: Double) -> Double { arg }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/carat.png b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/carat.png deleted file mode 100755 index 29d2f7fd4955fca6bc6fb740e0373a2c358c398e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/dash.png b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/img/dash.png deleted file mode 100755 index 6f694c7a012b417908da3687a0a39aa182e91c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1338 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 diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_getter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_getter.html deleted file mode 100644 index 6dbc95c8f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_getter.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - implicit_getter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Getter

- -

Computed read-only properties and subscripts should avoid using the get keyword.

- -
    -
  • Identifier: implicit_getter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        get { _foo }
-        _modify { yield &_foo }
-    }
-}
-
-
class Foo {
-    var _foo: Int
-    var foo: Int {
-        @storageRestrictions(initializes: _foo)
-        init { _foo = newValue }
-        get { _foo }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-}
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Float {
-    var clamped: Float {
-        set {
-            self = min(1, max(0, newValue))
-        }
-        get {
-            min(1, max(0, self))
-        }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
class DatabaseEntity {
-    var isSynced: Bool {
-        get async {
-            await database.isEntitySynced(self)
-        }
-    }
-}
-
-
struct Test {
-    subscript(value: Int) -> Int {
-        get throws {
-            if value == 0 {
-                throw NSError()
-            } else {
-                return value
-            }
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓get{ return 20 }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓get { return 20 }
-}
-
-
class Foo {
-    @objc func bar() {}
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓get { _bar }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_return.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_return.html deleted file mode 100644 index d4e215afe..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicit_return.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - implicit_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Return

- -

Prefer implicit returns in closures, functions and getters

- -
    -
  • Identifier: implicit_return
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -included - -[closure, function, getter, initializer, subscript] -
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
foo.map({ $0 + 1 })
-
-
foo.map { value in value + 1 }
-
-
[1, 2].first(where: {
-    true
-})
-
-
func foo() -> Int {
-    0
-}
-
-
class Foo {
-    func foo() -> Int { 0 }
-}
-
-
func fetch() -> Data? {
-    do {
-        return try loadData()
-    } catch {
-        return nil
-    }
-}
-
-
func f() -> Int {
-    let i = 4
-    return i
-}
-
-
func f() -> Int {
-    return 3
-    let i = 2
-}
-
-
func f() -> Int {
-    return g()
-    func g() -> Int { 4 }
-}
-
-
var foo: Bool { true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        0
-    }
-}
-
-
class C {
-    let i: Int
-    init(i: Int) {
-        if i < 3 {
-            self.i = 1
-            return
-        }
-        self.i = 2
-    }
-}
-
-
class C {
-    init?() {
-        let i = 1
-        return nil
-    }
-}
-
-
class C {
-    subscript(i: Int) -> Int {
-        let res = i
-        return res
-    }
-}
-
-

Triggering Examples

-
foo.map { value in
-    ↓return value + 1
-}
-
-
foo.map {
-    ↓return $0 + 1
-}
-
-
foo.map({ ↓return $0 + 1})
-
-
[1, 2].first(where: {
-    ↓return true
-})
-
-
func foo() -> Int {
-    ↓return 0
-}
-
-
class Foo {
-    func foo() -> Int { ↓return 0 }
-}
-
-
func f() { ↓return }
-
-
var foo: Bool { ↓return true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            ↓return 0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        ↓return 0
-    }
-}
-
-
class C {
-    init() {
-        ↓return
-    }
-}
-
-
class C {
-    init?() {
-        ↓return nil
-    }
-}
-
-
class C {
-    subscript(i: Int) -> Int {
-        ↓return i
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html deleted file mode 100644 index 3654c40a1..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/implicitly_unwrapped_optional.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - implicitly_unwrapped_optional Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicitly Unwrapped Optional

- -

Implicitly unwrapped optionals should be avoided when possible

- -
    -
  • Identifier: implicitly_unwrapped_optional
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -mode - -all_except_iboutlets -
  • -
-

Non Triggering Examples

-
@IBOutlet private var label: UILabel!
-
-
@IBOutlet var label: UILabel!
-
-
@IBOutlet var label: [UILabel!]
-
-
if !boolean {}
-
-
let int: Int? = 42
-
-
let int: Int? = nil
-
-

Triggering Examples

-
let label: ↓UILabel!
-
-
let IBOutlet: ↓UILabel!
-
-
let labels: [↓UILabel!]
-
-
var ints: [↓Int!] = [42, nil, 42]
-
-
let label: ↓IBOutlet!
-
-
let int: ↓Int! = 42
-
-
let int: ↓Int! = nil
-
-
var int: ↓Int! = 42
-
-
let collection: AnyCollection<↓Int!>
-
-
func foo(int: ↓Int!) {}
-
-
class MyClass {
-    weak var bar: ↓SomeObject!
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/inclusive_language.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/inclusive_language.html deleted file mode 100644 index b72742d0f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/inclusive_language.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - inclusive_language Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inclusive Language

- -

Identifiers should use inclusive language that avoids discrimination against groups of people based on race, gender, or socioeconomic status.

- -
    -
  • Identifier: inclusive_language
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = "abc"
-
-
enum AllowList {
-    case foo, bar
-}
-
-
func updateAllowList(add: String) {}
-
-
enum WalletItemType {
-    case visa
-    case mastercard
-}
-
-
func chargeMasterCard(_ card: Card) {}
-
-

Triggering Examples

-
let ↓slave = "abc"
-
-
enum ↓BlackList {
-    case foo, bar
-}
-
-
func ↓updateWhiteList(add: String) {}
-
-
enum ListType {
-    case ↓whitelist
-    case ↓blacklist
-}
-
-
init(↓master: String, ↓slave: String) {}
-
-
final class FooBar {
-    func register<↓Master, ↓Slave>(one: Master, two: Slave) {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/indentation_width.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/indentation_width.html deleted file mode 100644 index 0d99de1bd..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/indentation_width.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - indentation_width Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Indentation Width

- -

Indent code using either one tab or the configured amount of spaces, unindent to match previous indentations. Don’t indent the first line.

- -
    -
  • Identifier: indentation_width
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -indentation_width - -4 -
    -include_comments - -true -
    -include_compiler_directives - -true -
    -include_multiline_strings - -true -
  • -
-

Non Triggering Examples

-
firstLine
-secondLine
-
-
firstLine
-    secondLine
-
-
firstLine
-    secondLine
-        thirdLine
-
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-    //test
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-fourthLine
-
-

Triggering Examples

-
↓    firstLine
-
-
firstLine
-        secondLine
-
-
firstLine
-    secondLine
-
-↓         fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-↓ fourthLine
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/index.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/index.html deleted file mode 100644 index bf9c73589..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/index.html +++ /dev/null @@ -1,1345 +0,0 @@ - - - - SwiftLintCore Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

SwiftLint

- -

A tool to enforce Swift style and conventions, loosely based on the now -archived GitHub Swift Style Guide. -SwiftLint enforces the style guide rules that are generally accepted by the -Swift community. These rules are well described in popular style guides like -Kodeco’s Swift Style Guide.

- -

SwiftLint hooks into Clang and -SourceKit to use the -AST representation -of your source files for more accurate results.

- -

Azure Build Status -Buildkite Build Status

- -

- -

This project adheres to the -Contributor Covenant Code of Conduct. -By participating, you are expected to uphold this code. Please report -unacceptable behavior to info@realm.io.

- -
-

Switch Language: -中文 -한국어

-
-

Video Introduction

- -

To get a high-level overview of SwiftLint, we encourage you to watch this -presentation recorded January 9th, 2017 by JP Simard (transcript provided):

- -

Presentation

-

Installation

-

Swift Package Manager

- -

SwiftLint can be used as a command plugin -or a build tool plugin.

- -

Add

-
.package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "<version>")
-
- -

to your Package.swift file to consume the latest release of SwiftLint -automatically or pin the dependency to a specific version:

-
.package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", exact: "<version>")
-
- -

Therein, replace <version> with the desired minimum or exact version.

- -
-

[!NOTE] -Consuming the plugins directly from the SwiftLint repository comes -with several drawbacks. To avoid them and reduce the overhead imposed, it’s -highly recommended to consume the plugins from the dedicated -SwiftLintPlugins repository, -even though plugins from the SwiftLint repository are also absolutely -functional. If the plugins from SwiftLint are preferred, just use the URL -https://github.com/realm/SwiftLint in the package declarations above.

- -

However, SwiftLintPlugins -facilitates plugin adoption massively. It lists some of the reasons that -drive the plugins as provided by SwiftLint itself very troublesome. Since -the plugin code and the releases are kept in sync, there is no difference -in functionality between the two, but you spare yourself a lot of time and -trouble using the dedicated plugins repository.

- -

This document assumes you’re relying on SwiftLintPlugins.

-
-

Xcode Package Dependency

- -

Use the following link to add SwiftLint as a Package Dependency to an Xcode -project:

-
https://github.com/SimplyDanny/SwiftLintPlugins
-
-

Homebrew

-
brew install swiftlint
-
-

CocoaPods

- -

Add the following to your Podfile:

-
pod 'SwiftLint'
-
- -

This will download the SwiftLint binaries and dependencies in Pods/ during -your next pod install execution and will allow you to invoke it via -${PODS_ROOT}/SwiftLint/swiftlint in your Script Build Phases.

- -

Installing via Cocoapods also enables pinning to a specific version of -SwiftLint rather than simply the latest (which is the case with -Homebrew).

- -

Note that this will add the SwiftLint binaries, its dependencies’ binaries, and -the Swift binary library distribution to the Pods/ directory, so checking in -this directory to SCM such as Git is discouraged.

-

Mint

-
mint install realm/SwiftLint
-
-

Bazel

- -

Put this in your MODULE.bazel:

-
bazel_dep(name = "swiftlint", version = "0.52.4", repo_name = "SwiftLint")
-
- -

Or put this in your WORKSPACE:

- -
- -WORKSPACE - -“`bzl -load(”@bazel_tools//tools/build_defs/repo:http.bzl", “http_archive”) - -http_archive( - name = “build_bazel_rules_apple”, - sha256 = “390841dd5f8a85fc25776684f4793d56e21b098dfd7243cd145b9831e6ef8be6”, - url = “https://github.com/bazelbuild/rules_apple/releases/download/2.4.1/rules_apple.2.4.1.tar.gz”, -) - -load( - “@build_bazel_rules_apple//apple:repositories.bzl”, - “apple_rules_dependencies”, -) - -apple_rules_dependencies() - -load( - “@build_bazel_rules_swift//swift:repositories.bzl”, - “swift_rules_dependencies”, -) - -swift_rules_dependencies() - -load( - “@build_bazel_rules_swift//swift:extras.bzl”, - “swift_rules_extra_dependencies”, -) - -swift_rules_extra_dependencies() - -http_archive( - name = “SwiftLint”, - sha256 = “c6ea58b9c72082cdc1ada4a2d48273ecc355896ed72204cedcc586b6ccb8aca6”, - url = “https://github.com/realm/SwiftLint/releases/download/0.52.4/bazel.tar.gz”, -) - -load(“@SwiftLint//bazel:repos.bzl”, “swiftlint_repos”) - -swiftlint_repos() - -load(“@SwiftLint//bazel:deps.bzl”, “swiftlint_deps”) - -swiftlint_deps() -“` - -
- -

Then you can run SwiftLint in the current directory with this command:

-
bazel run -c opt @SwiftLint//:swiftlint
-
-

Pre-Built Package

- -

Download SwiftLint.pkg from the -latest GitHub release and -run it.

-

From Source

- -

Make sure the build tool Bazel and a -recent Swift toolchain are -installed and all tools are discoverable in your PATH.

- -

To build SwiftLint, clone this repository and run make install.

-

Setup

- -
-

[!IMPORTANT] -While it may seem intuitive to run SwiftLint before compiling Swift source -files to exit a build early when there are lint violations, it is important -to understand that SwiftLint is designed to analyze valid source code that -is compilable. Non-compiling code can very easily lead to unexpected and -confusing results, especially when executing with --fix/--autocorrect -command line arguments.

-
-

Build Tool Plugins

- -

SwiftLint can be used as a build tool plugin for both -Swift Package projects -and Xcode projects.

- -

The build tool plugin determines the SwiftLint working directory by locating -the topmost config file within the package/project directory. If a config file -is not found therein, the package/project directory is used as the working -directory.

- -

The plugin throws an error when it is unable to resolve the SwiftLint working -directory. For example, this will occur in Xcode projects where the target’s -Swift files are not located within the project directory.

- -

To maximize compatibility with the plugin, avoid project structures that require -the use of the --config option.

-

Swift Package Projects

- -
-

[!NOTE] -Requires installing via Swift Package Manager.

-
- -

Build tool plugins run when building each target. When a project has multiple -targets, the plugin must be added to the desired targets individually.

- -

To do this, add the plugin to the target(s) to be linted as follows:

-
.target(
-    ...
-    plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
-),
-
-

Swift Package Command Plugin

- -
-

[!NOTE] -Requires installing via Swift Package Manager.

-
- -

The command plugin enables running SwiftLint from the command line as follows:

-
swift package plugin swiftlint
-
-

Xcode Projects

- -
-

[!NOTE] -Requires installing via Xcode Package Dependency.

-
- -

Build tool plugins run as a build phase of each target. When a project has -multiple targets, the plugin must be added to the desired targets individually.

- -

To do this, add the SwiftLintBuildToolPlugin to the Run Build Tool Plug-ins -phase of the Build Phases for the target(s) to be linted.

- -
-

[!TIP] -When using the plugin for the first time, be sure to trust and enable -it when prompted. If a macros build warning exists, select it to trust -and enable the macros as well.

-
- -

For unattended use (e.g. on CI), package plugin and macro -validations can be disabled with either of the following:

- -
    -
  • Using xcodebuild options:
  • -
-
  -skipPackagePluginValidation
-  -skipMacroValidation
-
- -
    -
  • Setting Xcode defaults:
  • -
-
  defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES
-  defaults write com.apple.dt.Xcode IDESkipMacroFingerprintValidation -bool YES
-
- -
-

[!IMPORTANT] -The unattended use options bypass Xcode’s validation dialogs -and implicitly trust all plugins and macros, which has security implications.

-
-

Unexpected Xcode Project Structures

- -

Project structures where SwiftLint’s configuration file is located -outside of the package/project directory are not directly supported -by the build tool plugin. This is because it isn’t possible to pass -arguments to build tool plugins (e.g., passing the config file path).

- -

If your project structure doesn’t work directly with the build tool -plugin, please consider one of the following options:

- -
    -
  • To use a config file located outside the package/project directory, a config -file may be added to that directory specifying a parent config path to the -other config file, e.g., parent_config: path/to/.swiftlint.yml.
  • -
  • You can also consider the use of a -Run Script Build Phase in place of the build -tool plugin.
  • -
-

Xcode Run Script Build Phase

- -
-

[!NOTE] -Based upon the installation method used, the shell command syntax in the -Run Script Build Phase may be different or additional configuration could -be required. Refer to the installation instructions for -more information.

-
- -

If the build tool plugin does not work for your project setup or when -additional custom setup is required, SwiftLint can be added as a Run Script -Build Phase. This is useful when a project setup relies on the --config -SwiftLint option; or to lint all targets together in a single swiftlint -invocation. File inclusions and exclusions can be configured in the -.swiftlint.yml configuration.

- -

To do this, add a custom script to a Run Script phase of the Build Phases -of the primary app target, after the Compile Sources phase. Use the -following script implementation:

-
if command -v swiftlint >/dev/null 2>&1
-then
-    swiftlint
-else
-    echo "warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions."
-fi
-
- -

If you’re using the SwiftLintPlugin in a Swift package, -you may refer to the swiftlint executable in the -following way:

-
SWIFT_PACKAGE_DIR="${BUILD_DIR%Build/*}SourcePackages/artifacts"
-SWIFTLINT_CMD=$(ls "$SWIFT_PACKAGE_DIR"/swiftlintplugins/SwiftLintBinary/SwiftLintBinary.artifactbundle/swiftlint-*/bin/swiftlint | head -n 1)
-
-if test -f "$SWIFTLINT_CMD" 2>&1
-then
-    "$SWIFTLINT_CMD"
-else
-    echo "warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions."
-fi
-
- -
-

[!NOTE] -The SWIFTLINT_CMD path uses the default Xcode configuration and has been -tested on Xcode 15/16. In case of another configuration (e.g. a custom -Swift package path), please adapt the values accordingly.

- -

[!TIP] -Uncheck Based on dependency analysis to run swiftlint on all incremental -builds, suppressing the unspecified outputs warning.

-
-

Consideration for Xcode 15.0

- -

Xcode 15 made a significant change by setting the default value of the -ENABLE_USER_SCRIPT_SANDBOXING build setting from NO to YES. -As a result, SwiftLint encounters an error related to missing file permissions, -which typically manifests as -error: Sandbox: swiftlint(19427) deny(1) file-read-data.

- -

To resolve this issue, it is necessary to manually set the -ENABLE_USER_SCRIPT_SANDBOXING setting to NO for the specific target that -SwiftLint is being configured for.

-

Consideration for Apple Silicon

- -

If you installed SwiftLint via Homebrew on Apple Silicon, you might experience -this warning:

-
warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint
-
- -

That is because Homebrew on Apple Silicon installs the binaries into the -/opt/homebrew/bin folder by default. To instruct Xcode where to find -SwiftLint, you can either add /opt/homebrew/bin to the PATH environment -variable in your build phase:

-
if [[ "$(uname -m)" == arm64 ]]
-then
-    export PATH="/opt/homebrew/bin:$PATH"
-fi
-
-if command -v swiftlint >/dev/null 2>&1
-then
-    swiftlint
-else
-    echo "warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions."
-fi
-
- -

or you can create a symbolic link in /usr/local/bin pointing to the actual -binary:

-
ln -s /opt/homebrew/bin/swiftlint /usr/local/bin/swiftlint
-
-

Additional Considerations

- -

If you wish to fix violations as well, your script could run -swiftlint --fix && swiftlint instead of just swiftlint. This will mean -that all correctable violations are fixed while ensuring warnings show up in -your project for remaining violations.

- -

If you’ve installed SwiftLint via CocoaPods the script should look like this:

-
"${PODS_ROOT}/SwiftLint/swiftlint"
-
-

Visual Studio Code

- -

To integrate SwiftLint with Visual Studio Code, install the -vscode-swiftlint -extension from the marketplace.

-

Fastlane

- -

You can use the official -swiftlint fastlane action -to run SwiftLint as part of your fastlane process.

-
swiftlint(
-    mode: :lint,                            # SwiftLint mode: :lint (default) or :autocorrect
-    executable: "Pods/SwiftLint/swiftlint", # The SwiftLint binary path (optional). Important if you've installed it via CocoaPods
-    path: "/path/to/lint",                  # Specify path to lint (optional)
-    output_file: "swiftlint.result.json",   # The path of the output file (optional)
-    reporter: "json",                       # The custom reporter to use (optional)
-    config_file: ".swiftlint-ci.yml",       # The path of the configuration file (optional)
-    files: [                                # List of files to process (optional)
-        "AppDelegate.swift",
-        "path/to/project/Model.swift"
-    ],
-    ignore_exit_status: true,               # Allow fastlane to continue even if SwiftLint returns a non-zero exit status (Default: false)
-    quiet: true,                            # Don't print status logs like 'Linting ' & 'Done linting' (Default: false)
-    strict: true                            # Fail on warnings? (Default: false)
-)
-
-

Docker

- -

SwiftLint is also available as a Docker image using -Ubuntu. So just the first time you need to pull the docker image using the -next command:

-
docker pull ghcr.io/realm/swiftlint:latest
-
- -

Then following times, you just run swiftlint inside of the docker like:

-
docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-
- -

This will execute swiftlint in the folder where you are right now (pwd), -showing an output like:

-
$ docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-Linting Swift files in current working directory
-Linting 'RuleDocumentation.swift' (1/490)
-...
-Linting 'YamlSwiftLintTests.swift' (490/490)
-Done linting! Found 0 violations, 0 serious in 490 files.
-
- -

Here you have more documentation about the usage of -Docker Images.

-

Command Line Usage

-
$ swiftlint help
-OVERVIEW: A tool to enforce Swift style and conventions.
-
-USAGE: swiftlint <subcommand>
-
-OPTIONS:
-  --version               Show the version.
-  -h, --help              Show help information.
-
-SUBCOMMANDS:
-  analyze                 Run analysis rules
-  docs                    Open SwiftLint documentation website in the default web browser
-  generate-docs           Generates markdown documentation for selected group of rules
-  lint (default)          Print lint warnings and errors
-  baseline                Operations on existing baselines
-  reporters               Display the list of reporters and their identifiers
-  rules                   Display the list of rules and their identifiers
-  version                 Display the current version of SwiftLint
-
-  See 'swiftlint help <subcommand>' for detailed help.
-
- -

Run swiftlint in the directory containing the Swift files to lint. Directories -will be searched recursively.

- -

To specify a list of files when using lint or analyze -(like the list of files modified by Xcode specified by the -ExtraBuildPhase Xcode -plugin, or modified files in the working tree based on git ls-files -m), you -can do so by passing the option --use-script-input-files and setting the -following instance variables: SCRIPT_INPUT_FILE_COUNT -and SCRIPT_INPUT_FILE_0, SCRIPT_INPUT_FILE_1, …, -SCRIPT_INPUT_FILE_{SCRIPT_INPUT_FILE_COUNT - 1}. -Similarly, files can be read from file lists by passing -the option --use-script-input-file-lists and setting the -following instance variables: SCRIPT_INPUT_FILE_LIST_COUNT -and SCRIPT_INPUT_FILE_LIST_0, SCRIPT_INPUT_FILE_LIST_1, …, -SCRIPT_INPUT_FILE_LIST_{SCRIPT_INPUT_FILE_LIST_COUNT - 1}.

- -

These are same environment variables set for input files to -custom Xcode script phases.

-

Working With Multiple Swift Versions

- -

SwiftLint hooks into SourceKit so it continues working even as Swift evolves!

- -

This also keeps SwiftLint lean, as it doesn’t need to ship with a full Swift -compiler, it just communicates with the official one you already have installed -on your machine.

- -

You should always run SwiftLint with the same toolchain you use to compile your -code.

- -

You may want to override SwiftLint’s default Swift toolchain if you have -multiple toolchains or Xcodes installed.

- -

Here’s the order in which SwiftLint determines which Swift toolchain to use:

- -
    -
  • $XCODE_DEFAULT_TOOLCHAIN_OVERRIDE
  • -
  • $TOOLCHAIN_DIR or $TOOLCHAINS
  • -
  • xcrun -find swift
  • -
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
- -

sourcekitd.framework is expected to be found in the usr/lib/ subdirectory of -the value passed in the paths above.

- -

You may also set the TOOLCHAINS environment variable to the reverse-DNS -notation that identifies a Swift toolchain version:

-
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 swiftlint --fix
-
- -

On Linux, SourceKit is expected to be located in -/usr/lib/libsourcekitdInProc.so or specified by the LINUX_SOURCEKIT_LIB_PATH -environment variable.

-

Git pre-commit Hook

- -

SwiftLint can be run as a pre-commit hook. -Once installed, add this to the -.pre-commit-config.yaml in the root of your repository:

-
repos:
-  - repo: https://github.com/realm/SwiftLint
-    rev: 0.50.3
-    hooks:
-      - id: swiftlint
-
- -

Adjust rev to the SwiftLint version of your choice. pre-commit autoupdate -can be used to update to the current version.

- -

SwiftLint can be configured using entry to apply fixes and fail on errors:

-
-   repo: https://github.com/realm/SwiftLint
-    rev: 0.50.3
-    hooks:
-    -   id: swiftlint
-        entry: swiftlint --fix --strict
-
-

Rules

- -

Over 200 rules are included in SwiftLint and the Swift community (that’s you!) -continues to contribute more over time. -Pull requests -are encouraged.

- -

You can find an updated list of rules and more information about them -here.

- -

You can also check the -Source/SwiftLintBuiltInRules/Rules -directory to see their implementation.

-

Opt-In Rules

- -

opt_in_rules are disabled by default (i.e., you have to explicitly enable them -in your configuration file).

- -

Guidelines on when to mark a rule as opt-in:

- -
    -
  • A rule that can have many false positives (e.g. empty_count)
  • -
  • A rule that is too slow
  • -
  • A rule that is not general consensus or is only useful in some cases -(e.g. force_unwrapping)
  • -
-

Disable rules in code

- -

Rules can be disabled with a comment inside a source file with the following -format:

- -

// swiftlint:disable <rule1> [<rule2> <rule3>...]

- -

The rules will be disabled until the end of the file or until the linter sees a -matching enable comment:

- -

// swiftlint:enable <rule1> [<rule2> <rule3>...]

- -

For example:

-
// swiftlint:disable colon
-let noWarning :String = "" // No warning about colons immediately after variable names!
-// swiftlint:enable colon
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-
- -

Including the all keyword will disable all rules until the linter sees a -matching enable comment:

- -

// swiftlint:disable all -// swiftlint:enable all

- -

For example:

-
// swiftlint:disable all
-let noWarning :String = "" // No warning about colons immediately after variable names!
-let i = "" // Also no warning about short identifier names
-// swiftlint:enable all
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-let y = "" // Warning generated about short identifier names
-
- -

It’s also possible to modify a disable or enable command by appending -:previous, :this or :next for only applying the command to the previous, -this (current) or next line respectively.

- -

For example:

-
// swiftlint:disable:next force_cast
-let noWarning = NSNumber() as! Int
-let hasWarning = NSNumber() as! Int
-let noWarning2 = NSNumber() as! Int // swiftlint:disable:this force_cast
-let noWarning3 = NSNumber() as! Int
-// swiftlint:disable:previous force_cast
-
- -

Run swiftlint rules to print a list of all available rules and their -identifiers.

-

Configuration

- -

Configure SwiftLint by adding a .swiftlint.yml file from the directory you’ll -run SwiftLint from. The following parameters can be configured:

- -

Rule inclusion:

- -
    -
  • disabled_rules: Disable rules from the default enabled set.
  • -
  • opt_in_rules: Enable rules that are not part of the default set. The -special all identifier will enable all opt in linter rules, except the ones -listed in disabled_rules.
  • -
  • only_rules: Only the rules specified in this list will be enabled. -Cannot be specified alongside disabled_rules or opt_in_rules.
  • -
  • analyzer_rules: This is an entirely separate list of rules that are only -run by the analyze command. All analyzer rules are opt-in, so this is the -only configurable rule list, there are no equivalents for disabled_rules -and only_rules. The special all identifier can also be used here to enable -all analyzer rules, except the ones listed in disabled_rules.
  • -
-
# By default, SwiftLint uses a set of sensible default rules you can adjust:
-disabled_rules: # rule identifiers turned on by default to exclude from running
-  - colon
-  - comma
-  - control_statement
-opt_in_rules: # some rules are turned off by default, so you need to opt-in
-  - empty_count # find all the available rules by running: `swiftlint rules`
-
-# Alternatively, specify all rules explicitly by uncommenting this option:
-# only_rules: # delete `disabled_rules` & `opt_in_rules` if using this
-#   - empty_parameters
-#   - vertical_whitespace
-
-analyzer_rules: # rules run by `swiftlint analyze`
-  - explicit_self
-
-# Case-sensitive paths to include during linting. Directory paths supplied on the
-# command line will be ignored.
-included: 
-  - Sources
-excluded: # case-sensitive paths to ignore during linting. Takes precedence over `included`
-  - Carthage
-  - Pods
-  - Sources/ExcludedFolder
-  - Sources/ExcludedFile.swift
-  - Sources/*/ExcludedFile.swift # exclude files with a wildcard
-
-# If true, SwiftLint will not fail if no lintable files are found.
-allow_zero_lintable_files: false
-
-# If true, SwiftLint will treat all warnings as errors.
-strict: false
-
-# If true, SwiftLint will treat all errors as warnings.
-lenient: false
-
-# The path to a baseline file, which will be used to filter out detected violations.
-baseline: Baseline.json
-
-# The path to save detected violations to as a new baseline.
-write_baseline: Baseline.json
-
-# If true, SwiftLint will check for updates after linting or analyzing.
-check_for_updates: true
-
-# configurable rules can be customized from this configuration file
-# binary rules can set their severity level
-force_cast: warning # implicitly
-force_try:
-  severity: warning # explicitly
-# rules that have both warning and error levels, can set just the warning level
-# implicitly
-line_length: 110
-# they can set both implicitly with an array
-type_body_length:
-  - 300 # warning
-  - 400 # error
-# or they can set both explicitly
-file_length:
-  warning: 500
-  error: 1200
-# naming rules can set warnings/errors for min_length and max_length
-# additionally they can set excluded names
-type_name:
-  min_length: 4 # only warning
-  max_length: # warning and error
-    warning: 40
-    error: 50
-  excluded: iPhone # excluded via string
-  allowed_symbols: ["_"] # these are allowed in type names
-identifier_name:
-  min_length: # only min_length
-    error: 4 # only error
-  excluded: # excluded via string array
-    - id
-    - URL
-    - GlobalAPIKey
-reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, codeclimate, junit, html, emoji, sonarqube, markdown, github-actions-logging, summary)
-
- -

You can also use environment variables in your configuration file, -by using ${SOME_VARIABLE} in a string.

-

Defining Custom Rules

- -

In addition to the rules that the main SwiftLint project ships with, SwiftLint -can also run two types of custom rules that you can define yourself in your own -projects:

-

1. Swift Custom Rules

- -

These rules are written the same way as the Swift-based rules that ship with -SwiftLint so they’re fast, accurate, can leverage SwiftSyntax, can be unit -tested, and more.

- -

Using these requires building SwiftLint with Bazel as described in -this video or its associated code in -github.com/jpsim/swiftlint-bazel-example.

-

2. Regex Custom Rules

- -

You can define custom regex-based rules in your configuration file using the -following syntax:

-
custom_rules:
-  pirates_beat_ninjas: # rule identifier
-    included:
-      - ".*\\.swift" # regex that defines paths to include during linting. optional.
-    excluded:
-      - ".*Test\\.swift" # regex that defines paths to exclude during linting. optional
-    name: "Pirates Beat Ninjas" # rule name. optional.
-    regex: "([nN]inja)" # matching pattern
-    capture_group: 0 # number of regex capture group to highlight the rule violation at. optional.
-    match_kinds: # SyntaxKinds to match. optional.
-      - comment
-      - identifier
-    message: "Pirates are better than ninjas." # violation message. optional.
-    severity: error # violation severity. optional.
-  no_hiding_in_strings:
-    regex: "([nN]inja)"
-    match_kinds: string
-
- -

This is what the output would look like:

- -

- -

It is important to note that the regular expression pattern is used with the -flags s and m enabled, that is . -matches newlines -and ^/$ -match the start and end of lines, -respectively. If you do not want to have . match newlines, for example, the -regex can be prepended by (?-s).

- -

You can filter the matches by providing one or more match_kinds, which will -reject matches that include syntax kinds that are not present in this list. Here -are all the possible syntax kinds:

- -
    -
  • argument
  • -
  • attribute.builtin
  • -
  • attribute.id
  • -
  • buildconfig.id
  • -
  • buildconfig.keyword
  • -
  • comment
  • -
  • comment.mark
  • -
  • comment.url
  • -
  • doccomment
  • -
  • doccomment.field
  • -
  • identifier
  • -
  • keyword
  • -
  • number
  • -
  • objectliteral
  • -
  • parameter
  • -
  • placeholder
  • -
  • string
  • -
  • string_interpolation_anchor
  • -
  • typeidentifier
  • -
- -

All syntax kinds used in a snippet of Swift code can be extracted asking -SourceKitten. For example, -sourcekitten syntax --text "struct S {}" delivers

- -
    -
  • source.lang.swift.syntaxtype.keyword for the struct keyword and
  • -
  • source.lang.swift.syntaxtype.identifier for its name S
  • -
- -

which match to keyword and identifier in the above list.

- -

If using custom rules in combination with only_rules, you must include the -literal string custom_rules in the only_rules list:

-
only_rules:
-  - custom_rules
-
-custom_rules:
-  no_hiding_in_strings:
-    regex: "([nN]inja)"
-    match_kinds: string
-
- -

Unlike Swift custom rules, you can use official SwiftLint builds -(e.g. from Homebrew) to run regex custom rules.

-

Auto-correct

- -

SwiftLint can automatically correct certain violations. Files on disk are -overwritten with a corrected version.

- -

Please make sure to have backups of these files before running -swiftlint --fix, otherwise important data may be lost.

- -

Standard linting is disabled while correcting because of the high likelihood of -violations (or their offsets) being incorrect after modifying a file while -applying corrections.

-

Analyze

- -

The swiftlint analyze command can lint Swift files using the -full type-checked AST. The compiler log path containing the clean swiftc build -command invocation (incremental builds will fail) must be passed to analyze -via the --compiler-log-path flag. -e.g. --compiler-log-path /path/to/xcodebuild.log

- -

This can be obtained by

- -
    -
  1. Cleaning DerivedData (incremental builds won’t work with analyze)
  2. -
  3. Running xcodebuild -workspace {WORKSPACE}.xcworkspace -scheme {SCHEME} > xcodebuild.log
  4. -
  5. Running swiftlint analyze --compiler-log-path xcodebuild.log
  6. -
- -

Analyzer rules tend to be considerably slower than lint rules.

-

Using Multiple Configuration Files

- -

SwiftLint offers a variety of ways to include multiple configuration files. -Multiple configuration files get merged into one single configuration that is -then applied just as a single configuration file would get applied.

- -

There are quite a lot of use cases where using multiple configuration files -could be helpful:

- -

For instance, one could use a team-wide shared SwiftLint configuration while -allowing overrides in each project via a child configuration file.

- -

Team-Wide Configuration:

-
disabled_rules:
-- force_cast
-
- -

Project-Specific Configuration:

-
opt_in_rules:
-- force_cast
-
-

Child/Parent Configs (Locally)

- -

You can specify a child_config and/or a parent_config reference within a -configuration file. These references should be local paths relative to the -folder of the configuration file they are specified in. This even works -recursively, as long as there are no cycles and no ambiguities.

- -

A child config is treated as a refinement and thus has a higher priority, -while a parent config is considered a base with lower priority in case of -conflicts.

- -

Here’s an example, assuming you have the following file structure:

-
ProjectRoot
-    |_ .swiftlint.yml
-    |_ .swiftlint_refinement.yml
-    |_ Base
-        |_ .swiftlint_base.yml
-
- -

To include both the refinement and the base file, your .swiftlint.yml should -look like this:

-
child_config: .swiftlint_refinement.yml
-parent_config: Base/.swiftlint_base.yml
-
- -

When merging parent and child configs, included and excluded configurations -are processed carefully to account for differences in the directory location -of the containing configuration files.

-

Child/Parent Configs (Remote)

- -

Just as you can provide local child_config/parent_config references, -instead of referencing local paths, you can just put urls that lead to -configuration files. In order for SwiftLint to detect these remote references, -they must start with http:// or https://.

- -

The referenced remote configuration files may even recursively reference other -remote configuration files, but aren’t allowed to include local references.

- -

Using a remote reference, your .swiftlint.yml could look like this:

-
parent_config: https://myteamserver.com/our-base-swiftlint-config.yml
-
- -

Every time you run SwiftLint and have an Internet connection, SwiftLint tries -to get a new version of every remote configuration that is referenced. If this -request times out, a cached version is used if available. If there is no cached -version available, SwiftLint fails – but no worries, a cached version should be -there once SwiftLint has run successfully at least once.

- -

If needed, the timeouts for the remote configuration fetching can be specified -manually via the configuration file(s) using the -remote_timeout/remote_timeout_if_cached specifiers. These values default -to 2 seconds or 1 second, respectively.

-

Command Line

- -

Instead of just providing one configuration file when running SwiftLint via the -command line, you can also pass a hierarchy, where the first configuration is -treated as a parent, while the last one is treated as the highest-priority -child.

- -

A simple example including just two configuration files looks like this:

- -

swiftlint --config .swiftlint.yml --config .swiftlint_child.yml

-

Nested Configurations

- -

In addition to a main configuration (the .swiftlint.yml file in the root -folder), you can put other configuration files named .swiftlint.yml into the -directory structure that then get merged as a child config, but only with an -effect for those files that are within the same directory as the config or in a -deeper directory where there isn’t another configuration file. In other words: -Nested configurations don’t work recursively – there’s a maximum number of one -nested configuration per file that may be applied in addition to the main -configuration.

- -

.swiftlint.yml files are only considered as a nested configuration if they -have not been used to build the main configuration already (e. g. by having -been referenced via something like child_config: Folder/.swiftlint.yml). -Also, parent_config/child_config specifications of nested configurations -are getting ignored because there’s no sense to that.

- -

If one (or more) SwiftLint file(s) are explicitly specified via the --config -parameter, that configuration will be treated as an override, no matter whether -there exist other .swiftlint.yml files somewhere within the directory. -So if you want to use nested configurations, you can’t use the --config -parameter.

-

License

- -

MIT licensed.

-

About

- -

- -

SwiftLint is maintained and funded by Realm Inc. The names and logos for -Realm are trademarks of Realm Inc.

- -

We :heart: open source software! -See our other open source projects, -read our blog, or say hi on twitter -(@realm).

- -

- -

Our thanks to MacStadium for providing a Mac Mini to run our performance -tests.

- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/inert_defer.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/inert_defer.html deleted file mode 100644 index da760b6b7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/inert_defer.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - inert_defer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inert Defer

- -

If defer is at the end of its parent scope, it will be executed right where it is anyway

- -
    -
  • Identifier: inert_defer
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func example3() {
-    defer { /* deferred code */ }
-
-    print("other code")
-}
-
-
func example4() {
-    if condition {
-        defer { /* deferred code */ }
-        print("other code")
-    }
-}
-
-

Triggering Examples

-
func example0() {
-    ↓defer { /* deferred code */ }
-}
-
-
func example1() {
-    ↓defer { /* deferred code */ }
-    // comment
-}
-
-
func example2() {
-    if condition {
-        ↓defer { /* deferred code */ }
-        // comment
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/invalid_swiftlint_command.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/invalid_swiftlint_command.html deleted file mode 100644 index 067788ad4..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/invalid_swiftlint_command.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - invalid_swiftlint_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Invalid SwiftLint Command

- -

swiftlint command is invalid

- -
    -
  • Identifier: invalid_swiftlint_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
// swiftlint:disable unused_import
-
-
// swiftlint:enable unused_import
-
-
// swiftlint:disable:next unused_import
-
-
// swiftlint:disable:previous unused_import
-
-
// swiftlint:disable:this unused_import
-
-
//swiftlint:disable:this unused_import
-
-

Triggering Examples

-
// ↓swiftlint:
-
-
// ↓swiftlint: 
-
-
// ↓swiftlint::
-
-
// ↓swiftlint:: 
-
-
// ↓swiftlint:disable
-
-
// ↓swiftlint:dissable unused_import
-
-
// ↓swiftlint:enaaaable unused_import
-
-
// ↓swiftlint:disable:nxt unused_import
-
-
// ↓swiftlint:enable:prevus unused_import
-
-
// ↓swiftlint:enable:ths unused_import
-
-
// ↓swiftlint:enable
-
-
// ↓swiftlint:enable:
-
-
// ↓swiftlint:enable: 
-
-
// ↓swiftlint:disable: unused_import
-
-
// s↓swiftlint:disable unused_import
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/is_disjoint.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/is_disjoint.html deleted file mode 100644 index 58fc9f08e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/is_disjoint.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - is_disjoint Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Is Disjoint

- -

Prefer using Set.isDisjoint(with:) over Set.intersection(_:).isEmpty

- -
    -
  • Identifier: is_disjoint
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
_ = Set(syntaxKinds).isDisjoint(with: commentAndStringKindsSet)
-
-
let isObjc = !objcAttributes.isDisjoint(with: dictionary.enclosedSwiftAttributes)
-
-
_ = Set(syntaxKinds).intersection(commentAndStringKindsSet)
-
-
_ = !objcAttributes.intersection(dictionary.enclosedSwiftAttributes)
-
-

Triggering Examples

-
_ = Set(syntaxKinds).↓intersection(commentAndStringKindsSet).isEmpty
-
-
let isObjc = !objcAttributes.↓intersection(dictionary.enclosedSwiftAttributes).isEmpty
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/joined_default_parameter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/joined_default_parameter.html deleted file mode 100644 index bed42a3f8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/joined_default_parameter.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - joined_default_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Joined Default Parameter

- -

Discouraged explicit usage of the default separator

- -
    -
  • Identifier: joined_default_parameter
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = bar.joined()
-
-
let foo = bar.joined(separator: ",")
-
-
let foo = bar.joined(separator: toto)
-
-

Triggering Examples

-
let foo = bar.joined(↓separator: "")
-
-
let foo = bar.filter(toto)
-             .joined(↓separator: ""),
-
-
func foo() -> String {
-  return ["1", "2"].joined(↓separator: "")
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.js b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.js deleted file mode 100755 index 198441660..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -window.jazzy = {'docset': false} -if (typeof window.dash != 'undefined') { - document.documentElement.className += ' dash' - window.jazzy.docset = true -} -if (navigator.userAgent.match(/xcode/i)) { - document.documentElement.className += ' xcode' - window.jazzy.docset = true -} - -function toggleItem($link, $content) { - var animationDuration = 300; - $link.toggleClass('token-open'); - $content.slideToggle(animationDuration); -} - -function itemLinkToContent($link) { - return $link.parent().parent().next(); -} - -// On doc load + hash-change, open any targetted item -function openCurrentItemIfClosed() { - if (window.jazzy.docset) { - return; - } - var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); - $content = itemLinkToContent($link); - if ($content.is(':hidden')) { - toggleItem($link, $content); - } -} - -$(openCurrentItemIfClosed); -$(window).on('hashchange', openCurrentItemIfClosed); - -// On item link ('token') click, toggle its discussion -$('.token').on('click', function(event) { - if (window.jazzy.docset) { - return; - } - var $link = $(this); - toggleItem($link, itemLinkToContent($link)); - - // Keeps the document from jumping to the hash. - var href = $link.attr('href'); - if (history.pushState) { - history.pushState({}, '', href); - } else { - location.hash = href; - } - event.preventDefault(); -}); - -// Clicks on links to the current, closed, item need to open the item -$("a:not('.token')").on('click', function() { - if (location == this.href) { - openCurrentItemIfClosed(); - } -}); - -// KaTeX rendering -if ("katex" in window) { - $($('.math').each( (_, element) => { - katex.render(element.textContent, element, { - displayMode: $(element).hasClass('m-block'), - throwOnError: false, - trust: true - }); - })) -} diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.search.js b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.search.js deleted file mode 100644 index 359cdbb8b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jazzy.search.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -$(function(){ - var $typeahead = $('[data-typeahead]'); - var $form = $typeahead.parents('form'); - var searchURL = $form.attr('action'); - - function displayTemplate(result) { - return result.name; - } - - function suggestionTemplate(result) { - var t = '
'; - t += '' + result.name + ''; - if (result.parent_name) { - t += '' + result.parent_name + ''; - } - t += '
'; - return t; - } - - $typeahead.one('focus', function() { - $form.addClass('loading'); - - $.getJSON(searchURL).then(function(searchData) { - const searchIndex = lunr(function() { - this.ref('url'); - this.field('name'); - this.field('abstract'); - for (const [url, doc] of Object.entries(searchData)) { - this.add({url: url, name: doc.name, abstract: doc.abstract}); - } - }); - - $typeahead.typeahead( - { - highlight: true, - minLength: 3, - autoselect: true - }, - { - limit: 10, - display: displayTemplate, - templates: { suggestion: suggestionTemplate }, - source: function(query, sync) { - const lcSearch = query.toLowerCase(); - const results = searchIndex.query(function(q) { - q.term(lcSearch, { boost: 100 }); - q.term(lcSearch, { - boost: 10, - wildcard: lunr.Query.wildcard.TRAILING - }); - }).map(function(result) { - var doc = searchData[result.ref]; - doc.url = result.ref; - return doc; - }); - sync(results); - } - } - ); - $form.removeClass('loading'); - $typeahead.trigger('focus'); - }); - }); - - var baseURL = searchURL.slice(0, -"search.json".length); - - $typeahead.on('typeahead:select', function(e, result) { - window.location = baseURL + result.url; - }); -}); diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jquery.min.js b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jquery.min.js deleted file mode 100644 index 7f37b5d99..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/typeahead.jquery.js deleted file mode 100644 index bcb734bef..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/js/typeahead.jquery.js +++ /dev/null @@ -1,1695 +0,0 @@ -/*! - * typeahead.js 1.3.3 - * https://github.com/corejavascript/typeahead.js - * Copyright 2013-2024 Twitter, Inc. and other contributors; Licensed MIT - */ - - -(function(root, factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery" ], function(a0) { - return factory(a0); - }); - } else if (typeof module === "object" && module.exports) { - module.exports = factory(require("jquery")); - } else { - factory(root["jQuery"]); - } -})(this, function($) { - var _ = function() { - "use strict"; - return { - isMsie: function() { - return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; - }, - isBlankString: function(str) { - return !str || /^\s*$/.test(str); - }, - escapeRegExChars: function(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - isString: function(obj) { - return typeof obj === "string"; - }, - isNumber: function(obj) { - return typeof obj === "number"; - }, - isArray: $.isArray, - isFunction: $.isFunction, - isObject: $.isPlainObject, - isUndefined: function(obj) { - return typeof obj === "undefined"; - }, - isElement: function(obj) { - return !!(obj && obj.nodeType === 1); - }, - isJQuery: function(obj) { - return obj instanceof $; - }, - toStr: function toStr(s) { - return _.isUndefined(s) || s === null ? "" : s + ""; - }, - bind: $.proxy, - each: function(collection, cb) { - $.each(collection, reverseArgs); - function reverseArgs(index, value) { - return cb(value, index); - } - }, - map: $.map, - filter: $.grep, - every: function(obj, test) { - var result = true; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (!(result = test.call(null, val, key, obj))) { - return false; - } - }); - return !!result; - }, - some: function(obj, test) { - var result = false; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (result = test.call(null, val, key, obj)) { - return false; - } - }); - return !!result; - }, - mixin: $.extend, - identity: function(x) { - return x; - }, - clone: function(obj) { - return $.extend(true, {}, obj); - }, - getIdGenerator: function() { - var counter = 0; - return function() { - return counter++; - }; - }, - templatify: function templatify(obj) { - return $.isFunction(obj) ? obj : template; - function template() { - return String(obj); - } - }, - defer: function(fn) { - setTimeout(fn, 0); - }, - debounce: function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments, later, callNow; - later = function() { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - } - }; - callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - } - return result; - }; - }, - throttle: function(func, wait) { - var context, args, timeout, result, previous, later; - previous = 0; - later = function() { - previous = new Date(); - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date(), remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }, - stringify: function(val) { - return _.isString(val) ? val : JSON.stringify(val); - }, - guid: function() { - function _p8(s) { - var p = (Math.random().toString(16) + "000000000").substr(2, 8); - return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; - } - return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); - }, - noop: function() {} - }; - }(); - var WWW = function() { - "use strict"; - var defaultClassNames = { - wrapper: "twitter-typeahead", - input: "tt-input", - hint: "tt-hint", - menu: "tt-menu", - dataset: "tt-dataset", - suggestion: "tt-suggestion", - selectable: "tt-selectable", - empty: "tt-empty", - open: "tt-open", - cursor: "tt-cursor", - highlight: "tt-highlight" - }; - return build; - function build(o) { - var www, classes; - classes = _.mixin({}, defaultClassNames, o); - www = { - css: buildCss(), - classes: classes, - html: buildHtml(classes), - selectors: buildSelectors(classes) - }; - return { - css: www.css, - html: www.html, - classes: www.classes, - selectors: www.selectors, - mixin: function(o) { - _.mixin(o, www); - } - }; - } - function buildHtml(c) { - return { - wrapper: '', - menu: '
' - }; - } - function buildSelectors(classes) { - var selectors = {}; - _.each(classes, function(v, k) { - selectors[k] = "." + v; - }); - return selectors; - } - function buildCss() { - var css = { - wrapper: { - position: "relative", - display: "inline-block" - }, - hint: { - position: "absolute", - top: "0", - left: "0", - borderColor: "transparent", - boxShadow: "none", - opacity: "1" - }, - input: { - position: "relative", - verticalAlign: "top", - backgroundColor: "transparent" - }, - inputWithNoHint: { - position: "relative", - verticalAlign: "top" - }, - menu: { - position: "absolute", - top: "100%", - left: "0", - zIndex: "100", - display: "none" - }, - ltr: { - left: "0", - right: "auto" - }, - rtl: { - left: "auto", - right: " 0" - } - }; - if (_.isMsie()) { - _.mixin(css.input, { - backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" - }); - } - return css; - } - }(); - var EventBus = function() { - "use strict"; - var namespace, deprecationMap; - namespace = "typeahead:"; - deprecationMap = { - render: "rendered", - cursorchange: "cursorchanged", - select: "selected", - autocomplete: "autocompleted" - }; - function EventBus(o) { - if (!o || !o.el) { - $.error("EventBus initialized without el"); - } - this.$el = $(o.el); - } - _.mixin(EventBus.prototype, { - _trigger: function(type, args) { - var $e = $.Event(namespace + type); - this.$el.trigger.call(this.$el, $e, args || []); - return $e; - }, - before: function(type) { - var args, $e; - args = [].slice.call(arguments, 1); - $e = this._trigger("before" + type, args); - return $e.isDefaultPrevented(); - }, - trigger: function(type) { - var deprecatedType; - this._trigger(type, [].slice.call(arguments, 1)); - if (deprecatedType = deprecationMap[type]) { - this._trigger(deprecatedType, [].slice.call(arguments, 1)); - } - } - }); - return EventBus; - }(); - var EventEmitter = function() { - "use strict"; - var splitter = /\s+/, nextTick = getNextTick(); - return { - onSync: onSync, - onAsync: onAsync, - off: off, - trigger: trigger - }; - function on(method, types, cb, context) { - var type; - if (!cb) { - return this; - } - types = types.split(splitter); - cb = context ? bindContext(cb, context) : cb; - this._callbacks = this._callbacks || {}; - while (type = types.shift()) { - this._callbacks[type] = this._callbacks[type] || { - sync: [], - async: [] - }; - this._callbacks[type][method].push(cb); - } - return this; - } - function onAsync(types, cb, context) { - return on.call(this, "async", types, cb, context); - } - function onSync(types, cb, context) { - return on.call(this, "sync", types, cb, context); - } - function off(types) { - var type; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - while (type = types.shift()) { - delete this._callbacks[type]; - } - return this; - } - function trigger(types) { - var type, callbacks, args, syncFlush, asyncFlush; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - args = [].slice.call(arguments, 1); - while ((type = types.shift()) && (callbacks = this._callbacks[type])) { - syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); - asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); - syncFlush() && nextTick(asyncFlush); - } - return this; - } - function getFlush(callbacks, context, args) { - return flush; - function flush() { - var cancelled; - for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { - cancelled = callbacks[i].apply(context, args) === false; - } - return !cancelled; - } - } - function getNextTick() { - var nextTickFn; - if (window.setImmediate) { - nextTickFn = function nextTickSetImmediate(fn) { - setImmediate(function() { - fn(); - }); - }; - } else { - nextTickFn = function nextTickSetTimeout(fn) { - setTimeout(function() { - fn(); - }, 0); - }; - } - return nextTickFn; - } - function bindContext(fn, context) { - return fn.bind ? fn.bind(context) : function() { - fn.apply(context, [].slice.call(arguments, 0)); - }; - } - }(); - var highlight = function(doc) { - "use strict"; - var defaults = { - node: null, - pattern: null, - tagName: "strong", - className: null, - wordsOnly: false, - caseSensitive: false, - diacriticInsensitive: false - }; - var accented = { - A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", - B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", - C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", - D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", - E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", - F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", - G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", - H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", - I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", - J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", - K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", - L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", - M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", - N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", - O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", - P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", - Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", - R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", - S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", - T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", - U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", - V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", - W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", - X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", - Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", - Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" - }; - return function hightlight(o) { - var regex; - o = _.mixin({}, defaults, o); - if (!o.node || !o.pattern) { - return; - } - o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; - regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); - traverse(o.node, hightlightTextNode); - function hightlightTextNode(textNode) { - var match, patternNode, wrapperNode; - if (match = regex.exec(textNode.data)) { - wrapperNode = doc.createElement(o.tagName); - o.className && (wrapperNode.className = o.className); - patternNode = textNode.splitText(match.index); - patternNode.splitText(match[0].length); - wrapperNode.appendChild(patternNode.cloneNode(true)); - textNode.parentNode.replaceChild(wrapperNode, patternNode); - } - return !!match; - } - function traverse(el, hightlightTextNode) { - var childNode, TEXT_NODE_TYPE = 3; - for (var i = 0; i < el.childNodes.length; i++) { - childNode = el.childNodes[i]; - if (childNode.nodeType === TEXT_NODE_TYPE) { - i += hightlightTextNode(childNode) ? 1 : 0; - } else { - traverse(childNode, hightlightTextNode); - } - } - } - }; - function accent_replacer(chr) { - return accented[chr.toUpperCase()] || chr; - } - function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { - var escapedPatterns = [], regexStr; - for (var i = 0, len = patterns.length; i < len; i++) { - var escapedWord = _.escapeRegExChars(patterns[i]); - if (diacriticInsensitive) { - escapedWord = escapedWord.replace(/\S/g, accent_replacer); - } - escapedPatterns.push(escapedWord); - } - regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; - return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); - } - }(window.document); - var Input = function() { - "use strict"; - var specialKeyCodeMap; - specialKeyCodeMap = { - 9: "tab", - 27: "esc", - 37: "left", - 39: "right", - 13: "enter", - 38: "up", - 40: "down" - }; - function Input(o, www) { - var id; - o = o || {}; - if (!o.input) { - $.error("input is missing"); - } - www.mixin(this); - this.$hint = $(o.hint); - this.$input = $(o.input); - this.$menu = $(o.menu); - id = this.$input.attr("id") || _.guid(); - this.$menu.attr("id", id + "_listbox"); - this.$hint.attr({ - "aria-hidden": true - }); - this.$input.attr({ - "aria-owns": id + "_listbox", - "aria-controls": id + "_listbox", - role: "combobox", - "aria-autocomplete": "list", - "aria-expanded": false - }); - this.query = this.$input.val(); - this.queryWhenFocused = this.hasFocus() ? this.query : null; - this.$overflowHelper = buildOverflowHelper(this.$input); - this._checkLanguageDirection(); - if (this.$hint.length === 0) { - this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; - } - this.onSync("cursorchange", this._updateDescendent); - } - Input.normalizeQuery = function(str) { - return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); - }; - _.mixin(Input.prototype, EventEmitter, { - _onBlur: function onBlur() { - this.resetInputValue(); - this.trigger("blurred"); - }, - _onFocus: function onFocus() { - this.queryWhenFocused = this.query; - this.trigger("focused"); - }, - _onKeydown: function onKeydown($e) { - var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; - this._managePreventDefault(keyName, $e); - if (keyName && this._shouldTrigger(keyName, $e)) { - this.trigger(keyName + "Keyed", $e); - } - }, - _onInput: function onInput() { - this._setQuery(this.getInputValue()); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - _managePreventDefault: function managePreventDefault(keyName, $e) { - var preventDefault; - switch (keyName) { - case "up": - case "down": - preventDefault = !withModifier($e); - break; - - default: - preventDefault = false; - } - preventDefault && $e.preventDefault(); - }, - _shouldTrigger: function shouldTrigger(keyName, $e) { - var trigger; - switch (keyName) { - case "tab": - trigger = !withModifier($e); - break; - - default: - trigger = true; - } - return trigger; - }, - _checkLanguageDirection: function checkLanguageDirection() { - var dir = (this.$input.css("direction") || "ltr").toLowerCase(); - if (this.dir !== dir) { - this.dir = dir; - this.$hint.attr("dir", dir); - this.trigger("langDirChanged", dir); - } - }, - _setQuery: function setQuery(val, silent) { - var areEquivalent, hasDifferentWhitespace; - areEquivalent = areQueriesEquivalent(val, this.query); - hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; - this.query = val; - if (!silent && !areEquivalent) { - this.trigger("queryChanged", this.query); - } else if (!silent && hasDifferentWhitespace) { - this.trigger("whitespaceChanged", this.query); - } - }, - _updateDescendent: function updateDescendent(event, id) { - this.$input.attr("aria-activedescendant", id); - }, - bind: function() { - var that = this, onBlur, onFocus, onKeydown, onInput; - onBlur = _.bind(this._onBlur, this); - onFocus = _.bind(this._onFocus, this); - onKeydown = _.bind(this._onKeydown, this); - onInput = _.bind(this._onInput, this); - this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); - if (!_.isMsie() || _.isMsie() > 9) { - this.$input.on("input.tt", onInput); - } else { - this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { - if (specialKeyCodeMap[$e.which || $e.keyCode]) { - return; - } - _.defer(_.bind(that._onInput, that, $e)); - }); - } - return this; - }, - focus: function focus() { - this.$input.focus(); - }, - blur: function blur() { - this.$input.blur(); - }, - getLangDir: function getLangDir() { - return this.dir; - }, - getQuery: function getQuery() { - return this.query || ""; - }, - setQuery: function setQuery(val, silent) { - this.setInputValue(val); - this._setQuery(val, silent); - }, - hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { - return this.query !== this.queryWhenFocused; - }, - getInputValue: function getInputValue() { - return this.$input.val(); - }, - setInputValue: function setInputValue(value) { - this.$input.val(value); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - resetInputValue: function resetInputValue() { - this.setInputValue(this.query); - }, - getHint: function getHint() { - return this.$hint.val(); - }, - setHint: function setHint(value) { - this.$hint.val(value); - }, - clearHint: function clearHint() { - this.setHint(""); - }, - clearHintIfInvalid: function clearHintIfInvalid() { - var val, hint, valIsPrefixOfHint, isValid; - val = this.getInputValue(); - hint = this.getHint(); - valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; - isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); - !isValid && this.clearHint(); - }, - hasFocus: function hasFocus() { - return this.$input.is(":focus"); - }, - hasOverflow: function hasOverflow() { - var constraint = this.$input.width() - 2; - this.$overflowHelper.text(this.getInputValue()); - return this.$overflowHelper.width() >= constraint; - }, - isCursorAtEnd: function() { - var valueLength, selectionStart, range; - valueLength = this.$input.val().length; - selectionStart = this.$input[0].selectionStart; - if (_.isNumber(selectionStart)) { - return selectionStart === valueLength; - } else if (document.selection) { - range = document.selection.createRange(); - range.moveStart("character", -valueLength); - return valueLength === range.text.length; - } - return true; - }, - destroy: function destroy() { - this.$hint.off(".tt"); - this.$input.off(".tt"); - this.$overflowHelper.remove(); - this.$hint = this.$input = this.$overflowHelper = $("
"); - }, - setAriaExpanded: function setAriaExpanded(value) { - this.$input.attr("aria-expanded", value); - } - }); - return Input; - function buildOverflowHelper($input) { - return $('').css({ - position: "absolute", - visibility: "hidden", - whiteSpace: "pre", - fontFamily: $input.css("font-family"), - fontSize: $input.css("font-size"), - fontStyle: $input.css("font-style"), - fontVariant: $input.css("font-variant"), - fontWeight: $input.css("font-weight"), - wordSpacing: $input.css("word-spacing"), - letterSpacing: $input.css("letter-spacing"), - textIndent: $input.css("text-indent"), - textRendering: $input.css("text-rendering"), - textTransform: $input.css("text-transform") - }).insertAfter($input); - } - function areQueriesEquivalent(a, b) { - return Input.normalizeQuery(a) === Input.normalizeQuery(b); - } - function withModifier($e) { - return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; - } - }(); - var Dataset = function() { - "use strict"; - var keys, nameGenerator; - keys = { - dataset: "tt-selectable-dataset", - val: "tt-selectable-display", - obj: "tt-selectable-object" - }; - nameGenerator = _.getIdGenerator(); - function Dataset(o, www) { - o = o || {}; - o.templates = o.templates || {}; - o.templates.notFound = o.templates.notFound || o.templates.empty; - if (!o.source) { - $.error("missing source"); - } - if (!o.node) { - $.error("missing node"); - } - if (o.name && !isValidName(o.name)) { - $.error("invalid dataset name: " + o.name); - } - www.mixin(this); - this.highlight = !!o.highlight; - this.name = _.toStr(o.name || nameGenerator()); - this.limit = o.limit || 5; - this.displayFn = getDisplayFn(o.display || o.displayKey); - this.templates = getTemplates(o.templates, this.displayFn); - this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; - this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; - this._resetLastSuggestion(); - this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); - } - Dataset.extractData = function extractData(el) { - var $el = $(el); - if ($el.data(keys.obj)) { - return { - dataset: $el.data(keys.dataset) || "", - val: $el.data(keys.val) || "", - obj: $el.data(keys.obj) || null - }; - } - return null; - }; - _.mixin(Dataset.prototype, EventEmitter, { - _overwrite: function overwrite(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (this.async && this.templates.pending) { - this._renderPending(query); - } else if (!this.async && this.templates.notFound) { - this._renderNotFound(query); - } else { - this._empty(); - } - this.trigger("rendered", suggestions, false, this.name); - }, - _append: function append(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length && this.$lastSuggestion.length) { - this._appendSuggestions(query, suggestions); - } else if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (!this.$lastSuggestion.length && this.templates.notFound) { - this._renderNotFound(query); - } - this.trigger("rendered", suggestions, true, this.name); - }, - _renderSuggestions: function renderSuggestions(query, suggestions) { - var $fragment; - $fragment = this._getSuggestionsFragment(query, suggestions); - this.$lastSuggestion = $fragment.children().last(); - this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); - }, - _appendSuggestions: function appendSuggestions(query, suggestions) { - var $fragment, $lastSuggestion; - $fragment = this._getSuggestionsFragment(query, suggestions); - $lastSuggestion = $fragment.children().last(); - this.$lastSuggestion.after($fragment); - this.$lastSuggestion = $lastSuggestion; - }, - _renderPending: function renderPending(query) { - var template = this.templates.pending; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _renderNotFound: function renderNotFound(query) { - var template = this.templates.notFound; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _empty: function empty() { - this.$el.empty(); - this._resetLastSuggestion(); - }, - _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { - var that = this, fragment; - fragment = document.createDocumentFragment(); - _.each(suggestions, function getSuggestionNode(suggestion) { - var $el, context; - context = that._injectQuery(query, suggestion); - $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); - fragment.appendChild($el[0]); - }); - this.highlight && highlight({ - className: this.classes.highlight, - node: fragment, - pattern: query - }); - return $(fragment); - }, - _getFooter: function getFooter(query, suggestions) { - return this.templates.footer ? this.templates.footer({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _getHeader: function getHeader(query, suggestions) { - return this.templates.header ? this.templates.header({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _resetLastSuggestion: function resetLastSuggestion() { - this.$lastSuggestion = $(); - }, - _injectQuery: function injectQuery(query, obj) { - return _.isObject(obj) ? _.mixin({ - _query: query - }, obj) : obj; - }, - update: function update(query) { - var that = this, canceled = false, syncCalled = false, rendered = 0; - this.cancel(); - this.cancel = function cancel() { - canceled = true; - that.cancel = $.noop; - that.async && that.trigger("asyncCanceled", query, that.name); - }; - this.source(query, sync, async); - !syncCalled && sync([]); - function sync(suggestions) { - if (syncCalled) { - return; - } - syncCalled = true; - suggestions = (suggestions || []).slice(0, that.limit); - rendered = suggestions.length; - that._overwrite(query, suggestions); - if (rendered < that.limit && that.async) { - that.trigger("asyncRequested", query, that.name); - } - } - function async(suggestions) { - suggestions = suggestions || []; - if (!canceled && rendered < that.limit) { - that.cancel = $.noop; - var idx = Math.abs(rendered - that.limit); - rendered += idx; - that._append(query, suggestions.slice(0, idx)); - that.async && that.trigger("asyncReceived", query, that.name); - } - } - }, - cancel: $.noop, - clear: function clear() { - this._empty(); - this.cancel(); - this.trigger("cleared"); - }, - isEmpty: function isEmpty() { - return this.$el.is(":empty"); - }, - destroy: function destroy() { - this.$el = $("
"); - } - }); - return Dataset; - function getDisplayFn(display) { - display = display || _.stringify; - return _.isFunction(display) ? display : displayFn; - function displayFn(obj) { - return obj[display]; - } - } - function getTemplates(templates, displayFn) { - return { - notFound: templates.notFound && _.templatify(templates.notFound), - pending: templates.pending && _.templatify(templates.pending), - header: templates.header && _.templatify(templates.header), - footer: templates.footer && _.templatify(templates.footer), - suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate - }; - function userSuggestionTemplate(context) { - var template = templates.suggestion; - return $(template(context)).attr("id", _.guid()); - } - function suggestionTemplate(context) { - return $('
').attr("id", _.guid()).text(displayFn(context)); - } - } - function isValidName(str) { - return /^[_a-zA-Z0-9-]+$/.test(str); - } - }(); - var Menu = function() { - "use strict"; - function Menu(o, www) { - var that = this; - o = o || {}; - if (!o.node) { - $.error("node is required"); - } - www.mixin(this); - this.$node = $(o.node); - this.query = null; - this.datasets = _.map(o.datasets, initializeDataset); - function initializeDataset(oDataset) { - var node = that.$node.find(oDataset.node).first(); - oDataset.node = node.length ? node : $("
").appendTo(that.$node); - return new Dataset(oDataset, www); - } - } - _.mixin(Menu.prototype, EventEmitter, { - _onSelectableClick: function onSelectableClick($e) { - this.trigger("selectableClicked", $($e.currentTarget)); - }, - _onRendered: function onRendered(type, dataset, suggestions, async) { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetRendered", dataset, suggestions, async); - }, - _onCleared: function onCleared() { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetCleared"); - }, - _propagate: function propagate() { - this.trigger.apply(this, arguments); - }, - _allDatasetsEmpty: function allDatasetsEmpty() { - return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { - var isEmpty = dataset.isEmpty(); - this.$node.attr("aria-expanded", !isEmpty); - return isEmpty; - }, this)); - }, - _getSelectables: function getSelectables() { - return this.$node.find(this.selectors.selectable); - }, - _removeCursor: function _removeCursor() { - var $selectable = this.getActiveSelectable(); - $selectable && $selectable.removeClass(this.classes.cursor); - }, - _ensureVisible: function ensureVisible($el) { - var elTop, elBottom, nodeScrollTop, nodeHeight; - elTop = $el.position().top; - elBottom = elTop + $el.outerHeight(true); - nodeScrollTop = this.$node.scrollTop(); - nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); - if (elTop < 0) { - this.$node.scrollTop(nodeScrollTop + elTop); - } else if (nodeHeight < elBottom) { - this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); - } - }, - bind: function() { - var that = this, onSelectableClick; - onSelectableClick = _.bind(this._onSelectableClick, this); - this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); - this.$node.on("mouseover", this.selectors.selectable, function() { - that.setCursor($(this)); - }); - this.$node.on("mouseleave", function() { - that._removeCursor(); - }); - _.each(this.datasets, function(dataset) { - dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); - }); - return this; - }, - isOpen: function isOpen() { - return this.$node.hasClass(this.classes.open); - }, - open: function open() { - this.$node.scrollTop(0); - this.$node.addClass(this.classes.open); - }, - close: function close() { - this.$node.attr("aria-expanded", false); - this.$node.removeClass(this.classes.open); - this._removeCursor(); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.attr("dir", dir); - }, - selectableRelativeToCursor: function selectableRelativeToCursor(delta) { - var $selectables, $oldCursor, oldIndex, newIndex; - $oldCursor = this.getActiveSelectable(); - $selectables = this._getSelectables(); - oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; - newIndex = oldIndex + delta; - newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; - newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; - return newIndex === -1 ? null : $selectables.eq(newIndex); - }, - setCursor: function setCursor($selectable) { - this._removeCursor(); - if ($selectable = $selectable && $selectable.first()) { - $selectable.addClass(this.classes.cursor); - this._ensureVisible($selectable); - } - }, - getSelectableData: function getSelectableData($el) { - return $el && $el.length ? Dataset.extractData($el) : null; - }, - getActiveSelectable: function getActiveSelectable() { - var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); - return $selectable.length ? $selectable : null; - }, - getTopSelectable: function getTopSelectable() { - var $selectable = this._getSelectables().first(); - return $selectable.length ? $selectable : null; - }, - update: function update(query) { - var isValidUpdate = query !== this.query; - if (isValidUpdate) { - this.query = query; - _.each(this.datasets, updateDataset); - } - return isValidUpdate; - function updateDataset(dataset) { - dataset.update(query); - } - }, - empty: function empty() { - _.each(this.datasets, clearDataset); - this.query = null; - this.$node.addClass(this.classes.empty); - function clearDataset(dataset) { - dataset.clear(); - } - }, - destroy: function destroy() { - this.$node.off(".tt"); - this.$node = $("
"); - _.each(this.datasets, destroyDataset); - function destroyDataset(dataset) { - dataset.destroy(); - } - } - }); - return Menu; - }(); - var Status = function() { - "use strict"; - function Status(options) { - this.$el = $("", { - role: "status", - "aria-live": "polite" - }).css({ - position: "absolute", - padding: "0", - border: "0", - height: "1px", - width: "1px", - "margin-bottom": "-1px", - "margin-right": "-1px", - overflow: "hidden", - clip: "rect(0 0 0 0)", - "white-space": "nowrap" - }); - options.$input.after(this.$el); - _.each(options.menu.datasets, _.bind(function(dataset) { - if (dataset.onSync) { - dataset.onSync("rendered", _.bind(this.update, this)); - dataset.onSync("cleared", _.bind(this.cleared, this)); - } - }, this)); - } - _.mixin(Status.prototype, { - update: function update(event, suggestions) { - var length = suggestions.length; - var words; - if (length === 1) { - words = { - result: "result", - is: "is" - }; - } else { - words = { - result: "results", - is: "are" - }; - } - this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); - }, - cleared: function() { - this.$el.text(""); - } - }); - return Status; - }(); - var DefaultMenu = function() { - "use strict"; - var s = Menu.prototype; - function DefaultMenu() { - Menu.apply(this, [].slice.call(arguments, 0)); - } - _.mixin(DefaultMenu.prototype, Menu.prototype, { - open: function open() { - !this._allDatasetsEmpty() && this._show(); - return s.open.apply(this, [].slice.call(arguments, 0)); - }, - close: function close() { - this._hide(); - return s.close.apply(this, [].slice.call(arguments, 0)); - }, - _onRendered: function onRendered() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onRendered.apply(this, [].slice.call(arguments, 0)); - }, - _onCleared: function onCleared() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onCleared.apply(this, [].slice.call(arguments, 0)); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); - return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); - }, - _hide: function hide() { - this.$node.hide(); - }, - _show: function show() { - this.$node.css("display", "block"); - } - }); - return DefaultMenu; - }(); - var Typeahead = function() { - "use strict"; - function Typeahead(o, www) { - var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; - o = o || {}; - if (!o.input) { - $.error("missing input"); - } - if (!o.menu) { - $.error("missing menu"); - } - if (!o.eventBus) { - $.error("missing event bus"); - } - www.mixin(this); - this.eventBus = o.eventBus; - this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; - this.input = o.input; - this.menu = o.menu; - this.enabled = true; - this.autoselect = !!o.autoselect; - this.active = false; - this.input.hasFocus() && this.activate(); - this.dir = this.input.getLangDir(); - this._hacks(); - this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); - onFocused = c(this, "activate", "open", "_onFocused"); - onBlurred = c(this, "deactivate", "_onBlurred"); - onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); - onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); - onEscKeyed = c(this, "isActive", "_onEscKeyed"); - onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); - onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); - onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); - onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); - onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); - onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); - this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); - } - _.mixin(Typeahead.prototype, { - _hacks: function hacks() { - var $input, $menu; - $input = this.input.$input || $("
"); - $menu = this.menu.$node || $("
"); - $input.on("blur.tt", function($e) { - var active, isActive, hasActive; - active = document.activeElement; - isActive = $menu.is(active); - hasActive = $menu.has(active).length > 0; - if (_.isMsie() && (isActive || hasActive)) { - $e.preventDefault(); - $e.stopImmediatePropagation(); - _.defer(function() { - $input.focus(); - }); - } - }); - $menu.on("mousedown.tt", function($e) { - $e.preventDefault(); - }); - }, - _onSelectableClicked: function onSelectableClicked(type, $el) { - this.select($el); - }, - _onDatasetCleared: function onDatasetCleared() { - this._updateHint(); - }, - _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { - this._updateHint(); - if (this.autoselect) { - var cursorClass = this.selectors.cursor.substr(1); - this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); - } - this.eventBus.trigger("render", suggestions, async, dataset); - }, - _onAsyncRequested: function onAsyncRequested(type, dataset, query) { - this.eventBus.trigger("asyncrequest", query, dataset); - }, - _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { - this.eventBus.trigger("asynccancel", query, dataset); - }, - _onAsyncReceived: function onAsyncReceived(type, dataset, query) { - this.eventBus.trigger("asyncreceive", query, dataset); - }, - _onFocused: function onFocused() { - this._minLengthMet() && this.menu.update(this.input.getQuery()); - }, - _onBlurred: function onBlurred() { - if (this.input.hasQueryChangedSinceLastFocus()) { - this.eventBus.trigger("change", this.input.getQuery()); - } - }, - _onEnterKeyed: function onEnterKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - if (this.select($selectable)) { - $e.preventDefault(); - $e.stopPropagation(); - } - } else if (this.autoselect) { - if (this.select(this.menu.getTopSelectable())) { - $e.preventDefault(); - $e.stopPropagation(); - } - } - }, - _onTabKeyed: function onTabKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - this.select($selectable) && $e.preventDefault(); - } else if (this.autoselect) { - if ($selectable = this.menu.getTopSelectable()) { - this.autocomplete($selectable) && $e.preventDefault(); - } - } - }, - _onEscKeyed: function onEscKeyed() { - this.close(); - }, - _onUpKeyed: function onUpKeyed() { - this.moveCursor(-1); - }, - _onDownKeyed: function onDownKeyed() { - this.moveCursor(+1); - }, - _onLeftKeyed: function onLeftKeyed() { - if (this.dir === "rtl" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onRightKeyed: function onRightKeyed() { - if (this.dir === "ltr" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onQueryChanged: function onQueryChanged(e, query) { - this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); - }, - _onWhitespaceChanged: function onWhitespaceChanged() { - this._updateHint(); - }, - _onLangDirChanged: function onLangDirChanged(e, dir) { - if (this.dir !== dir) { - this.dir = dir; - this.menu.setLanguageDirection(dir); - } - }, - _openIfActive: function openIfActive() { - this.isActive() && this.open(); - }, - _minLengthMet: function minLengthMet(query) { - query = _.isString(query) ? query : this.input.getQuery() || ""; - return query.length >= this.minLength; - }, - _updateHint: function updateHint() { - var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; - $selectable = this.menu.getTopSelectable(); - data = this.menu.getSelectableData($selectable); - val = this.input.getInputValue(); - if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { - query = Input.normalizeQuery(val); - escapedQuery = _.escapeRegExChars(query); - frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); - match = frontMatchRegEx.exec(data.val); - match && this.input.setHint(val + match[1]); - } else { - this.input.clearHint(); - } - }, - isEnabled: function isEnabled() { - return this.enabled; - }, - enable: function enable() { - this.enabled = true; - }, - disable: function disable() { - this.enabled = false; - }, - isActive: function isActive() { - return this.active; - }, - activate: function activate() { - if (this.isActive()) { - return true; - } else if (!this.isEnabled() || this.eventBus.before("active")) { - return false; - } else { - this.active = true; - this.eventBus.trigger("active"); - return true; - } - }, - deactivate: function deactivate() { - if (!this.isActive()) { - return true; - } else if (this.eventBus.before("idle")) { - return false; - } else { - this.active = false; - this.close(); - this.eventBus.trigger("idle"); - return true; - } - }, - isOpen: function isOpen() { - return this.menu.isOpen(); - }, - open: function open() { - if (!this.isOpen() && !this.eventBus.before("open")) { - this.input.setAriaExpanded(true); - this.menu.open(); - this._updateHint(); - this.eventBus.trigger("open"); - } - return this.isOpen(); - }, - close: function close() { - if (this.isOpen() && !this.eventBus.before("close")) { - this.input.setAriaExpanded(false); - this.menu.close(); - this.input.clearHint(); - this.input.resetInputValue(); - this.eventBus.trigger("close"); - } - return !this.isOpen(); - }, - setVal: function setVal(val) { - this.input.setQuery(_.toStr(val)); - }, - getVal: function getVal() { - return this.input.getQuery(); - }, - select: function select($selectable) { - var data = this.menu.getSelectableData($selectable); - if (data && !this.eventBus.before("select", data.obj, data.dataset)) { - this.input.setQuery(data.val, true); - this.eventBus.trigger("select", data.obj, data.dataset); - this.close(); - return true; - } - return false; - }, - autocomplete: function autocomplete($selectable) { - var query, data, isValid; - query = this.input.getQuery(); - data = this.menu.getSelectableData($selectable); - isValid = data && query !== data.val; - if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { - this.input.setQuery(data.val); - this.eventBus.trigger("autocomplete", data.obj, data.dataset); - return true; - } - return false; - }, - moveCursor: function moveCursor(delta) { - var query, $candidate, data, suggestion, datasetName, cancelMove, id; - query = this.input.getQuery(); - $candidate = this.menu.selectableRelativeToCursor(delta); - data = this.menu.getSelectableData($candidate); - suggestion = data ? data.obj : null; - datasetName = data ? data.dataset : null; - id = $candidate ? $candidate.attr("id") : null; - this.input.trigger("cursorchange", id); - cancelMove = this._minLengthMet() && this.menu.update(query); - if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { - this.menu.setCursor($candidate); - if (data) { - if (typeof data.val === "string") { - this.input.setInputValue(data.val); - } - } else { - this.input.resetInputValue(); - this._updateHint(); - } - this.eventBus.trigger("cursorchange", suggestion, datasetName); - return true; - } - return false; - }, - destroy: function destroy() { - this.input.destroy(); - this.menu.destroy(); - } - }); - return Typeahead; - function c(ctx) { - var methods = [].slice.call(arguments, 1); - return function() { - var args = [].slice.call(arguments); - _.each(methods, function(method) { - return ctx[method].apply(ctx, args); - }); - }; - } - }(); - (function() { - "use strict"; - var old, keys, methods; - old = $.fn.typeahead; - keys = { - www: "tt-www", - attrs: "tt-attrs", - typeahead: "tt-typeahead" - }; - methods = { - initialize: function initialize(o, datasets) { - var www; - datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); - o = o || {}; - www = WWW(o.classNames); - return this.each(attach); - function attach() { - var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; - _.each(datasets, function(d) { - d.highlight = !!o.highlight; - }); - $input = $(this); - $wrapper = $(www.html.wrapper); - $hint = $elOrNull(o.hint); - $menu = $elOrNull(o.menu); - defaultHint = o.hint !== false && !$hint; - defaultMenu = o.menu !== false && !$menu; - defaultHint && ($hint = buildHintFromInput($input, www)); - defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); - $hint && $hint.val(""); - $input = prepInput($input, www); - if (defaultHint || defaultMenu) { - $wrapper.css(www.css.wrapper); - $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); - $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); - } - MenuConstructor = defaultMenu ? DefaultMenu : Menu; - eventBus = new EventBus({ - el: $input - }); - input = new Input({ - hint: $hint, - input: $input, - menu: $menu - }, www); - menu = new MenuConstructor({ - node: $menu, - datasets: datasets - }, www); - status = new Status({ - $input: $input, - menu: menu - }); - typeahead = new Typeahead({ - input: input, - menu: menu, - eventBus: eventBus, - minLength: o.minLength, - autoselect: o.autoselect - }, www); - $input.data(keys.www, www); - $input.data(keys.typeahead, typeahead); - } - }, - isEnabled: function isEnabled() { - var enabled; - ttEach(this.first(), function(t) { - enabled = t.isEnabled(); - }); - return enabled; - }, - enable: function enable() { - ttEach(this, function(t) { - t.enable(); - }); - return this; - }, - disable: function disable() { - ttEach(this, function(t) { - t.disable(); - }); - return this; - }, - isActive: function isActive() { - var active; - ttEach(this.first(), function(t) { - active = t.isActive(); - }); - return active; - }, - activate: function activate() { - ttEach(this, function(t) { - t.activate(); - }); - return this; - }, - deactivate: function deactivate() { - ttEach(this, function(t) { - t.deactivate(); - }); - return this; - }, - isOpen: function isOpen() { - var open; - ttEach(this.first(), function(t) { - open = t.isOpen(); - }); - return open; - }, - open: function open() { - ttEach(this, function(t) { - t.open(); - }); - return this; - }, - close: function close() { - ttEach(this, function(t) { - t.close(); - }); - return this; - }, - select: function select(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.select($el); - }); - return success; - }, - autocomplete: function autocomplete(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.autocomplete($el); - }); - return success; - }, - moveCursor: function moveCursoe(delta) { - var success = false; - ttEach(this.first(), function(t) { - success = t.moveCursor(delta); - }); - return success; - }, - val: function val(newVal) { - var query; - if (!arguments.length) { - ttEach(this.first(), function(t) { - query = t.getVal(); - }); - return query; - } else { - ttEach(this, function(t) { - t.setVal(_.toStr(newVal)); - }); - return this; - } - }, - destroy: function destroy() { - ttEach(this, function(typeahead, $input) { - revert($input); - typeahead.destroy(); - }); - return this; - } - }; - $.fn.typeahead = function(method) { - if (methods[method]) { - return methods[method].apply(this, [].slice.call(arguments, 1)); - } else { - return methods.initialize.apply(this, arguments); - } - }; - $.fn.typeahead.noConflict = function noConflict() { - $.fn.typeahead = old; - return this; - }; - function ttEach($els, fn) { - $els.each(function() { - var $input = $(this), typeahead; - (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); - }); - } - function buildHintFromInput($input, www) { - return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ - readonly: true, - required: false - }).removeAttr("id name placeholder").removeClass("required").attr({ - spellcheck: "false", - tabindex: -1 - }); - } - function prepInput($input, www) { - $input.data(keys.attrs, { - dir: $input.attr("dir"), - autocomplete: $input.attr("autocomplete"), - spellcheck: $input.attr("spellcheck"), - style: $input.attr("style") - }); - $input.addClass(www.classes.input).attr({ - spellcheck: false - }); - try { - !$input.attr("dir") && $input.attr("dir", "auto"); - } catch (e) {} - return $input; - } - function getBackgroundStyles($el) { - return { - backgroundAttachment: $el.css("background-attachment"), - backgroundClip: $el.css("background-clip"), - backgroundColor: $el.css("background-color"), - backgroundImage: $el.css("background-image"), - backgroundOrigin: $el.css("background-origin"), - backgroundPosition: $el.css("background-position"), - backgroundRepeat: $el.css("background-repeat"), - backgroundSize: $el.css("background-size") - }; - } - function revert($input) { - var www, $wrapper; - www = $input.data(keys.www); - $wrapper = $input.parent().filter(www.selectors.wrapper); - _.each($input.data(keys.attrs), function(val, key) { - _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); - }); - $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); - if ($wrapper.length) { - $input.detach().insertAfter($wrapper); - $wrapper.remove(); - } - } - function $elOrNull(obj) { - var isValid, $el; - isValid = _.isJQuery(obj) || _.isElement(obj); - $el = isValid ? $(obj).first() : []; - return $el.length ? $el : null; - } - })(); -}); \ No newline at end of file diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/large_tuple.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/large_tuple.html deleted file mode 100644 index cb98e5244..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/large_tuple.html +++ /dev/null @@ -1,518 +0,0 @@ - - - - large_tuple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Large Tuple

- -

Tuples shouldn’t have too many members. Create a custom type instead.

- -
    -
  • Identifier: large_tuple
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -2 -
    -error - -3 -
  • -
-

Non Triggering Examples

-
let foo: (Int, Int)
-
-
let foo: (start: Int, end: Int)
-
-
let foo: (Int, (Int, String))
-
-
func foo() -> (Int, Int)
-
-
func foo() -> (Int, Int) {}
-
-
func foo(bar: String) -> (Int, Int)
-
-
func foo(bar: String) -> (Int, Int) {}
-
-
func foo() throws -> (Int, Int)
-
-
func foo() throws -> (Int, Int) {}
-
-
let foo: (Int, Int, Int) -> Void
-
-
let foo: (Int, Int, Int) throws -> Void
-
-
func foo(bar: (Int, String, Float) -> Void)
-
-
func foo(bar: (Int, String, Float) throws -> Void)
-
-
var completionHandler: ((_ data: Data?, _ resp: URLResponse?, _ e: NSError?) -> Void)!
-
-
func getDictionaryAndInt() -> (Dictionary<Int, String>, Int)?
-
-
func getGenericTypeAndInt() -> (Type<Int, String, Float>, Int)?
-
-
func foo() async -> (Int, Int)
-
-
func foo() async -> (Int, Int) {}
-
-
func foo(bar: String) async -> (Int, Int)
-
-
func foo(bar: String) async -> (Int, Int) {}
-
-
func foo() async throws -> (Int, Int)
-
-
func foo() async throws -> (Int, Int) {}
-
-
let foo: (Int, Int, Int) async -> Void
-
-
let foo: (Int, Int, Int) async throws -> Void
-
-
func foo(bar: (Int, String, Float) async -> Void)
-
-
func foo(bar: (Int, String, Float) async throws -> Void)
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, String>, Int)?
-
-
func getGenericTypeAndInt() async -> (Type<Int, String, Float>, Int)?
-
-

Triggering Examples

-
let foo: ↓(Int, Int, Int)
-
-
let foo: ↓(start: Int, end: Int, value: String)
-
-
let foo: (Int, ↓(Int, Int, Int))
-
-
func foo(bar: ↓(Int, Int, Int))
-
-
func foo() -> ↓(Int, Int, Int)
-
-
func foo() -> ↓(Int, Int, Int) {}
-
-
func foo(bar: String) -> ↓(Int, Int, Int)
-
-
func foo(bar: String) -> ↓(Int, Int, Int) {}
-
-
func foo() throws -> ↓(Int, Int, Int)
-
-
func foo() throws -> ↓(Int, Int, Int) {}
-
-
func foo() throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
func getDictionaryAndInt() -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
-
func foo(bar: ↓(Int, Int, Int)) async
-
-
func foo() async -> ↓(Int, Int, Int)
-
-
func foo() async -> ↓(Int, Int, Int) {}
-
-
func foo(bar: String) async -> ↓(Int, Int, Int)
-
-
func foo(bar: String) async -> ↓(Int, Int, Int) {}
-
-
func foo() async throws -> ↓(Int, Int, Int)
-
-
func foo() async throws -> ↓(Int, Int, Int) {}
-
-
func foo() async throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/last_where.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/last_where.html deleted file mode 100644 index 3ee40056d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/last_where.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - last_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Last Where

- -

Prefer using .last(where:) over .filter { }.last in collections

- -
    -
  • Identifier: last_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.last == .identifier
-
-
myList.last(where: { $0 % 2 == 0 })
-
-
match(pattern: pattern).filter { $0.last == .identifier }
-
-
(myList.filter { $0 == 1 }.suffix(2)).last
-
-
collection.filter("stringCol = '3'").last
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.last
-
-
↓myList.filter({ $0 % 2 == 0 }).last
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last?.something()
-
-
↓myList.filter(someFunction).last
-
-
↓myList.filter({ $0 % 2 == 0 })
-.last
-
-
(↓myList.filter { $0 == 1 }).last
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/leading_whitespace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/leading_whitespace.html deleted file mode 100644 index 2f48cade4..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/leading_whitespace.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - leading_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Leading Whitespace

- -

Files should not contain leading whitespace

- -
    -
  • Identifier: leading_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
//
-
-

Triggering Examples

-

-//
-
-
 //
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html deleted file mode 100644 index 27238a0c8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - legacy_cggeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy CGGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_cggeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isNull
-
-
rect.isEmpty
-
-
rect.isInfinite
-
-
rect.standardized
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersect(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓CGRectGetWidth(rect)
-
-
↓CGRectGetHeight(rect)
-
-
↓CGRectGetMinX(rect)
-
-
↓CGRectGetMidX(rect)
-
-
↓CGRectGetMaxX(rect)
-
-
↓CGRectGetMinY(rect)
-
-
↓CGRectGetMidY(rect)
-
-
↓CGRectGetMaxY(rect)
-
-
↓CGRectIsNull(rect)
-
-
↓CGRectIsEmpty(rect)
-
-
↓CGRectIsInfinite(rect)
-
-
↓CGRectStandardize(rect)
-
-
↓CGRectIntegral(rect)
-
-
↓CGRectInset(rect, 10, 5)
-
-
↓CGRectOffset(rect, -2, 8.3)
-
-
↓CGRectUnion(rect1, rect2)
-
-
↓CGRectIntersection(rect1, rect2)
-
-
↓CGRectContainsRect(rect1, rect2)
-
-
↓CGRectContainsPoint(rect, point)
-
-
↓CGRectIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constant.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constant.html deleted file mode 100644 index 1b526d62e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constant.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - legacy_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constant

- -

Struct-scoped constants are preferred over legacy global constants

- -
    -
  • Identifier: legacy_constant
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
CGRect.infinite
-
-
CGPoint.zero
-
-
CGRect.zero
-
-
CGSize.zero
-
-
NSPoint.zero
-
-
NSRect.zero
-
-
NSSize.zero
-
-
CGRect.null
-
-
CGFloat.pi
-
-
Float.pi
-
-

Triggering Examples

-
↓CGRectInfinite
-
-
↓CGPointZero
-
-
↓CGRectZero
-
-
↓CGSizeZero
-
-
↓NSZeroPoint
-
-
↓NSZeroRect
-
-
↓NSZeroSize
-
-
↓CGRectNull
-
-
↓CGFloat(M_PI)
-
-
↓Float(M_PI)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constructor.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constructor.html deleted file mode 100644 index 5ab87b324..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_constructor.html +++ /dev/null @@ -1,505 +0,0 @@ - - - - legacy_constructor Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constructor

- -

Swift constructors are preferred over legacy convenience functions

- -
    -
  • Identifier: legacy_constructor
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
CGPoint(x: 10, y: 10)
-
-
CGPoint(x: xValue, y: yValue)
-
-
CGSize(width: 10, height: 10)
-
-
CGSize(width: aWidth, height: aHeight)
-
-
CGRect(x: 0, y: 0, width: 10, height: 10)
-
-
CGRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
CGVector(dx: 10, dy: 10)
-
-
CGVector(dx: deltaX, dy: deltaY)
-
-
NSPoint(x: 10, y: 10)
-
-
NSPoint(x: xValue, y: yValue)
-
-
NSSize(width: 10, height: 10)
-
-
NSSize(width: aWidth, height: aHeight)
-
-
NSRect(x: 0, y: 0, width: 10, height: 10)
-
-
NSRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
NSRange(location: 10, length: 1)
-
-
NSRange(location: loc, length: len)
-
-
UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
UIEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
NSEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
NSEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
UIOffset(horizontal: 0, vertical: 10)
-
-
UIOffset(horizontal: horizontal, vertical: vertical)
-
-

Triggering Examples

-
↓CGPointMake(10, 10)
-
-
↓CGPointMake(xVal, yVal)
-
-
↓CGPointMake(calculateX(), 10)
-
-
↓CGSizeMake(10, 10)
-
-
↓CGSizeMake(aWidth, aHeight)
-
-
↓CGRectMake(0, 0, 10, 10)
-
-
↓CGRectMake(xVal, yVal, width, height)
-
-
↓CGVectorMake(10, 10)
-
-
↓CGVectorMake(deltaX, deltaY)
-
-
↓NSMakePoint(10, 10)
-
-
↓NSMakePoint(xVal, yVal)
-
-
↓NSMakeSize(10, 10)
-
-
↓NSMakeSize(aWidth, aHeight)
-
-
↓NSMakeRect(0, 0, 10, 10)
-
-
↓NSMakeRect(xVal, yVal, width, height)
-
-
↓NSMakeRange(10, 1)
-
-
↓NSMakeRange(loc, len)
-
-
↓UIEdgeInsetsMake(0, 0, 10, 10)
-
-
↓UIEdgeInsetsMake(top, left, bottom, right)
-
-
↓NSEdgeInsetsMake(0, 0, 10, 10)
-
-
↓NSEdgeInsetsMake(top, left, bottom, right)
-
-
↓CGVectorMake(10, 10)
-↓NSMakeRange(10, 1)
-
-
↓UIOffsetMake(0, 10)
-
-
↓UIOffsetMake(horizontal, vertical)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_hashing.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_hashing.html deleted file mode 100644 index 2b953e3da..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_hashing.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - legacy_hashing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Hashing

- -

Prefer using the hash(into:) function instead of overriding hashValue

- -
    -
  • Identifier: legacy_hashing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
class Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
var hashValue: Int { return 1 }
-class Foo: Hashable { 
- }
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    return bar
-  }
-}
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    get { return bar }
-    set { bar = newValue }
-  }
-}
-
-

Triggering Examples

-
struct Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
-
class Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_multiple.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_multiple.html deleted file mode 100644 index fd4b6eb78..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_multiple.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - legacy_multiple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Multiple

- -

Prefer using the isMultiple(of:) function instead of using the remainder operator (%)

- -
    -
  • Identifier: legacy_multiple
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row.isMultiple(of: 2) ? .gray : .white
-
-
guard count.isMultiple(of: 2) else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes.isMultiple(of: 4), "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0.isMultiple(of: 2) }) else { return }
-
-
let constant = 56
-let isMultiple = value.isMultiple(of: constant)
-
-
let constant = 56
-let secret = value % constant == 5
-
-
let secretValue = (value % 3) + 2
-
-

Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row ↓% 2 == 0 ? .gray : .white
-
-
cell.contentView.backgroundColor = 0 == indexPath.row ↓% 2 ? .gray : .white
-
-
cell.contentView.backgroundColor = indexPath.row ↓% 2 != 0 ? .gray : .white
-
-
guard count ↓% 2 == 0 else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes ↓% 4 == 0, "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0 ↓% 2 == 0 }) else { return }
-
-
let constant = 56
-let isMultiple = value ↓% constant == 0
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html deleted file mode 100644 index 1d72405f6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - legacy_nsgeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy NSGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_nsgeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isEmpty
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersection(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓NSWidth(rect)
-
-
↓NSHeight(rect)
-
-
↓NSMinX(rect)
-
-
↓NSMidX(rect)
-
-
↓NSMaxX(rect)
-
-
↓NSMinY(rect)
-
-
↓NSMidY(rect)
-
-
↓NSMaxY(rect)
-
-
↓NSEqualRects(rect1, rect2)
-
-
↓NSEqualSizes(size1, size2)
-
-
↓NSEqualPoints(point1, point2)
-
-
↓NSEdgeInsetsEqual(insets2, insets2)
-
-
↓NSIsEmptyRect(rect)
-
-
↓NSIntegralRect(rect)
-
-
↓NSInsetRect(rect, 10, 5)
-
-
↓NSOffsetRect(rect, -2, 8.3)
-
-
↓NSUnionRect(rect1, rect2)
-
-
↓NSIntersectionRect(rect1, rect2)
-
-
↓NSContainsRect(rect1, rect2)
-
-
↓NSPointInRect(rect, point)
-
-
↓NSIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_objc_type.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_objc_type.html deleted file mode 100644 index f5f730d64..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_objc_type.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - legacy_objc_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Objective-C Reference Type

- -

Prefer Swift value types to bridged Objective-C reference types

- -
    -
  • Identifier: legacy_objc_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var array = Array<Int>()
-
-
var calendar: Calendar? = nil
-
-
var formatter: NSDataDetector
-
-
var className: String = NSStringFromClass(MyClass.self)
-
-
_ = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
-
-
_ = Notification.Name("com.apple.Music.playerInfo")
-
-

Triggering Examples

-
var array = ↓NSArray()
-
-
var calendar: ↓NSCalendar? = nil
-
-
_ = ↓NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData
-
-
_ = ↓NSNotification.Name("com.apple.Music.playerInfo")
-
-
let keyValuePair: (Int) -> (↓NSString, ↓NSString) = {
-  let n = "\($0)" as ↓NSString; return (n, n)
-}
-dictionary = [↓NSString: ↓NSString](uniqueKeysWithValues:
-  (1...10_000).lazy.map(keyValuePair))
-
-
extension Foundation.Notification.Name {
-    static var reachabilityChanged: Foundation.↓NSNotification.Name {
-        return Foundation.Notification.Name("org.wordpress.reachability.changed")
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_random.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_random.html deleted file mode 100644 index d02eb476f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/legacy_random.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - legacy_random Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Random

- -

Prefer using type.random(in:) over legacy functions

- -
    -
  • Identifier: legacy_random
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
Int.random(in: 0..<10)
-
-
Double.random(in: 8.6...111.34)
-
-
Float.random(in: 0 ..< 1)
-
-

Triggering Examples

-
↓arc4random()
-
-
↓arc4random_uniform(83)
-
-
↓drand48()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/let_var_whitespace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/let_var_whitespace.html deleted file mode 100644 index 0a82dc0fe..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/let_var_whitespace.html +++ /dev/null @@ -1,587 +0,0 @@ - - - - let_var_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Variable Declaration Whitespace

- -

Variable declarations should be separated from other statements by a blank line

- -
    -
  • Identifier: let_var_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-let a = 0
-var x = 1
-
-var y = 2
-}
-
-
class C {
-let a = 5
-
-var x = 1
-}
-
-
class C {
-var a = 0
-}
-
-
class C {
-let a = 1 +
-    2
-let b = 5
-}
-
-
class C {
-var x: Int {
-    return 0
-}
-}
-
-
class C {
-var x: Int {
-    let a = 0
-
-    return a
-}
-}
-
-
class C {
-#if os(macOS)
-let a = 0
-
-func f() {}
-#endif
-}
-
-
class C {
-#warning("TODO: remove it")
-let a = 0
-#warning("TODO: remove it")
-let b = 0
-}
-
-
class C {
-#error("TODO: remove it")
-let a = 0
-}
-
-
class C {
-@available(swift 4)
-let a = 0
-}
-
-
class C {
-@objc
-var s: String = ""
-}
-
-
class C {
-@objc
-func a() {}
-}
-
-
class C {
-var x = 0
-lazy
-var y = 0
-}
-
-
class C {
-@available(OSX, introduced: 10.6)
-@available(*, deprecated)
-var x = 0
-}
-
-
class C {
-// swiftlint:disable superfluous_disable_command
-// swiftlint:disable force_cast
-
-let x = bar as! Bar
-}
-
-
class C {
-@available(swift 4)
-@UserDefault("param", defaultValue: true)
-var isEnabled = true
-
-@Attribute
-func f() {}
-}
-
-
class C {
-var x: Int {
-    let a = 0
-    return a
-}
-}
-
-
a = 2
-
-
a = 2
-
-var b = 3
-
-
#warning("message")
-let a = 2
-
-
#if os(macOS)
-let a = 2
-#endif
-
-
f {
-    let a = 1
-    return a
-}
-
-
func f() {
-    #if os(macOS)
-    let a = 2
-    return a
-    #else
-    return 1
-    #endif
-}
-
-

Triggering Examples

-
class C {
-let a
-↓func x() {}
-}
-
-
class C {
-var x = 0
-↓@objc func f() {}
-}
-
-
class C {
-var x = 0
-↓@objc
-func f() {}
-}
-
-
class C {
-@objc func f() {
-}
-↓var x = 0
-}
-
-
class C {
-func f() {}
-↓@Wapper
-let isNumber = false
-@Wapper
-var isEnabled = true
-↓func g() {}
-}
-
-
class C {
-#if os(macOS)
-let a = 0
-↓func f() {}
-#endif
-}
-
-
let a = 2
-↓b = 1
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/line_length.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/line_length.html deleted file mode 100644 index f00295294..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/line_length.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - line_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Line Length

- -

Lines should not span too many characters.

- -
    -
  • Identifier: line_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -120 -
    -error - -200 -
    -ignores_urls - -false -
    -ignores_function_declarations - -false -
    -ignores_comments - -false -
    -ignores_interpolated_strings - -false -
    -excluded_lines_patterns - -[] -
  • -
-

Non Triggering Examples

-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
-

Triggering Examples

-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/literal_expression_end_indentation.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/literal_expression_end_indentation.html deleted file mode 100644 index 79b1c128f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/literal_expression_end_indentation.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - literal_expression_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Literal Expression End Indentation

- -

Array and dictionary literal end should have the same indentation as the line that started it

- -
    -
  • Identifier: literal_expression_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2, 3]
-
-
[1,
- 2
-]
-
-
[
-   1,
-   2
-]
-
-
[
-   1,
-   2]
-
-
   let x = [
-       1,
-       2
-   ]
-
-
[key: 2, key2: 3]
-
-
[key: 1,
- key2: 2
-]
-
-
[
-   key: 0,
-   key2: 20
-]
-
-

Triggering Examples

-
let x = [
-   1,
-   2
-   ↓]
-
-
   let x = [
-       1,
-       2
-↓]
-
-
let x = [
-   key: value
-   ↓]
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/local_doc_comment.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/local_doc_comment.html deleted file mode 100644 index 4ede9c585..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/local_doc_comment.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - local_doc_comment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Local Doc Comment

- -

Prefer regular comments over doc comments in local scopes

- -
    -
  • Identifier: local_doc_comment
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo() {
-  // Local scope documentation should use normal comments.
-  print("foo")
-}
-
-
/// My great property
-var myGreatProperty: String!
-
-
/// Look here for more info: https://github.com.
-var myGreatProperty: String!
-
-
/// Look here for more info:
-/// https://github.com.
-var myGreatProperty: String!
-
-

Triggering Examples

-
func foo() {
-  ↓/// Docstring inside a function declaration
-  print("foo")
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/lower_acl_than_parent.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/lower_acl_than_parent.html deleted file mode 100644 index 20fb7dd59..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/lower_acl_than_parent.html +++ /dev/null @@ -1,484 +0,0 @@ - - - - lower_acl_than_parent Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Lower ACL than Parent

- -

Ensure declarations have a lower access control level than their enclosing parent

- -
    -
  • Identifier: lower_acl_than_parent
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
public struct Foo { public func bar() {} }
-
-
internal struct Foo { func bar() {} }
-
-
struct Foo { func bar() {} }
-
-
struct Foo { internal func bar() {} }
-
-
open class Foo { public func bar() {} }
-
-
open class Foo { open func bar() {} }
-
-
fileprivate struct Foo { private func bar() {} }
-
-
private struct Foo { private func bar(id: String) }
-
-
extension Foo { public func bar() {} }
-
-
private struct Foo { fileprivate func bar() {} }
-
-
private func foo(id: String) {}
-
-
private class Foo { func bar() {} }
-
-
public extension Foo { struct Bar { public func baz() {} }}
-
-
public extension Foo { struct Bar { internal func baz() {} }}
-
-
internal extension Foo { struct Bar { internal func baz() {} }}
-
-
extension Foo { struct Bar { internal func baz() {} }}
-
-

Triggering Examples

-
struct Foo { ↓public func bar() {} }
-
-
enum Foo { ↓public func bar() {} }
-
-
public class Foo { ↓open func bar() }
-
-
class Foo { ↓public private(set) var bar: String? }
-
-
private struct Foo { ↓public func bar() {} }
-
-
private class Foo { ↓public func bar() {} }
-
-
private actor Foo { ↓public func bar() {} }
-
-
fileprivate struct Foo { ↓public func bar() {} }
-
-
class Foo { ↓public func bar() {} }
-
-
actor Foo { ↓public func bar() {} }
-
-
private struct Foo { ↓internal func bar() {} }
-
-
fileprivate struct Foo { ↓internal func bar() {} }
-
-
extension Foo { struct Bar { ↓public func baz() {} }}
-
-
internal extension Foo { struct Bar { ↓public func baz() {} }}
-
-
private extension Foo { struct Bar { ↓public func baz() {} }}
-
-
fileprivate extension Foo { struct Bar { ↓public func baz() {} }}
-
-
private extension Foo { struct Bar { ↓internal func baz() {} }}
-
-
fileprivate extension Foo { struct Bar { ↓internal func baz() {} }}
-
-
public extension Foo { struct Bar { struct Baz { ↓public func qux() {} }}}
-
-
final class Foo { ↓public func bar() {} }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/mark.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/mark.html deleted file mode 100644 index db31dd02f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/mark.html +++ /dev/null @@ -1,510 +0,0 @@ - - - - mark Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Mark

- -

MARK comment should be in valid format. e.g. ‘// MARK: …’ or ‘// MARK: - …’

- -
    -
  • Identifier: mark
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
// MARK: good
-
-
// MARK: - good
-
-
// MARK: -
-
-
// MARK: - 
-
-
// BOOKMARK
-
-
//BOOKMARK
-
-
// BOOKMARKS
-
-
// MARK: This is good.
-
-
// MARK: - This is good.
-
-
// MARK: --- This is good. ---
-
-
// MARK: – This is dash separator
-
-
// Mark text
-
-
//  MarkdownText.swift
-
-
// MARK: good
-func foo() {
-    let bar = 0
-      // MARK: good
-}
-
-
/*
-func test1() {
-}
-//MARK: mark
-func test2() {
-}
-*/
-
-

Triggering Examples

-
↓//MARK: bad
-
-
↓// MARK:bad
-
-
↓//MARK:bad
-
-
↓//  MARK: bad
-
-
↓// MARK:  bad
-
-
↓// MARK: -bad
-
-
↓// MARK:- bad
-
-
↓// MARK:-bad
-
-
↓//MARK: - bad
-
-
↓//MARK:- bad
-
-
↓//MARK: -bad
-
-
↓//MARK:-bad
-
-
↓//Mark: bad
-
-
↓// Mark: bad
-
-
↓// MARK bad
-
-
↓//MARK bad
-
-
↓// MARK - bad
-
-
↓//MARK : bad
-
-
↓// MARKL:
-
-
↓// MARKR 
-
-
↓// MARKK -
-
-
↓/// MARK:
-
-
↓/// MARK bad
-
-
// MARK: good
-func foo() {
-    let bar = 0
-      ↓//MARK: bad
-}
-
-
↓//MARK:- Top-Level bad mark
-↓//MARK:- Another bad mark
-struct MarkTest {}
-↓// MARK:- Bad mark
-extension MarkTest {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/missing_docs.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/missing_docs.html deleted file mode 100644 index 79f230569..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/missing_docs.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - missing_docs Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Missing Docs

- -

Declarations should be documented.

- -
    -
  • Identifier: missing_docs
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -[open, public] -
    -excludes_extensions - -true -
    -excludes_inherited_types - -true -
    -excludes_trivial_init - -false -
    -evaluate_effective_access_control_level - -false -
  • -
-

Non Triggering Examples

-
/// docs
-public class A {
-/// docs
-public func b() {}
-}
-// no docs
-public class B: A { override public func b() {} }
-
-
import Foundation
-// no docs
-public class B: NSObject {
-// no docs
-override public var description: String { fatalError() } }
-
-
/// docs
-public class A {
-    var j = 1
-    var i: Int { 1 }
-    func f() {}
-    deinit {}
-}
-
-
public extension A {}
-
-
enum E {
-    case A
-}
-
-
//
-// excludes_trivial_init: true
-//
-
-/// docs
-public class A {
-    public init() {}
-}
-
-
-
//
-// evaluate_effective_access_control_level: true
-//
-
-class C {
-    public func f() {}
-}
-
-
-
public struct S: ~Copyable, P {
-    public init() {}
-}
-
-

Triggering Examples

-
public ↓func a() {}
-
-
// regular comment
-public ↓func a() {}
-
-
/* regular comment */
-public ↓func a() {}
-
-
/// docs
-public protocol A {
-    // no docs
-    ↓var b: Int { get }
-}
-/// docs
-public struct C: A {
-    public let b: Int
-}
-
-
/// a doc
-public class C {
-    public static ↓let i = 1
-}
-
-
public extension A {
-    public ↓func f() {}
-    static ↓var i: Int { 1 }
-    ↓struct S {
-        func f() {}
-    }
-    ↓class C {
-        func f() {}
-    }
-    ↓actor A {
-        func f() {}
-    }
-    ↓enum E {
-        ↓case a
-        func f() {}
-    }
-}
-
-
public extension A {
-    ↓enum E {
-        enum Inner {
-            case a
-        }
-    }
-}
-
-
extension E {
-    public ↓struct S {
-        public static ↓let i = 1
-    }
-}
-
-
extension E {
-    public ↓func f() {}
-}
-
-
//
-// excludes_trivial_init: true
-//
-
-/// docs
-public class A {
-    public ↓init(argument: String) {}
-}
-
-
-
//
-// excludes_inherited_types: false
-//
-
-public ↓struct C: A {
-    public ↓let b: Int
-}
-
-
-
//
-// excludes_extensions: false
-//
-
-public ↓extension A {
-    public ↓func f() {}
-}
-
-
-
public extension E {
-    ↓var i: Int {
-        let j = 1
-        func f() {}
-        return j
-    }
-}
-
-
#if os(macOS)
-public ↓func f() {}
-#endif
-
-
public ↓enum E {
-    ↓case A, B
-    func f() {}
-    init(_ i: Int) { self = .A }
-}
-
-
/// a doc
-public struct S {}
-public extension S {
-    ↓enum E {
-        ↓case A
-    }
-}
-
-
//
-// evaluate_effective_access_control_level: false
-//
-
-class C {
-    public ↓func f() {}
-}
-
-
-
public ↓struct S: ~Copyable, ~Escapable {
-    public ↓init() {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/modifier_order.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/modifier_order.html deleted file mode 100644 index 5adf07544..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/modifier_order.html +++ /dev/null @@ -1,607 +0,0 @@ - - - - modifier_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Modifier Order

- -

Modifier order should be consistent.

- -
    -
  • Identifier: modifier_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -preferred_modifier_order - -[override, acl, setterACL, dynamic, mutators, lazy, final, required, convenience, typeMethods, owned] -
  • -
-

Non Triggering Examples

-
public class Foo {
-   public required convenience init() {}
-}
-
-
public class Foo {
-   public static let bar = 42
-}
-
-
public class Foo {
-   public static var bar: Int {
-       return
-   }
-}
-
-
public class Foo {
-   public class var bar: Int {
-       return 42
-   }
-}
-
-
public class Bar {
-   public class var foo: String {
-       return "foo"
-   }
-}
-public class Foo: Bar {
-   override public final class var foo: String {
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-   override public var foo: Int? {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   override open class func foo() -> Int {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-class Bar {
-    public private(set) weak var foo: Foo?
-}
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objcMembers
-public final class Foo: NSObject {}
-
-
@objc
-override public private(set) weak var foo: Bar?
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objc
-open final class Foo: NSObject {
-   open weak var weakBar: NSString? = nil
-}
-
-
public final class Foo {}
-
-
class Bar {
-   func bar() {}
-}
-
-
internal class Foo: Bar {
-   override internal func bar() {}
-}
-
-
public struct Foo {
-   internal weak var weakBar: NSObject? = nil
-}
-
-
class Foo {
-   internal lazy var bar: String = "foo"
-}
-
-

Triggering Examples

-
class Foo {
-   convenience required public init() {}
-}
-
-
public class Foo {
-   static public let bar = 42
-}
-
-
public class Foo {
-   static public var bar: Int {
-       return 42
-   }
-}
-
-
public class Foo {
-   class public var bar: Int {
-       return 42
-   }
-}
-
-
public class RootFoo {
-   class public var foo: String {
-       return "foo"
-   }
-}
-public class Foo: RootFoo {
-   override final class public var foo: String
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-    public override var foo: Int? {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-    class Bar {
-        private(set) public weak var foo: Foo?
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   class open override func foo() -> Int {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   open override class func foo() -> Int {
-       return 43
-   }
-}
-
-
@objc
-final public class Foo: NSObject {}
-
-
@objcMembers
-final public class Foo: NSObject {}
-
-
@objc
-final open class Foo: NSObject {
-   weak open var weakBar: NSString? = nil
-}
-
-
final public class Foo {}
-
-
internal class Foo: Bar {
-   internal override func bar() {}
-}
-
-
public struct Foo {
-   weak internal var weakBar: NSObjetc? = nil
-}
-
-
class Foo {
-   lazy internal var bar: String = "foo"
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments.html deleted file mode 100644 index 103211ffb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - multiline_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments

- -

Arguments should be either on the same line, or one per line

- -
    -
  • Identifier: multiline_arguments
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -first_argument_location - -any_line -
    -only_enforce_after_first_closure_on_first_line - -false -
  • -
-

Non Triggering Examples

-
foo()
-
-
foo(
-)
-
-
foo { }
-
-
foo {
-
-}
-
-
foo(0)
-
-
foo(0, 1)
-
-
foo(0, 1) { }
-
-
foo(0, param1: 1)
-
-
foo(0, param1: 1) { }
-
-
foo(param1: 1)
-
-
foo(param1: 1) { }
-
-
foo(param1: 1, param2: true) { }
-
-
foo(param1: 1, param2: true, param3: [3]) { }
-
-
foo(param1: 1, param2: true, param3: [3]) {
-    bar()
-}
-
-
foo(param1: 1,
-    param2: true,
-    param3: [3])
-
-
foo(
-    param1: 1, param2: true, param3: [3]
-)
-
-
foo(
-    param1: 1,
-    param2: true,
-    param3: [3]
-)
-
-
Picker(selection: viewStore.binding(\.$someProperty)) {
-   ForEach(SomeEnum.allCases, id: \.rawValue) { someCase in
-      Text(someCase.rawValue)
-         .tag(someCase)
-   }
-} label: {
-   EmptyView()
-}
-
-
UIView.animate(withDuration: 1,
-               delay: 0) {
-    // sample
-    print("a")
-} completion: { _ in
-    // sample
-    print("b")
-}
-
-
UIView.animate(withDuration: 1, delay: 0) {
-    print("a")
-} completion: { _ in
-    print("b")
-}
-
-

Triggering Examples

-
foo(0,
-    param1: 1, ↓param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1,
-    param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1, ↓param2: true,
-    param3: [3])
-
-
foo(
-    0, ↓param1: 1,
-    param2: true, ↓param3: [3]
-)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments_brackets.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments_brackets.html deleted file mode 100644 index c9c280387..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_arguments_brackets.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - multiline_arguments_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments Brackets

- -

Multiline arguments should have their surrounding brackets in a new line

- -
    -
  • Identifier: multiline_arguments_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo(param1: "Param1", param2: "Param2", param3: "Param3")
-
-
foo(
-    param1: "Param1", param2: "Param2", param3: "Param3"
-)
-
-
func foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"
-)
-
-
foo { param1, param2 in
-    print("hello world")
-}
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-    )
-)
-
-
AlertViewModel.AlertAction(title: "some title", style: .default) {
-    AlertManager.shared.presentNextDebugAlert()
-}
-
-
public final class Logger {
-    public static let shared = Logger(outputs: [
-        OSLoggerOutput(),
-        ErrorLoggerOutput()
-    ])
-}
-
-
let errors = try self.download([
-    (description: description, priority: priority),
-])
-
-
return SignalProducer({ observer, _ in
-    observer.sendCompleted()
-}).onMainQueue()
-
-
SomeType(a: [
-    1, 2, 3
-], b: [1, 2])
-
-
SomeType(
-  a: 1
-) { print("completion") }
-
-
SomeType(
-  a: 1
-) {
-  print("completion")
-}
-
-
SomeType(
-  a: .init() { print("completion") }
-)
-
-
SomeType(
-  a: .init() {
-    print("completion")
-  }
-)
-
-
SomeType(
-  a: 1
-) {} onError: {}
-
-

Triggering Examples

-
foo(↓param1: "Param1", param2: "Param2",
-         param3: "Param3"
-)
-
-
foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"↓)
-
-
foo(↓param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"↓)
-
-
foo(↓bar(
-    x: 5,
-    y: 7
-)
-)
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-)↓)
-
-
SomeOtherType(↓a: [
-        1, 2, 3
-    ],
-    b: "two"↓)
-
-
SomeOtherType(
-  a: 1↓) {}
-
-
SomeOtherType(
-  a: 1↓) {
-  print("completion")
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_function_chains.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_function_chains.html deleted file mode 100644 index 8b8d8006b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_function_chains.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - multiline_function_chains Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Function Chains

- -

Chained function calls should be either on the same line, or one per line

- -
    -
  • Identifier: multiline_function_chains
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4].filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)
-
-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)",
-
-
let chain = a
-    .b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in print(blah) }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c(.init(
-        a: 1,
-        b, 2,
-        c, 3))
-    .d()
-
-
self.viewModel.outputs.postContextualNotification
-  .observeForUI()
-  .observeValues {
-    NotificationCenter.default.post(
-      Notification(
-        name: .ksr_showNotificationsDialog,
-        userInfo: [UserInfoKeys.context: PushNotificationDialog.Context.pledge,
-                   UserInfoKeys.viewController: self]
-     )
-    )
-  }
-
-
let remainingIDs = Array(Set(self.currentIDs).subtracting(Set(response.ids)))
-
-
self.happeningNewsletterOn = self.updateCurrentUser
-    .map { $0.newsletters.happening }.skipNil().skipRepeats()
-
-

Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }↓.map { $0 * $0 }
-    .reduce(0, +)
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c(2, 3, 4)↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)↓.c { blah in
-        print(blah)
-    }
-    .d()
-
-
a.b {
-//  ““
-}↓.e()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_literal_brackets.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_literal_brackets.html deleted file mode 100644 index dcde42c68..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_literal_brackets.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - multiline_literal_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Literal Brackets

- -

Multiline literals should have their surrounding brackets in a new line

- -
    -
  • Identifier: multiline_literal_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let trio = ["harry", "ronald", "hermione"]
-let houseCup = ["gryffindor": 460, "hufflepuff": 370, "ravenclaw": 410, "slytherin": 450]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"
-]
-let houseCup = [
-    "gryffindor": 460,
-    "hufflepuff": 370,
-    "ravenclaw": 410,
-    "slytherin": 450
-]
-
-
let trio = [
-    "harry", "ronald", "hermione"
-]
-let houseCup = [
-    "gryffindor": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450
-]
-
-
_ = [
-    1,
-    2,
-    3,
-    4,
-    5, 6,
-    7, 8, 9
-]
-
-

Triggering Examples

-
let trio = [↓"harry",
-            "ronald",
-            "hermione"
-]
-
-
let houseCup = [↓"gryffindor": 460, "hufflepuff": 370,
-                "ravenclaw": 410, "slytherin": 450
-]
-
-
let houseCup = [↓"gryffindor": 460,
-                "hufflepuff": 370,
-                "ravenclaw": 410,
-                "slytherin": 450↓]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"↓]
-
-
let houseCup = [
-    "gryffindor": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450↓]
-
-
class Hogwarts {
-    let houseCup = [
-        "gryffindor": 460, "hufflepuff": 370,
-        "ravenclaw": 410, "slytherin": 450↓]
-}
-
-
_ = [
-    1,
-    2,
-    3,
-    4,
-    5, 6,
-    7, 8, 9↓]
-
-
_ = [↓1, 2, 3,
-     4, 5, 6,
-     7, 8, 9
-]
-
-
class Hogwarts {
-    let houseCup = [
-        "gryffindor": 460, "hufflepuff": 370,
-        "ravenclaw": 410, "slytherin": slytherinPoints.filter {
-            $0.isValid
-        }.sum()↓]
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters.html deleted file mode 100644 index 480c83b0d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters.html +++ /dev/null @@ -1,844 +0,0 @@ - - - - multiline_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters

- -

Functions and methods parameters should be either on the same line, or one per line

- -
    -
  • Identifier: multiline_parameters
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allows_single_line - -true -
  • -
-

Non Triggering Examples

-
func foo() { }
-
-
func foo(param1: Int) { }
-
-
func foo(param1: Int, param2: Bool) { }
-
-
func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
func foo(param1: Int,
-         param2: Bool,
-         param3: [String]) { }
-
-
func foo(_ param1: Int, param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
static func foo() { }
-
-
static func foo(param1: Int) { }
-
-
static func foo(param1: Int, param2: Bool) { }
-
-
static func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
static func foo(param1: Int,
-                param2: Bool,
-                param3: [String]) { }
-
-
protocol Foo {
-    func foo() { }
-}
-
-
protocol Foo {
-    func foo(param1: Int) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
protocol Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
protocol Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
enum Foo {
-    func foo() { }
-}
-
-
enum Foo {
-    func foo(param1: Int) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
enum Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
struct Foo {
-    func foo() { }
-}
-
-
struct Foo {
-    func foo(param1: Int) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
struct Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-    func foo() { }
-}
-
-
class Foo {
-    func foo(param1: Int) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-    }
-
-
class Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
class Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = nil) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: Bool) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, (Int) -> Void) -> Void = { (x: Int, f: (Int) -> Void) in }) { }
-}
-
-
class Foo {
-   init(param1: Int,
-        param2: Bool,
-        param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
//
-// allows_single_line: false
-//
-
-func foo() { }
-
-
-
//
-// allows_single_line: false
-//
-
-func foo(param1: Int) { }
-
-
-
//
-// allows_single_line: false
-//
-
-protocol Foo {
-    func foo(param1: Int,
-             param2: Bool,
-             param3: [String]) { }
-}
-
-
-
//
-// allows_single_line: false
-//
-
-protocol Foo {
-    func foo(
-        param1: Int
-    ) { }
-}
-
-
-
//
-// allows_single_line: false
-//
-
-protocol Foo {
-    func foo(
-        param1: Int,
-        param2: Bool,
-        param3: [String]
-    ) { }
-}
-
-
-
//
-// max_number_of_single_line_parameters: 3
-//
-
-func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
-
//
-// max_number_of_single_line_parameters: 3
-//
-
-func foo(param1: Int,
-         param2: Bool,
-         param3: [String]) { }
-
-
-

Triggering Examples

-
func ↓foo(_ param1: Int,
-          param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
class Foo {
-  ↓init(param1: Int, param2: Bool,
-        param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
//
-// allows_single_line: false
-//
-
-func ↓foo(param1: Int, param2: Bool) { }
-
-
-
//
-// allows_single_line: false
-//
-
-func ↓foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
-
//
-// max_number_of_single_line_parameters: 2
-//
-
-func ↓foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
-
//
-// max_number_of_single_line_parameters: 3
-//
-
-func ↓foo(param1: Int,
-          param2: Bool, param3: [String]) { }
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters_brackets.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters_brackets.html deleted file mode 100644 index 4392bd562..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiline_parameters_brackets.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - multiline_parameters_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters Brackets

- -

Multiline parameters should have their surrounding brackets in a new line

- -
    -
  • Identifier: multiline_parameters_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo(param1: String, param2: String, param3: String)
-
-
func foo(
-    param1: String, param2: String, param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String
-)
-
-
class SomeType {
-    func foo(param1: String, param2: String, param3: String)
-}
-
-
class SomeType {
-    func foo(
-        param1: String, param2: String, param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String
-    )
-}
-
-
func foo<T>(param1: T, param2: String, param3: String) -> T { /* some code */ }
-
-
    func foo(a: [Int] = [
-        1
-    ])
-
-

Triggering Examples

-
func foo(↓param1: String, param2: String,
-         param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String↓)
-
-
class SomeType {
-    func foo(↓param1: String, param2: String,
-             param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String↓)
-}
-
-
func foo<T>(↓param1: T, param2: String,
-         param3: String
-) -> T
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html deleted file mode 100644 index e86bbd134..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - multiple_closures_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiple Closures with Trailing Closure

- -

Trailing closure syntax should not be used when passing more than one closure argument

- -
    -
  • Identifier: multiple_closures_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
foo.reduce(0) { $0 + $1 }
-
-
if let foo = bar.map({ $0 + 1 }) {
-
-}
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
UIView.animate(withDuration: 1.0) {
-    someView.alpha = 0.0
-}
-
-
foo.method { print(0) } arg2: { print(1) }
-
-
foo.methodWithParenArgs((0, 1), arg2: (0, 1, 2)) { $0 } arg4: { $0 }
-
-

Triggering Examples

-
foo.something(param1: { $0 }) ↓{ $0 + 1 }
-
-
UIView.animate(withDuration: 1.0, animations: {
-    someView.alpha = 0.0
-}) ↓{ _ in
-    someView.removeFromSuperview()
-}
-
-
foo.multipleTrailing(arg1: { $0 }) { $0 } arg3: { $0 }
-
-
foo.methodWithParenArgs(param1: { $0 }, param2: (0, 1), (0, 1)) { $0 }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nesting.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nesting.html deleted file mode 100644 index fa38cf11b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nesting.html +++ /dev/null @@ -1,1606 +0,0 @@ - - - - nesting Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nesting

- -

Types should be nested at most 1 level deep, and functions should be nested at most 2 levels deep.

- -
    -
  • Identifier: nesting
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -type_level - - - - - - - - - - - -
    KeyValue
    -warning - -1 -
    -
    -function_level - - - - - - - - - - - -
    KeyValue
    -warning - -2 -
    -
    -check_nesting_in_closures_and_statements - -true -
    -always_allow_one_type_in_functions - -false -
    -ignore_typealiases_and_associatedtypes - -false -
  • -
-

Non Triggering Examples

-
actor Example_0 {
-    actor Example_1 {}
-}
-
-
var example: Int {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            actor Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    actor Example_1 {}
-}
-
-
class Example_0 {
-    class Example_1 {}
-}
-
-
var example: Int {
-    class Example_0 {
-        class Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            class Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    class Example_1 {}
-}
-
-
struct Example_0 {
-    struct Example_1 {}
-}
-
-
var example: Int {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    struct Example_1 {}
-}
-
-
enum Example_0 {
-    enum Example_1 {}
-}
-
-
var example: Int {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    enum Example_1 {}
-}
-
-
func f_0() {
-    func f_1() {
-        func f_2() {}
-    }
-}
-
-
var example: Int {
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
switch example {
-case .exampleCase:
-    actor Example_0 {
-        actor Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    class Example_0 {
-        class Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    class Example_0 {
-        class Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    class Example_0 {
-        class Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    struct Example_0 {
-        struct Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    enum Example_0 {
-        enum Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
actor Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    actor Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
class Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    class Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
struct Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    struct Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
enum Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    enum Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
actor Example_0 {
-    func f_0() {
-        actor Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
actor Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            actor Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                actor Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        class Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            class Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        struct Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        enum Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-

Triggering Examples

-
actor Example_0 {
-    actor Example_1 {
-        ↓actor Example_2 {}
-    }
-}
-
-
var example: Int {
-    actor Example_0 {
-        actor Example_1 {
-            ↓actor Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            actor Example_1 {
-                ↓actor Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    actor Example_1 {
-        ↓actor Example_2 {}
-    }
-}
-
-
class Example_0 {
-    class Example_1 {
-        ↓class Example_2 {}
-    }
-}
-
-
var example: Int {
-    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    class Example_1 {
-        ↓class Example_2 {}
-    }
-}
-
-
struct Example_0 {
-    struct Example_1 {
-        ↓struct Example_2 {}
-    }
-}
-
-
var example: Int {
-    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    struct Example_1 {
-        ↓struct Example_2 {}
-    }
-}
-
-
enum Example_0 {
-    enum Example_1 {
-        ↓enum Example_2 {}
-    }
-}
-
-
var example: Int {
-    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    enum Example_1 {
-        ↓enum Example_2 {}
-    }
-}
-
-
func f_0() {
-    func f_1() {
-        func f_2() {
-            ↓func f_3() {}
-        }
-    }
-}
-
-
var example: Int {
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
switch example {
-case .exampleCase:
-    actor Example_0 {
-        actor Example_1 {
-            ↓actor Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    actor Example_0 {
-        actor Example_1 {
-            ↓actor Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    class Example_0 {
-        class Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
actor Example_0 {
-    actor Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    actor Example_0 {
-        actor Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            actor Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    actor Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
class Example_0 {
-    class Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    class Example_0 {
-        class Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            class Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    class Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
struct Example_0 {
-    struct Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    struct Example_0 {
-        struct Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            struct Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    struct Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
enum Example_0 {
-    enum Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    enum Example_0 {
-        enum Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            enum Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    enum Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
actor Example_0 {
-    func f_0() {
-        actor Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓actor Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
actor Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            actor Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓actor Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                actor Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓actor Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        class Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓class Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            class Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓class Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓class Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        struct Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓struct Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓struct Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓struct Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        enum Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓enum Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓enum Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓enum Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nimble_operator.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nimble_operator.html deleted file mode 100644 index d9f75a80f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nimble_operator.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - nimble_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nimble Operator

- -

Prefer Nimble operator overloads over free matcher functions

- -
    -
  • Identifier: nimble_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
expect(seagull.squawk) != "Hi!"
-
-
expect("Hi!") == "Hi!"
-
-
expect(10) > 2
-
-
expect(10) >= 10
-
-
expect(10) < 11
-
-
expect(10) <= 10
-
-
expect(x) === x
-
-
expect(10) == 10
-
-
expect(success) == true
-
-
expect(value) == nil
-
-
expect(value) != nil
-
-
expect(object.asyncFunction()).toEventually(equal(1))
-
-
expect(actual).to(haveCount(expected))
-
-
foo.method {
-    expect(value).to(equal(expectedValue), description: "Failed")
-    return Bar(value: ())
-}
-
-

Triggering Examples

-
↓expect(seagull.squawk).toNot(equal("Hi"))
-
-
↓expect(12).toNot(equal(10))
-
-
↓expect(10).to(equal(10))
-
-
↓expect(10, line: 1).to(equal(10))
-
-
↓expect(10).to(beGreaterThan(8))
-
-
↓expect(10).to(beGreaterThanOrEqualTo(10))
-
-
↓expect(10).to(beLessThan(11))
-
-
↓expect(10).to(beLessThanOrEqualTo(10))
-
-
↓expect(x).to(beIdenticalTo(x))
-
-
↓expect(success).to(beTrue())
-
-
↓expect(success).to(beFalse())
-
-
↓expect(value).to(beNil())
-
-
↓expect(value).toNot(beNil())
-
-
expect(10) > 2
- ↓expect(10).to(beGreaterThan(2))
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_empty_block.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_empty_block.html deleted file mode 100644 index 1d4f4b8dc..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_empty_block.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - no_empty_block Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Empty Block

- -

Code blocks should contain at least one statement or comment

- -
    -
  • Identifier: no_empty_block
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -disabled_block_types - -[] -
  • -
-

Non Triggering Examples

-
func f() {
-    /* do something */
-}
-
-var flag = true {
-    willSet { /* do something */ }
-}
-
-
class Apple {
-    init() { /* do something */ }
-
-    deinit { /* do something */ }
-}
-
-
for _ in 0..<10 { /* do something */ }
-
-do {
-    /* do something */
-} catch {
-    /* do something */
-}
-
-func f() {
-    defer {
-        /* do something */
-    }
-    print("other code")
-}
-
-if flag {
-    /* do something */
-} else {
-    /* do something */
-}
-
-repeat { /* do something */ } while (flag)
-
-while i < 10 { /* do something */ }
-
-
//
-// disabled_block_types: [function_bodies]
-//
-
-func f() {}
-
-var flag = true {
-    willSet {}
-}
-
-
-
//
-// disabled_block_types: [initializer_bodies]
-//
-
-class Apple {
-    init() {}
-
-    deinit {}
-}
-
-
-
//
-// disabled_block_types: [statement_blocks]
-//
-
-for _ in 0..<10 {}
-
-do {
-} catch {
-}
-
-func f() {
-    defer {}
-    print("other code")
-}
-
-if flag {
-} else {
-}
-
-repeat {} while (flag)
-
-while i < 10 {}
-
-
-
f { _ in /* comment */ }
-f { _ in // comment
-}
-f { _ in
-    // comment
-}
-
-
//
-// disabled_block_types: [closure_blocks]
-//
-
-f {}
-{}()
-
-
-

Triggering Examples

-
func f() ↓{}
-
-var flag = true {
-    willSet ↓{}
-}
-
-
class Apple {
-    init() ↓{}
-
-    deinit ↓{}
-}
-
-
for _ in 0..<10 ↓{}
-
-do ↓{
-} catch ↓{
-}
-
-func f() {
-    defer ↓{}
-    print("other code")
-}
-
-if flag ↓{
-} else ↓{
-}
-
-repeat ↓{} while (flag)
-
-while i < 10 ↓{}
-
-
f ↓{}
-
-
Button ↓{} label: ↓{}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_extension_access_modifier.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_extension_access_modifier.html deleted file mode 100644 index b76901ca8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_extension_access_modifier.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - no_extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Extension Access Modifier

- -

Prefer not to use extension access modifiers

- -
    -
  • Identifier: no_extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
extension String {}
-
-

-
- extension String {}
-
-

Triggering Examples

-
↓private extension String {}
-
-
↓public 
- extension String {}
-
-
↓open extension String {}
-
-
↓internal extension String {}
-
-
↓fileprivate extension String {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_fallthrough_only.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_fallthrough_only.html deleted file mode 100644 index 60427c4b5..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_fallthrough_only.html +++ /dev/null @@ -1,548 +0,0 @@ - - - - no_fallthrough_only Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Fallthrough only

- -

Fallthroughs can only be used if the case contains at least one other statement

- -
    -
  • Identifier: no_fallthrough_only
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch myvar {
-case 1:
-    var a = 1
-    fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case "a":
-    var one = 1
-    var two = 2
-    fallthrough
-case "b": /* comment */
-    var three = 3
-}
-
-
switch myvar {
-case 1:
-    let one = 1
-case 2:
-    // comment
-    var two = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    var three = 3
-    fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    var three = 3
-    fallthrough
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    let B = "B"
-    fallthrough
-default:
-    let C = "C"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    let one = 1
-    fallthrough
-case "abc":
-    let two = 2
-}
-
-
switch enumInstance {
-case .caseA:
-    print("it's a")
-case .caseB:
-    fallthrough
-@unknown default:
-    print("it's not a")
-}
-
-

Triggering Examples

-
switch myvar {
-case 1:
-    ↓fallthrough
-case 2:
-    var a = 1
-}
-
-
switch myvar {
-case 1:
-    var a = 2
-case 2:
-    ↓fallthrough
-case 3:
-    var a = 3
-}
-
-
switch myvar {
-case 1: // comment
-    ↓fallthrough
-}
-
-
switch myvar {
-case 1: /* multi
-    line
-    comment */
-    ↓fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    ↓fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    ↓fallthrough
-case .gamma:
-    var three = 3
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    ↓fallthrough
-default:
-    let B = "B"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    ↓fallthrough
-case "abc":
-    let two = 2
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_grouping_extension.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_grouping_extension.html deleted file mode 100644 index 5ab4a89cb..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_grouping_extension.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - no_grouping_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Grouping Extension

- -

Extensions shouldn’t be used to group code within the same source file

- -
    -
  • Identifier: no_grouping_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
protocol Food {}
-extension Food {}
-
-
class Apples {}
-extension Oranges {}
-
-
class Box<T> {}
-extension Box where T: Vegetable {}
-
-

Triggering Examples

-
enum Fruit {}
-↓extension Fruit {}
-
-
↓extension Tea: Error {}
-struct Tea {}
-
-
class Ham { class Spam {}}
-↓extension Ham.Spam {}
-
-
extension External { struct Gotcha {}}
-↓extension External.Gotcha {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_magic_numbers.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_magic_numbers.html deleted file mode 100644 index 61b343fa7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_magic_numbers.html +++ /dev/null @@ -1,544 +0,0 @@ - - - - no_magic_numbers Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Magic Numbers

- -

Magic numbers should be replaced by named constants

- -
    -
  • Identifier: no_magic_numbers
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
var foo = 123
-
-
static let bar: Double = 0.123
-
-
let a = b + 1.0
-
-
array[0] + array[1] 
-
-
let foo = 1_000.000_01
-
-
// array[1337]
-
-
baz("9999")
-
-
func foo() {
-    let x: Int = 2
-    let y = 3
-    let vector = [x, y, -1]
-}
-
-
class A {
-    var foo: Double = 132
-    static let bar: Double = 0.98
-}
-
-
@available(iOS 13, *)
-func version() {
-    if #available(iOS 13, OSX 10.10, *) {
-        return
-    }
-}
-
-
enum Example: Int {
-    case positive = 2
-    case negative = -2
-}
-
-
class FooTests: XCTestCase {
-    let array: [Int] = []
-    let bar = array[42]
-}
-
-
class FooTests: XCTestCase {
-    class Bar {
-        let array: [Int] = []
-        let bar = array[42]
-    }
-}
-
-
class MyTest: XCTestCase {}
-extension MyTest {
-    let a = Int(3)
-}
-
-
extension MyTest {
-    let a = Int(3)
-}
-class MyTest: XCTestCase {}
-
-
let foo = 1 << 2
-
-
let foo = 1 >> 2
-
-
let foo = 2 >> 2
-
-
let foo = 2 << 2
-
-
let a = b / 100.0
-
-
let range = 2 ..< 12
-
-
let range = ...12
-
-
let range = 12...
-
-
let (lowerBound, upperBound) = (400, 599)
-
-
let a = (5, 10)
-
-
let notFound = (statusCode: 404, description: "Not Found", isError: true)
-
-
#Preview {
-    ContentView(value: 5)
-}
-
-

Triggering Examples

-
foo(↓321)
-
-
bar(↓1_000.005_01)
-
-
array[↓42]
-
-
let box = array[↓12 + ↓14]
-
-
let a = b + ↓2.0
-
-
let range = 2 ... ↓12 + 1
-
-
let range = ↓2*↓6...
-
-
let slice = array[↓2...↓4]
-
-
for i in ↓3 ..< ↓8 {}
-
-
let n: Int = Int(r * ↓255) << ↓16 | Int(g * ↓255) << ↓8
-
-
Color.primary.opacity(isAnimate ? ↓0.1 : ↓1.5)
-
-
        class MyTest: XCTestCase {}
-        extension NSObject {
-            let a = Int(↓3)
-        }
-
-
if (fileSize > ↓1000000) {
-    return
-}
-
-
let imageHeight = (width - ↓24)
-
-
return (↓5, ↓10, ↓15)
-
-
#ExampleMacro {
-    ContentView(value: ↓5)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_space_in_method_call.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_space_in_method_call.html deleted file mode 100644 index 40d38db16..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/no_space_in_method_call.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - no_space_in_method_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Space in Method Call

- -

Don’t add a space between the method name and the parentheses

- -
    -
  • Identifier: no_space_in_method_call
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo()
-
-
object.foo()
-
-
object.foo(1)
-
-
object.foo(value: 1)
-
-
object.foo { print($0 }
-
-
list.sorted { $0.0 < $1.0 }.map { $0.value }
-
-
self.init(rgb: (Int) (colorInt))
-
-
Button {
-    print("Button tapped")
-} label: {
-    Text("Button")
-}
-
-

Triggering Examples

-
foo↓ ()
-
-
object.foo↓ ()
-
-
object.foo↓ (1)
-
-
object.foo↓ (value: 1)
-
-
object.foo↓ () {}
-
-
object.foo↓     ()
-
-
object.foo↓     (value: 1) { x in print(x) }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_optional_string_data_conversion.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_optional_string_data_conversion.html deleted file mode 100644 index f6dbfa2d7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_optional_string_data_conversion.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - non_optional_string_data_conversion Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Non-optional String -> Data Conversion

- -

Prefer non-optional Data(_:) initializer when converting String to Data

- -
    -
  • Identifier: non_optional_string_data_conversion
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
Data("foo".utf8)
-
-

Triggering Examples

-
"foo".data(using: .utf8)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_overridable_class_declaration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_overridable_class_declaration.html deleted file mode 100644 index 8c68b3aba..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/non_overridable_class_declaration.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - non_overridable_class_declaration Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Class Declaration in Final Class

- -

Class methods and properties in final classes should themselves be final, just as if the declarations -are private. In both cases, they cannot be overridden. Using final class or static makes this explicit.

- -
    -
  • Identifier: non_overridable_class_declaration
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -final_class_modifier - -final class -
  • -
-

Non Triggering Examples

-
final class C {
-    final class var b: Bool { true }
-    final class func f() {}
-}
-
-
class C {
-    final class var b: Bool { true }
-    final class func f() {}
-}
-
-
class C {
-    class var b: Bool { true }
-    class func f() {}
-}
-
-
class C {
-    static var b: Bool { true }
-    static func f() {}
-}
-
-
final class C {
-    static var b: Bool { true }
-    static func f() {}
-}
-
-
final class C {
-    class D {
-        class var b: Bool { true }
-        class func f() {}
-    }
-}
-
-

Triggering Examples

-
final class C {
-    ↓class var b: Bool { true }
-    ↓class func f() {}
-}
-
-
class C {
-    final class D {
-        ↓class var b: Bool { true }
-        ↓class func f() {}
-    }
-}
-
-
class C {
-    private ↓class var b: Bool { true }
-    private ↓class func f() {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/notification_center_detachment.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/notification_center_detachment.html deleted file mode 100644 index 6ca50510b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/notification_center_detachment.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - notification_center_detachment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Notification Center Detachment

- -

An object should only remove itself as an observer in deinit

- -
    -
  • Identifier: notification_center_detachment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-   deinit {
-       NotificationCenter.default.removeObserver(self)
-   }
-}
-
-
class Foo {
-   func bar() {
-       NotificationCenter.default.removeObserver(otherObject)
-   }
-}
-
-

Triggering Examples

-
class Foo {
-   func bar() {
-       ↓NotificationCenter.default.removeObserver(self)
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/ns_number_init_as_function_reference.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/ns_number_init_as_function_reference.html deleted file mode 100644 index c0be32a61..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/ns_number_init_as_function_reference.html +++ /dev/null @@ -1,426 +0,0 @@ - - - - ns_number_init_as_function_reference Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSNumber Init as Function Reference

- -

Passing NSNumber.init or NSDecimalNumber.init as a function reference is dangerous as it can cause the wrong initializer to be used, causing crashes; use .init(value:) instead

- -
    -
  • Identifier: ns_number_init_as_function_reference
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[0, 0.2].map(NSNumber.init(value:))
-
-
let value = NSNumber.init(value: 0.0)
-
-
[0, 0.2].map { NSNumber(value: $0) }
-
-
[0, 0.2].map(NSDecimalNumber.init(value:))
-
-
[0, 0.2].map { NSDecimalNumber(value: $0) }
-
-

Triggering Examples

-
[0, 0.2].map(↓NSNumber.init)
-
-
[0, 0.2].map(↓NSDecimalNumber.init)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_key.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_key.html deleted file mode 100644 index deedbcbca..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_key.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - nslocalizedstring_key Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Key

- -

Static strings should be used as key/comment in NSLocalizedString in order for genstrings to work

- -
    -
  • Identifier: nslocalizedstring_key
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
NSLocalizedString("key", comment: "")
-
-
NSLocalizedString("key" + "2", comment: "")
-
-
NSLocalizedString("key", comment: "comment")
-
-
NSLocalizedString("This is a multi-" +
-    "line string", comment: "")
-
-
let format = NSLocalizedString("%@, %@.", comment: "Accessibility label for a post in the post list." +
-" The parameters are the title, and date respectively." +
-" For example, "Let it Go, 1 hour ago."")
-
-

Triggering Examples

-
NSLocalizedString(↓method(), comment: "")
-
-
NSLocalizedString(↓"key_\(param)", comment: "")
-
-
NSLocalizedString("key", comment: ↓"comment with \(param)")
-
-
NSLocalizedString(↓"key_\(param)", comment: ↓method())
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html deleted file mode 100644 index 7c2c860da..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - nslocalizedstring_require_bundle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Require Bundle

- -

Calls to NSLocalizedString should specify the bundle which contains the strings file

- -
    -
  • Identifier: nslocalizedstring_require_bundle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
NSLocalizedString("someKey", bundle: .main, comment: "test")
-
-
NSLocalizedString("someKey", tableName: "a",
-                  bundle: Bundle(for: A.self),
-                  comment: "test")
-
-
NSLocalizedString("someKey", tableName: "xyz",
-                  bundle: someBundle, value: "test"
-                  comment: "test")
-
-
arbitraryFunctionCall("something")
-
-

Triggering Examples

-
↓NSLocalizedString("someKey", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "a", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "xyz",
-                  value: "test", comment: "test")
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html deleted file mode 100644 index 46f716d25..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html +++ /dev/null @@ -1,484 +0,0 @@ - - - - nsobject_prefer_isequal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSObject Prefer isEqual

- -

NSObject subclasses should implement isEqual instead of ==

- -
    -
  • Identifier: nsobject_prefer_isequal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class AClass: NSObject {
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-}
-
-
class AClass: Equatable {
-    static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        return true
-    }
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-    override func isEqual(_ object: Any?) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    static func ==(lhs: AClass, rhs: BClass) -> Bool {
-        return true
-    }
-}
-
-
struct AStruct: Equatable {
-    static func ==(lhs: AStruct, rhs: AStruct) -> Bool {
-        return false
-    }
-}
-
-
enum AnEnum: Equatable {
-    static func ==(lhs: AnEnum, rhs: AnEnum) -> Bool {
-        return true
-    }
-}
-
-

Triggering Examples

-
class AClass: NSObject {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
@objc class AClass: SomeOtherNSObjectSubclass {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-}
-
-
class AClass: NSObject, Equatable {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        guard let other = object as? AClass else {
-            return false
-        }
-        return true
-    }
-
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/number_separator.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/number_separator.html deleted file mode 100644 index 4ab5ded2c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/number_separator.html +++ /dev/null @@ -1,665 +0,0 @@ - - - - number_separator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Number Separator

- -

Underscores should be used as thousand separator in large numbers with a configurable number of digits. In other words, there should be an underscore after every 3 digits in the integral as well as the fractional part of a number.

- -
    -
  • Identifier: number_separator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -minimum_length - -0 -
    -exclude_ranges - -[] -
  • -
-

Non Triggering Examples

-
let foo = -100
-
-
let foo = -1_000
-
-
let foo = -1_000_000
-
-
let foo = -1.0001
-
-
let foo = -1_000_000.0000001
-
-
let binary = -0b10000
-
-
let binary = -0b1000_0001
-
-
let hex = -0xA
-
-
let hex = -0xAA_BB
-
-
let octal = -0o21
-
-
let octal = -0o21_1
-
-
let exp = -1_000_000.000000e2
-
-
let foo: Double = -(200)
-
-
let foo: Double = -(200 / 447.214)
-
-
let foo = -6.2832e-6
-
-
let foo = +100
-
-
let foo = +1_000
-
-
let foo = +1_000_000
-
-
let foo = +1.0001
-
-
let foo = +1_000_000.0000001
-
-
let binary = +0b10000
-
-
let binary = +0b1000_0001
-
-
let hex = +0xA
-
-
let hex = +0xAA_BB
-
-
let octal = +0o21
-
-
let octal = +0o21_1
-
-
let exp = +1_000_000.000000e2
-
-
let foo: Double = +(200)
-
-
let foo: Double = +(200 / 447.214)
-
-
let foo = +6.2832e-6
-
-
let foo = 100
-
-
let foo = 1_000
-
-
let foo = 1_000_000
-
-
let foo = 1.0001
-
-
let foo = 1_000_000.0000001
-
-
let binary = 0b10000
-
-
let binary = 0b1000_0001
-
-
let hex = 0xA
-
-
let hex = 0xAA_BB
-
-
let octal = 0o21
-
-
let octal = 0o21_1
-
-
let exp = 1_000_000.000000e2
-
-
let foo: Double = (200)
-
-
let foo: Double = (200 / 447.214)
-
-
let foo = 6.2832e-6
-
-

Triggering Examples

-
let foo = -↓10_0
-
-
let foo = -↓1000
-
-
let foo = -↓1000e2
-
-
let foo = -↓1000E2
-
-
let foo = -↓1__000
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = -↓1.0001
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = -↓1_000_000.000000_1
-
-
-
let foo = -↓1000000.000000_1
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = -↓6.2832e-6
-
-
-
let foo = +↓10_0
-
-
let foo = +↓1000
-
-
let foo = +↓1000e2
-
-
let foo = +↓1000E2
-
-
let foo = +↓1__000
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = +↓1.0001
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = +↓1_000_000.000000_1
-
-
-
let foo = +↓1000000.000000_1
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = +↓6.2832e-6
-
-
-
let foo = ↓10_0
-
-
let foo = ↓1000
-
-
let foo = ↓1000e2
-
-
let foo = ↓1000E2
-
-
let foo = ↓1__000
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = ↓1.0001
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = ↓1_000_000.000000_1
-
-
-
let foo = ↓1000000.000000_1
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = ↓6.2832e-6
-
-
-
let foo: Double = -(↓100000)
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = -(↓10.000000_1)
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = -(↓123456 / ↓447.214214)
-
-
-
let foo: Double = +(↓100000)
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = +(↓10.000000_1)
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = +(↓123456 / ↓447.214214)
-
-
-
let foo: Double = (↓100000)
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = (↓10.000000_1)
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = (↓123456 / ↓447.214214)
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/object_literal.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/object_literal.html deleted file mode 100644 index 8f8345434..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/object_literal.html +++ /dev/null @@ -1,476 +0,0 @@ - - - - object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Object Literal

- -

Prefer object literals over image and color inits

- -
    -
  • Identifier: object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -image_literal - -true -
    -color_literal - -true -
  • -
-

Non Triggering Examples

-
let image = #imageLiteral(resourceName: "image.jpg")
-
-
let color = #colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓UIImage(named: "foo")
-
-
let color = ↓UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage(named: "foo")
-
-
let color = ↓NSColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor(white: 0.5, alpha: 1)
-
-
let image = ↓UIImage.init(named: "foo")
-
-
let color = ↓UIColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor.init(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage.init(named: "foo")
-
-
let color = ↓NSColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor.init(white: 0.5, alpha: 1)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/one_declaration_per_file.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/one_declaration_per_file.html deleted file mode 100644 index e3d5b1ada..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/one_declaration_per_file.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - one_declaration_per_file Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

One Declaration per File

- -

Only a single declaration is allowed in a file

- -
    -
  • Identifier: one_declaration_per_file
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
actor Foo {}
-
-
class Foo {}
-extension Foo {}
-
-
struct S {
-    struct N {}
-}
-
-

Triggering Examples

-
class Foo {}
-↓class Bar {}
-
-
protocol Foo {}
-↓enum Bar {}
-
-
struct Foo {}
-↓struct Bar {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/opening_brace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/opening_brace.html deleted file mode 100644 index bb8a82a93..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/opening_brace.html +++ /dev/null @@ -1,678 +0,0 @@ - - - - opening_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Opening Brace Spacing

- -

The correct positioning of braces that introduce a block of code or member list is highly controversial. No matter which style is preferred, consistency is key. Apart from different tastes, the positioning of braces can also have a significant impact on the readability of the code, especially for visually impaired developers. This rule ensures that braces are preceded by a single space and on the same line as the declaration. Comments between the declaration and the opening brace are respected. Check out the contrasted_opening_brace rule for a different style.

- -
    -
  • Identifier: opening_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_multiline_type_headers - -false -
    -ignore_multiline_statement_conditions - -false -
    -ignore_multiline_function_signatures - -false -
    -allow_multiline_func - -false -
  • -
-

Non Triggering Examples

-
func abc() {
-}
-
-
[].map() { $0 }
-
-
[].map({ })
-
-
if let a = b { }
-
-
while a == b { }
-
-
guard let a = b else { }
-
-
struct Rule {}
-
-
struct Parent {
-    struct Child {
-        let foo: Int
-    }
-}
-
-
func f(rect: CGRect) {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }()
-}
-
-
func f(rect: CGRect) -> () -> Void {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }
-}
-
-
func f() -> () -> Void {
-    {}
-}
-
-
class Rule:
-  NSObject {
-  var a: String {
-    return ""
-  }
-}
-
-
self.foo(
-    (
-        "String parameter",
-        { "Do something here" }
-    )
-)
-
-
let pattern = #/(\{(?<key>\w+)\})/#
-
-
if c {}
-else {}
-
-
    if c /* comment */ {
-        return
-    }
-
-

Triggering Examples

-
func abc()↓{
-}
-
-
func abc()
-    ↓{ }
-
-
func abc(a: A,
-    b: B)
-↓{
-
-
[].map()↓{ $0 }
-
-
struct OldContentView: View {
-  @State private var showOptions = false
-
-  var body: some View {
-    Button(action: {
-      self.showOptions.toggle()
-    })↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
struct OldContentView: View {
-  @State private var showOptions = false
-
-  var body: some View {
-    Button(action: {
-      self.showOptions.toggle()
-    })
-   ↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
struct OldContentView: View {
-  @State private var showOptions = false
-
-  var body: some View {
-    Button {
-      self.showOptions.toggle()
-    } label:↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
if let a = b↓{ }
-
-
while a == b↓{ }
-
-
guard let a = b else↓{ }
-
-
if
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
while
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
guard
-    let a = b,
-    let c = d
-    where a == c else↓{ }
-
-
struct Rule↓{}
-
-
struct Rule
-↓{
-}
-
-
struct Rule
-
-    ↓{
-}
-
-
struct Parent {
-    struct Child
-    ↓{
-        let foo: Int
-    }
-}
-
-
switch a↓{}
-
-
if
-    let a = b,
-    let c = d,
-    a == c
-↓{ }
-
-
while
-    let a = b,
-    let c = d,
-    a == c
-↓{ }
-
-
guard
-    let a = b,
-    let c = d,
-    a == c else
-↓{ }
-
-
class Rule↓{}
-
-
-
actor Rule↓{}
-
-
-
enum Rule↓{}
-
-
-
protocol Rule↓{}
-
-
-
extension Rule↓{}
-
-
-
class Rule {
-  var a: String↓{
-    return ""
-  }
-}
-
-
class Rule {
-  var a: String {
-    willSet↓{
-
-    }
-    didSet  ↓{
-
-    }
-  }
-}
-
-
precedencegroup Group↓{
-  assignment: true
-}
-
-
if
-    "test".isEmpty
-↓{
-    // code here
-}
-
-
func fooFun() {
-    let foo: String? = "foo"
-    let bar: String? = "bar"
-
-    if
-        let foo = foo,
-        let bar = bar
-    ↓{
-        print(foo + bar)
-    }
-}
-
-
if
-    let a = ["A", "B"].first,
-    let b = ["B"].first
-↓{
-    print(a)
-}
-
-
if c  ↓{}
-else /* comment */  ↓{}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_usage_whitespace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_usage_whitespace.html deleted file mode 100644 index 86811e5a6..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_usage_whitespace.html +++ /dev/null @@ -1,584 +0,0 @@ - - - - operator_usage_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Usage Whitespace

- -

Operators should be surrounded by a single whitespace when they are being used

- -
    -
  • Identifier: operator_usage_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -lines_look_around - -2 -
    -skip_aligned_constants - -true -
    -allowed_no_space_operators - -[“…”, “..<”] -
  • -
-

Non Triggering Examples

-
let foo = 1 + 2
-
-
let foo = 1 > 2
-
-
let foo = !false
-
-
let foo: Int?
-
-
let foo: Array<String>
-
-
let model = CustomView<Container<Button>, NSAttributedString>()
-
-
let foo: [String]
-
-
let foo = 1 + 
-  2
-
-
let range = 1...3
-
-
let range = 1 ... 3
-
-
let range = 1..<3
-
-
#if swift(>=3.0)
-    foo()
-#endif
-
-
array.removeAtIndex(-200)
-
-
let name = "image-1"
-
-
button.setImage(#imageLiteral(resourceName: "image-1"), for: .normal)
-
-
let doubleValue = -9e-11
-
-
let foo = GenericType<(UIViewController) -> Void>()
-
-
let foo = Foo<Bar<T>, Baz>()
-
-
let foo = SignalProducer<Signal<Value, Error>, Error>([ self.signal, next ]).flatten(.concat)
-
-
"let foo =  1"
-
-
enum Enum {
-case hello   = 1
-case hello2  = 1
-}
-
-
let something = Something<GenericParameter1,
-                          GenericParameter2>()
-
-
return path.flatMap { path in
-    return compileCommands[path] ??
-        compileCommands[path.path(relativeTo: FileManager.default.currentDirectoryPath)]
-}
-
-
internal static func == (lhs: Vertex, rhs: Vertex) -> Bool {
-    return lhs.filePath == rhs.filePath
-        && lhs.originalRemoteString == rhs.originalRemoteString
-        && lhs.rootDirectory == rhs.rootDirectory
-}
-
-
internal static func == (lhs: Vertex, rhs: Vertex) -> Bool {
-    return lhs.filePath == rhs.filePath &&
-        lhs.originalRemoteString == rhs.originalRemoteString &&
-        lhs.rootDirectory == rhs.rootDirectory
-}
-
-
private static let pattern =
-    "\\S\(mainPatternGroups)" + // Regexp will match if expression not begin with comma
-    "|" +                       // or
-    "\(mainPatternGroups)"      // Regexp will match if expression begins with comma
-
-
private static let pattern =
-    "\\S\(mainPatternGroups)" + // Regexp will match if expression not begin with comma
-    "|"                       + // or
-    "\(mainPatternGroups)"      // Regexp will match if expression begins with comma
-
-
typealias Foo = Bar
-
-
protocol A {
-    associatedtype B = C
-}
-
-
tabbedViewController.title = nil
-
-

Triggering Examples

-
let foo = 1↓+2
-
-
let foo = 1↓   + 2
-
-
let foo = 1↓   +    2
-
-
let foo = 1↓ +    2
-
-
let foo↓=1↓+2
-
-
let foo↓=1 + 2
-
-
let foo↓=bar
-
-
let range = 1↓ ..<  3
-
-
let foo = bar↓   ?? 0
-
-
let foo = bar↓ !=  0
-
-
let foo = bar↓ !==  bar2
-
-
let v8 = Int8(1)↓  << 6
-
-
let v8 = 1↓ <<  (6)
-
-
let v8 = 1↓ <<  (6)
- let foo = 1 > 2
-
-
let foo↓  = [1]
-
-
let foo↓  = "1"
-
-
let foo↓ =  "1"
-
-
enum Enum {
-case one↓  =  1
-case two  = 1
-}
-
-
enum Enum {
-case one  = 1
-case two↓  =  1
-}
-
-
enum Enum {
-case one↓   = 1
-case two↓  = 1
-}
-
-
typealias Foo↓ =  Bar
-
-
protocol A {
-    associatedtype B↓  = C
-}
-
-
tabbedViewController.title↓  = nil
-
-
let foo = bar ? 0↓:1
-
-
let foo = bar↓ ?   0 : 1
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_whitespace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_whitespace.html deleted file mode 100644 index 0e8efb7e4..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/operator_whitespace.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - operator_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Function Whitespace

- -

Operators should be surrounded by a single whitespace when defining them

- -
    -
  • Identifier: operator_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func <| (lhs: Int, rhs: Int) -> Int {}
-
-
func <|< <A>(lhs: A, rhs: A) -> A {}
-
-
func abc(lhs: Int, rhs: Int) -> Int {}
-
-

Triggering Examples

-
↓func <|(lhs: Int, rhs: Int) -> Int {}
-
-
↓func <|<<A>(lhs: A, rhs: A) -> A {}
-
-
↓func <|  (lhs: Int, rhs: Int) -> Int {}
-
-
↓func <|<  <A>(lhs: A, rhs: A) -> A {}
-
-
↓func  <| (lhs: Int, rhs: Int) -> Int {}
-
-
↓func  <|< <A>(lhs: A, rhs: A) -> A {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_data_string_conversion.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_data_string_conversion.html deleted file mode 100644 index 626acd3a8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_data_string_conversion.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - optional_data_string_conversion Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Optional Data -> String Conversion

- -

Prefer failable String(bytes:encoding:) initializer when converting Data to String

- -
    -
  • Identifier: optional_data_string_conversion
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
String(data: data, encoding: .utf8)
-
-
String(bytes: data, encoding: .utf8)
-
-
String(UTF8.self)
-
-
String(a, b, c, UTF8.self)
-
-
String(decoding: data, encoding: UTF8.self)
-
-

Triggering Examples

-
String(decoding: data, as: UTF8.self)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_enum_case_matching.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_enum_case_matching.html deleted file mode 100644 index e80d0392a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/optional_enum_case_matching.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - optional_enum_case_matching Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Optional Enum Case Match

- -

Matching an enum case against an optional enum without ‘?’ is supported on Swift 5.1 and above

- -
    -
  • Identifier: optional_enum_case_matching
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
- case .bar: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar, .baz): break
- case (.bar, _): break
- case (_, .baz): break
- default: break
-}
-
-
switch (x, y) {
-case (.c, _?):
-    break
-case (.c, nil):
-    break
-case (_, _):
-    break
-}
-
-

Triggering Examples

-
switch foo {
- case .bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case Foo.bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case .bar↓?, .baz↓?: break
- default: break
-}
-
-
switch foo {
- case .bar↓? where x > 1: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar↓?, .baz↓?): break
- case (.bar↓?, _): break
- case (_, .bar↓?): break
- default: break
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/orphaned_doc_comment.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/orphaned_doc_comment.html deleted file mode 100644 index 4dd6e48ff..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/orphaned_doc_comment.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - orphaned_doc_comment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Orphaned Doc Comment

- -

A doc comment should be attached to a declaration

- -
    -
  • Identifier: orphaned_doc_comment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
/// My great property
-var myGreatProperty: String!
-
-
//////////////////////////////////////
-//
-// Copyright header.
-//
-//////////////////////////////////////
-
-
/// Look here for more info: https://github.com.
-var myGreatProperty: String!
-
-
/// Look here for more info:
-/// https://github.com.
-var myGreatProperty: String!
-
-

Triggering Examples

-
↓/// My great property
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-
-
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-// Not a doc string
-↓/// My great property
-// Not a doc string
-var myGreatProperty: String!
-
-
extension Nested {
-    ↓///
-    /// Look here for more info: https://github.com.
-
-    // Not a doc string
-    var myGreatProperty: String!
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/overridden_super_call.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/overridden_super_call.html deleted file mode 100644 index ea6c1721a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/overridden_super_call.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - overridden_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Overridden Method Calls Super

- -

Some overridden methods should always call super.

- -
    -
  • Identifier: overridden_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
    -included - -[“*”] -
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        self.method1()
-        super.viewWillAppear(animated)
-        self.method2()
-    }
-}
-
-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class Some {
-    func viewWillAppear(_ animated: Bool) {
-    }
-}
-
-
class VC: UIViewController {
-    override func viewDidLoad() {
-    defer {
-        super.viewDidLoad()
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        //Not calling to super
-        self.method()
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        super.viewWillAppear(animated)
-        //Other code
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func didReceiveMemoryWarning() {↓
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/override_in_extension.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/override_in_extension.html deleted file mode 100644 index ed64f889b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/override_in_extension.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - override_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Override in Extension

- -

Extensions shouldn’t override declarations

- -
    -
  • Identifier: override_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
extension Person {
-  var age: Int { return 42 }
-}
-
-
extension Person {
-  func celebrateBirthday() {}
-}
-
-
class Employee: Person {
-  override func celebrateBirthday() {}
-}
-
-
class Foo: NSObject {}
-extension Foo {
-    override var description: String { return "" }
-}
-
-
struct Foo {
-    class Bar: NSObject {}
-}
-extension Foo.Bar {
-    override var description: String { return "" }
-}
-
-

Triggering Examples

-
extension Person {
-  override ↓var age: Int { return 42 }
-}
-
-
extension Person {
-  override ↓func celebrateBirthday() {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/pattern_matching_keywords.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/pattern_matching_keywords.html deleted file mode 100644 index 834dd810e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/pattern_matching_keywords.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - pattern_matching_keywords Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Pattern Matching Keywords

- -

Combine multiple pattern matching bindings by moving keywords out of tuples

- -
    -
  • Identifier: pattern_matching_keywords
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-    default: break
-}
-
-
switch foo {
-    case 1: break
-}
-
-
switch foo {
-    case bar: break
-}
-
-
switch foo {
-    case let (x, y): break
-}
-
-
switch foo {
-    case .foo(let x): break
-}
-
-
switch foo {
-    case let .foo(x, y): break
-}
-
-
switch foo {
-    case .foo(let x), .bar(let x): break
-}
-
-
switch foo {
-    case .foo(let x, var y): break
-}
-
-
switch foo {
-    case var (x, y): break
-}
-
-
switch foo {
-    case .foo(var x): break
-}
-
-
switch foo {
-    case var .foo(x, y): break
-}
-
-
switch foo {
-    case (y, let x, z): break
-}
-
-

Triggering Examples

-
switch foo {
-    case (↓let x,  ↓let y): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, .foo): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, _): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, f()): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, s.f()): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, s.t): break
-}
-
-
switch foo {
-    case .foo(↓let x, ↓let y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓let x), .yamlParsing(↓let y)): break
-}
-
-
switch foo {
-    case (↓var x,  ↓var y): break
-}
-
-
switch foo {
-    case .foo(↓var x, ↓var y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓var x), .yamlParsing(↓var y)): break
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/period_spacing.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/period_spacing.html deleted file mode 100644 index d51451caa..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/period_spacing.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - period_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Period Spacing

- -

Periods should not be followed by more than one space

- -
    -
  • Identifier: period_spacing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let pi = 3.2
-
-
let pi = Double.pi
-
-
let pi = Double. pi
-
-
let pi = Double.  pi
-
-
// A. Single.
-
-
///   - code: Identifier of the error. Integer.
-
-
// value: Multiline.
-//        Comment.
-
-
/**
-Sentence ended in period.
-
-- Sentence 2 new line characters after.
-**/
-
-

Triggering Examples

-
/* Only god knows why. ↓ This symbol does nothing. */
-
-
// Only god knows why. ↓ This symbol does nothing.
-
-
// Single. Double. ↓ End.
-
-
// Single. Double. ↓ Triple. ↓  End.
-
-
// Triple. ↓  Quad. ↓   End.
-
-
///   - code: Identifier of the error. ↓ Integer.
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_key_path.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_key_path.html deleted file mode 100644 index cf4fde257..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_key_path.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - prefer_key_path Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Key Path

- -

Use a key path argument instead of a closure with property access

- -
    -
  • Identifier: prefer_key_path
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.2.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -restrict_to_standard_functions - -true -
  • -
-

Non Triggering Examples

-
f {}
-
-
f { $0 }
-
-
f { $0.a }
-
-
let f = { $0.a }(b)
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f {}
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { $0 }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f() { g() }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { a.b.c }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { a in a }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { a, b in a.b }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { (a, b) in a.b }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { $0.a } g: { $0.b }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-[1, 2, 3].reduce(1) { $0 + $1 }
-
-
-
f.map(1) { $0.a }
-
-
f.filter({ $0.a }, x)
-
-
#Predicate { $0.a }
-
-

Triggering Examples

-
f.map ↓{ $0.a }
-
-
f.filter ↓{ $0.a }
-
-
f.first ↓{ $0.a }
-
-
f.contains ↓{ $0.a }
-
-
f.contains(where: ↓{ $0.a })
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f(↓{ $0.a })
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f(a: ↓{ $0.b })
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f(a: ↓{ a in a.b }, x)
-
-
-
f.map ↓{ a in a.b.c }
-
-
f.allSatisfy ↓{ (a: A) in a.b }
-
-
f.first ↓{ (a b: A) in b.c }
-
-
f.contains ↓{ $0.0.a }
-
-
f.flatMap ↓{ $0.a.b }
-
-
//
-// restrict_to_standard_functions: false
-//
-
-let f: (Int) -> Int = ↓{ $0.bigEndian }
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_nimble.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_nimble.html deleted file mode 100644 index 58df451f5..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_nimble.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - prefer_nimble Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Nimble

- -

Prefer Nimble matchers over XCTAssert functions

- -
    -
  • Identifier: prefer_nimble
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
expect(foo) == 1
-
-
expect(foo).to(equal(1))
-
-

Triggering Examples

-
↓XCTAssertTrue(foo)
-
-
↓XCTAssertEqual(foo, 2)
-
-
↓XCTAssertNotEqual(foo, 2)
-
-
↓XCTAssertNil(foo)
-
-
↓XCTAssert(foo)
-
-
↓XCTAssertGreaterThan(foo, 10)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_in_static_references.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_in_static_references.html deleted file mode 100644 index 20f705486..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_in_static_references.html +++ /dev/null @@ -1,483 +0,0 @@ - - - - prefer_self_in_static_references Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self in Static References

- -

Use Self to refer to the surrounding type name

- -
    -
  • Identifier: prefer_self_in_static_references
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-    static let primes = [2, 3, 5, 7]
-    func isPrime(i: Int) -> Bool { Self.primes.contains(i) }
-
-
struct T {
-    static let i = 0
-}
-struct S {
-    static let i = 0
-}
-extension T {
-    static let j = S.i + T.i
-    static let k = { T.j }()
-}
-
-
class `Self` {
-    static let i = 0
-    func f() -> Int { Self.i }
-}
-
-

Triggering Examples

-
final class CheckCellView: NSTableCellView {
-    @IBOutlet var checkButton: NSButton!
-
-    override func awakeFromNib() {
-    checkButton.action = #selector(↓CheckCellView.check(_:))
-    }
-
-    @objc func check(_ button: AnyObject?) {}
-}
-
-
class C {
-    static let i = 1
-    var j: Int {
-        let ii = ↓C.i
-        return ii
-    }
-}
-
-
class C {
-    func f() {
-        _ = [↓C]()
-        _ = [Int: ↓C]()
-    }
-}
-
-
struct S {
-    let j: Int
-    static let i = 1
-    static func f() -> Int { ↓S.i }
-    func g() -> Any { ↓S.self }
-    func h() -> ↓S { ↓S(j: 2) }
-    func i() -> KeyPath<↓S, Int> { \↓S.j }
-    func j(@Wrap(-↓S.i, ↓S.i) n: Int = ↓S.i) {}
-}
-
-
struct S {
-    struct T {
-        static let i = 3
-    }
-    struct R {
-        static let j = S.T.i
-    }
-    static let h = ↓S.T.i + ↓S.R.j
-}
-
-
enum E {
-    case A
-    static func f() -> ↓E { ↓E.A }
-    static func g() -> ↓E { ↓E.f() }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html deleted file mode 100644 index 3718d0d60..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - prefer_self_type_over_type_of_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self Type Over Type of Self

- -

Prefer Self over type(of: self) when accessing properties or calling methods

- -
    -
  • Identifier: prefer_self_type_over_type_of_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-    func bar() {
-        Self.baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(Self.baz)
-    }
-}
-
-
class A {
-    func foo(param: B) {
-        type(of: param).bar()
-    }
-}
-
-
class A {
-    func foo() {
-        print(type(of: self))
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    func bar() {
-        ↓type(of: self).baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓type(of: self).baz)
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓Swift.type(of: self).baz)
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_type_checking.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_type_checking.html deleted file mode 100644 index a5fc9c7fe..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_type_checking.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - prefer_type_checking Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Type Checking

- -

Prefer a is X to a as? X != nil

- -
    -
  • Identifier: prefer_type_checking
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = bar as? Foo
-
-
bar is Foo
-
-
2*x is X
-
-
if foo is Bar {
-    doSomeThing()
-}
-
-
if let bar = foo as? Bar {
-    foo.run()
-}
-
-
bar as Foo != nil
-
-
nil != bar as Foo
-
-
bar as Foo? != nil
-
-
bar as? Foo? != nil
-
-

Triggering Examples

-
bar ↓as? Foo != nil
-
-
2*x as? X != nil
-
-
if foo ↓as? Bar != nil {
-    doSomeThing()
-}
-
-
nil != bar ↓as? Foo
-
-
nil != 2*x ↓as? X
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html deleted file mode 100644 index 49e6994d0..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - prefer_zero_over_explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Zero Over Explicit Init

- -

Prefer .zero over explicit init with zero parameters (e.g. CGPoint(x: 0, y: 0))

- -
    -
  • Identifier: prefer_zero_over_explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
CGRect(x: 0, y: 0, width: 0, height: 1)
-
-
CGPoint(x: 0, y: -1)
-
-
CGSize(width: 2, height: 4)
-
-
CGVector(dx: -5, dy: 0)
-
-
UIEdgeInsets(top: 0, left: 1, bottom: 0, right: 1)
-
-

Triggering Examples

-
↓CGPoint(x: 0, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0.000)
-
-
↓CGRect(x: 0, y: 0, width: 0, height: 0)
-
-
↓CGSize(width: 0, height: 0)
-
-
↓CGVector(dx: 0, dy: 0)
-
-
↓UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html deleted file mode 100644 index 0068f9dab..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - prefixed_toplevel_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefixed Top-Level Constant

- -

Top-level constants should be prefixed by k

- -
    -
  • Identifier: prefixed_toplevel_constant
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only_private - -false -
  • -
-

Non Triggering Examples

-
private let kFoo = 20.0
-
-
public let kFoo = false
-
-
internal let kFoo = "Foo"
-
-
let kFoo = true
-
-
//
-// only_private: true
-//
-
-let Foo = true
-
-
-
struct Foo {
-    let bar = 20.0
-}
-
-
private var foo = 20.0
-
-
public var foo = false
-
-
internal var foo = "Foo"
-
-
var foo = true
-
-
var foo = true, bar = true
-
-
var foo = true, let kFoo = true
-
-
let
-    kFoo = true
-
-
var foo: Int {
-    return a + b
-}
-
-
let kFoo = {
-    return a + b
-}()
-
-
var foo: String {
-    let bar = ""
-    return bar
-}
-
-
if condition() {
-    let result = somethingElse()
-    print(result)
-    exit()
-}
-
-
[1, 2, 3, 1000, 4000].forEach { number in
-    let isSmall = number < 10
-    if isSmall {
-        print("\(number) is a small number")
-    }
-}
-
-

Triggering Examples

-
private let ↓Foo = 20.0
-
-
public let ↓Foo = false
-
-
internal let ↓Foo = "Foo"
-
-
let ↓Foo = true
-
-
let ↓foo = 2, ↓bar = true
-
-
let
-    ↓foo = true
-
-
let ↓foo = {
-    return a + b
-}()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_action.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_action.html deleted file mode 100644 index 9b699a9b7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_action.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - private_action Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Actions

- -

IBActions should be private

- -
    -
  • Identifier: private_action
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
class Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
private extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-
fileprivate extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-

Triggering Examples

-
class Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
class Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
class Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
extension Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
extension Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
public extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
internal extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_outlet.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_outlet.html deleted file mode 100644 index 712909e88..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_outlet.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - private_outlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Outlets

- -

IBOutlets should be private to avoid leaking UIKit to higher layers

- -
    -
  • Identifier: private_outlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allow_private_set - -false -
  • -
-

Non Triggering Examples

-
class Foo { @IBOutlet private var label: UILabel? }
-
-
class Foo { @IBOutlet private var label: UILabel! }
-
-
class Foo { var notAnOutlet: UILabel }
-
-
class Foo { @IBOutlet weak private var label: UILabel? }
-
-
class Foo { @IBOutlet private weak var label: UILabel? }
-
-
class Foo { @IBOutlet fileprivate weak var label: UILabel? }
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet private(set) var label: UILabel? }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet private(set) var label: UILabel! }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet weak private(set) var label: UILabel? }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet private(set) weak var label: UILabel? }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet fileprivate(set) weak var label: UILabel? }
-
-
-

Triggering Examples

-
class Foo { @IBOutlet ↓var label: UILabel? }
-
-
class Foo { @IBOutlet ↓var label: UILabel! }
-
-
class Foo { @IBOutlet private(set) ↓var label: UILabel? }
-
-
class Foo { @IBOutlet fileprivate(set) ↓var label: UILabel? }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_over_fileprivate.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_over_fileprivate.html deleted file mode 100644 index 1aeb1a686..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_over_fileprivate.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - private_over_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private over Fileprivate

- -

Prefer private over fileprivate declarations

- -
    -
  • Identifier: private_over_fileprivate
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -validate_extensions - -false -
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public protocol P {}
-
-
open extension 
- String {}
-
-
internal extension String {}
-
-
package typealias P = Int
-
-
extension String {
-  fileprivate func Something(){}
-}
-
-
class MyClass {
-  fileprivate let myInt = 4
-}
-
-
actor MyActor {
-  fileprivate let myInt = 4
-}
-
-
class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
-
struct Outer {
-  struct Inter {
-    fileprivate struct Inner {}
-  }
-}
-
-

Triggering Examples

-
↓fileprivate enum MyEnum {}
-
-
↓fileprivate class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
-
↓fileprivate actor MyActor {
-  fileprivate let myInt = 4
-}
-
-
    ↓fileprivate func f() {}
-    ↓fileprivate var x = 0
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_subject.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_subject.html deleted file mode 100644 index 3d6da6002..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_subject.html +++ /dev/null @@ -1,574 +0,0 @@ - - - - private_subject Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Combine Subject

- -

Combine Subject should be private

- -
    -
  • Identifier: private_subject
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: CurrentValueSubject<String, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<String, Never> = .init("toto")
-}
-
-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    private let goodSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject:
-        PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    init() {
-        let goodSubject = CurrentValueSubject<Bool, Never>(true)
-        self.goosSubject = goodSubject
-    }
-}
-
-
func foo() {
-    let goodSubject = PassthroughSubject<Bool, Never>(true)
-}
-
-

Triggering Examples

-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let goodSubject: PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    let goodSubject: CurrentValueSubject<String, Never> = .init("toto")
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject:
-        PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_swiftui_state.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_swiftui_state.html deleted file mode 100644 index a4999b2dc..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_swiftui_state.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - private_swiftui_state Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private SwiftUI State Properties

- -

SwiftUI state properties should be private

- -
    -
  • Identifier: private_swiftui_state
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct MyApp: App {
-    @State private var isPlaying: Bool = false
-}
-
-
struct MyScene: Scene {
-    @State private var isPlaying: Bool = false
-}
-
-
struct CofntentView: View {
-    @State private var isPlaying: Bool = false
-}
-
-
struct ContentView: View {
-    @State private var isPlaying: Bool = false
-
-    struct InnerView: View {
-        @State private var showsIndicator: Bool = false
-    }
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State private var isPlaying: Bool = false
-    }
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State private var isPlaying: Bool = false
-    }
-
-    @State var nonTriggeringState: Bool = false
-}
-
-
struct ContentView: View {
-    var s: Int {
-        @State
-        var s: Int = 3
-        return s
-    }
-
-    var body: some View { Text("") }
-}
-
-
struct ContentView: View {
-    var isPlaying = false
-}
-
-
struct MyApp: App {
-    @StateObject private var model = DataModel()
-}
-
-
struct MyScene: Scene {
-    @StateObject private var model = DataModel()
-}
-
-
struct ContentView: View {
-    @StateObject private var model = DataModel()
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @StateObject private var dataModel = DataModel()
-    }
-
-    @StateObject var nonTriggeringObject = MyModel()
-}
-
-
struct Foo {
-    @State var bar = false
-}
-
-
class Foo: ObservableObject {
-    @State var bar = Bar()
-}
-
-
extension MyObject {
-    struct ContentView: View {
-        @State private var isPlaying: Bool = false
-    }
-}
-
-
actor ContentView: View {
-    @State private var isPlaying: Bool = false
-}
-
-

Triggering Examples

-
struct MyApp: App {
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct MyScene: Scene {
-    @State ↓public var isPlaying: Bool = false
-}
-
-
struct ContentView: View {
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct ContentView: View {
-    struct InnerView: View {
-        @State private var showsIndicator: Bool = false
-    }
-
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State ↓var isPlaying: Bool = false
-    }
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State ↓var isPlaying: Bool = false
-    }
-
-    @State var isPlaying: Bool = false
-}
-
-
final class ContentView: View {
-    @State ↓var isPlaying: Bool = false
-}
-
-
extension MyObject {
-    struct ContentView: View {
-        @State ↓var isPlaying: Bool = false
-    }
-}
-
-
actor ContentView: View {
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct MyApp: App {
-    @StateObject ↓var model = DataModel()
-}
-
-
struct MyScene: Scene {
-    @StateObject ↓var model = DataModel()
-}
-
-
struct ContentView: View {
-    @StateObject ↓var model = DataModel()
-}
-
-
struct ContentView: View {
-    @State ↓private(set) var isPlaying = false
-
-
struct ContentView: View {
-    @State ↓fileprivate(set) public var isPlaying = false
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_unit_test.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_unit_test.html deleted file mode 100644 index efd6099bd..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/private_unit_test.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - private_unit_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Unit Test

- -

Unit tests marked private are silently skipped

- -
    -
  • Identifier: private_unit_test
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
    -regex - -“XCTestCase” -
  • -
-

Non Triggering Examples

-
class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
@objc private class FooTest: XCTestCase {
-    @objc private func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
private class Foo: NSObject {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
private class Foo {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    private func test1(param: Int) {}
-    private func test2() -> String { "" }
-    private func atest() {}
-    private static func test3() {}
-}
-
-

Triggering Examples

-
private ↓class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private func test4() {}
-}
-
-
class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private ↓func test4() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private ↓func test4() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private ↓func test4() {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_interface_builder.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_interface_builder.html deleted file mode 100644 index 68fe72d3e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_interface_builder.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - prohibited_interface_builder Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited Interface Builder

- -

Creating views using Interface Builder should be avoided

- -
    -
  • Identifier: prohibited_interface_builder
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @objc func buttonTapped(_ sender: UIButton) {}
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBAction ↓func buttonTapped(_ sender: UIButton) {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_super_call.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_super_call.html deleted file mode 100644 index 642f95acf..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/prohibited_super_call.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - prohibited_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited Calls to Super

- -

Some methods should not call super.

- -
    -
  • Identifier: prohibited_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
    -included - -[“*”] -
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class NSView {
-    func updateLayer() {
-        self.method1()
-    }
-}
-
-
public class FileProviderExtension: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {
-        guard let identifier = persistentIdentifierForItem(at: url) else {
-            completionHandler(NSFileProviderError(.noSuchItem))
-            return
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {↓
-        super.loadView()
-    }
-}
-
-
class VC: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {↓
-        self.method1()
-        super.providePlaceholder(at:url, completionHandler: completionHandler)
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        self.method1()
-        super.updateLayer()
-        self.method2()
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        defer {
-            super.updateLayer()
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/protocol_property_accessors_order.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/protocol_property_accessors_order.html deleted file mode 100644 index 8a61fb4f1..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/protocol_property_accessors_order.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - protocol_property_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Protocol Property Accessors Order

- -

When declaring properties in protocols, the order of accessors should be get set

- -
    -
  • Identifier: protocol_property_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
protocol Foo {
- var bar: String { get set }
- }
-
-
protocol Foo {
- var bar: String { get }
- }
-
-
protocol Foo {
- var bar: String { set }
- }
-
-

Triggering Examples

-
protocol Foo {
- var bar: String { ↓set get }
- }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_call.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_call.html deleted file mode 100644 index 738d6a277..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_call.html +++ /dev/null @@ -1,704 +0,0 @@ - - - - quick_discouraged_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Call

- -

Discouraged call inside ‘describe’ and/or ‘context’ block.

- -
    -
  • Identifier: quick_discouraged_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class TotoTests {
-   override func spec() {
-       describe("foo") {
-           let foo = Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           afterEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           describe("bar") {
-           }
-           context("bar") {
-           }
-           it("bar") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           justBeforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           aroundEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-          itBehavesLike("bar")
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           it("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           xit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           fit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xitBehavesLike("foo")
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override static func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               let foo = ↓Foo()
-           }
-           context("bar") {
-               let foo = ↓Foo()
-               ↓foo.bar()
-               it("does something") {
-                   let foo = Foo()
-                   foo.toto()
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               context("foo") {
-                   beforeEach {
-                       let foo = Foo()
-                       foo.toto()
-                   }
-                   it("bar") {
-                   }
-                   context("foo") {
-                       let foo = ↓Foo()
-                   }
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           let foo = ↓Foo()
-       }
-       fdescribe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           let foo = ↓Foo()
-       }
-       fcontext("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpecSubclass {
-   override func spec() {
-       xcontext("foo") {
-           let foo = ↓Foo()
-       }
-       fcontext("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html deleted file mode 100644 index 60f41ca7a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - quick_discouraged_focused_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Focused Test

- -

Non-focused tests won’t run as long as this test is focused

- -
    -
  • Identifier: quick_discouraged_focused_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓fit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpecSubclass {
-   override func spec() {
-       ↓fitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html deleted file mode 100644 index 77ae59b2f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - quick_discouraged_pending_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Pending Test

- -

This test won’t run as long as it’s marked pending

- -
    -
  • Identifier: quick_discouraged_pending_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓xit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓pending("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpecSubclass {
-   override func spec() {
-       ↓xitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html deleted file mode 100644 index 1b152b1c3..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - raw_value_for_camel_cased_codable_enum Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Raw Value for Camel Cased Codable Enum

- -

Camel cased cases of Codable String enums should have raw values

- -
    -
  • Identifier: raw_value_for_camel_cased_codable_enum
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Numbers: Codable {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int, Codable {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double, Codable {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String, Codable {
-  case one = "one"
-  case two = "two"
-}
-
-
enum Status: String, Codable {
-    case OK, ACCEPTABLE
-}
-
-
enum Status: String, Codable {
-    case ok
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: Int, Codable {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = -1
-}
-
-

Triggering Examples

-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Decodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Encodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_boolean.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_boolean.html deleted file mode 100644 index 1da51bd07..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_boolean.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - reduce_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce Boolean

- -

Prefer using .allSatisfy() or .contains() over reduce(true) or reduce(false).

- -
    -
  • Identifier: reduce_boolean
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
nums.reduce(0) { $0.0 + $0.1 }
-
-
nums.reduce(0.0) { $0.0 + $0.1 }
-
-
nums.reduce(initial: true) { $0.0 && $0.1 == 3 }
-
-

Triggering Examples

-
let allNines = nums.↓reduce(true) { $0.0 && $0.1 == 9 }
-
-
let anyNines = nums.↓reduce(false) { $0.0 || $0.1 == 9 }
-
-
let allValid = validators.↓reduce(true) { $0 && $1(input) }
-
-
let anyValid = validators.↓reduce(false) { $0 || $1(input) }
-
-
let allNines = nums.↓reduce(true, { $0.0 && $0.1 == 9 })
-
-
let anyNines = nums.↓reduce(false, { $0.0 || $0.1 == 9 })
-
-
let allValid = validators.↓reduce(true, { $0 && $1(input) })
-
-
let anyValid = validators.↓reduce(false, { $0 || $1(input) })
-
-
nums.reduce(into: true) { (r: inout Bool, s) in r = r && (s == 3) }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_into.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_into.html deleted file mode 100644 index e109b9b3b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/reduce_into.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - reduce_into Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce into

- -

Prefer reduce(into:_:) over reduce(_:_:) for copy-on-write types

- -
    -
  • Identifier: reduce_into
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = values.reduce(into: "abc") { $0 += "\($1)" }
-
-
values.reduce(into: Array<Int>()) { result, value in
-    result.append(value)
-}
-
-
let rows = violations.enumerated().reduce(into: "") { rows, indexAndViolation in
-    rows.append(generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1))
-}
-
-
zip(group, group.dropFirst()).reduce(into: []) { result, pair in
-    result.append(pair.0 + pair.1)
-}
-
-
let foo = values.reduce(into: [String: Int]()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: Dictionary<String, Int>.init()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: [Int](repeating: 0, count: 10)) { result, value in
-    result.append(value)
-}
-
-
let foo = values.reduce(MyClass()) { result, value in
-    result.handleValue(value)
-    return result
-}
-
-

Triggering Examples

-
let bar = values.↓reduce("abc") { $0 + "\($1)" }
-
-
values.↓reduce(Array<Int>()) { result, value in
-    result += [value]
-}
-
-
[1, 2, 3].↓reduce(Set<Int>()) { acc, value in
-    var result = acc
-    result.insert(value)
-    return result
-}
-
-
let rows = violations.enumerated().↓reduce("") { rows, indexAndViolation in
-    return rows + generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1)
-}
-
-
zip(group, group.dropFirst()).↓reduce([]) { result, pair in
-    result + [pair.0 + pair.1]
-}
-
-
let foo = values.↓reduce([String: Int]()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce(Dictionary<String, Int>.init()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce([Int](repeating: 0, count: 10)) { result, value in
-    return result + [value]
-}
-
-
extension Data {
-    var hexString: String {
-        return ↓reduce("") { (output, byte) -> String in
-            output + String(format: "%02x", byte)
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_discardable_let.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_discardable_let.html deleted file mode 100644 index 9443ee46f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_discardable_let.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - redundant_discardable_let Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Discardable Let

- -

Prefer _ = foo() over let _ = foo() when discarding a result from a function

- -
    -
  • Identifier: redundant_discardable_let
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
_ = foo()
-
-
if let _ = foo() { }
-
-
guard let _ = foo() else { return }
-
-
let _: ExplicitType = foo()
-
-
while let _ = SplashStyle(rawValue: maxValue) { maxValue += 1 }
-
-
async let _ = await foo()
-
-

Triggering Examples

-
↓let _ = foo()
-
-
if _ = foo() { ↓let _ = bar() }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_nil_coalescing.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_nil_coalescing.html deleted file mode 100644 index d18897e10..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_nil_coalescing.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - redundant_nil_coalescing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Nil Coalescing

- -

nil coalescing operator is only evaluated if the lhs is nil, coalescing operator with nil as rhs is redundant

- -
    -
  • Identifier: redundant_nil_coalescing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var myVar: Int?; myVar ?? 0
-
-

Triggering Examples

-
var myVar: Int? = nil; myVar ↓?? nil
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_objc_attribute.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_objc_attribute.html deleted file mode 100644 index 4bd0d9ce5..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_objc_attribute.html +++ /dev/null @@ -1,602 +0,0 @@ - - - - redundant_objc_attribute Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant @objc Attribute

- -

Objective-C attribute (@objc) is redundant in declaration

- -
    -
  • Identifier: redundant_objc_attribute
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
@objc private var foo: String? {}
-
-
@IBInspectable private var foo: String? {}
-
-
@objc private func foo(_ sender: Any) {}
-
-
@IBAction private func foo(_ sender: Any) {}
-
-
@GKInspectable private var foo: String! {}
-
-
private @GKInspectable var foo: String! {}
-
-
@NSManaged var foo: String!
-
-
@objc @NSCopying var foo: String!
-
-
@objcMembers
-class Foo {
-    var bar: Any?
-    @objc
-    class Bar: NSObject {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    var bar: Int {
-        return 0
-    }
-}
-
-
extension Foo {
-    @objc
-    var bar: Int { return 0 }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    var bar: Int { return 0 }
-}
-
-
@IBDesignable
-extension Foo {
-    @objc
-    var bar: Int { return 0 }
-    var fooBar: Int { return 1 }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc
-    private var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo {
-    @objc
-    class Bar: NSObject {
-        @objc var foo: Any?
-    }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc class Bar {}
-}
-
-
extension BlockEditorSettings {
-    @objc(addElementsObject:)
-    @NSManaged public func addToElements(_ value: BlockEditorSettingElement)
-}
-
-
@objcMembers
-public class Foo: NSObject {
-    @objc
-    private func handler(_ notification: Notification) {
-    }
-
-    func registerForNotifications() {
-        NotificationCenter.default.addObserver(self, selector: #selector(handler(_:)), name: nil, object: nil)
-    }
-}
-
-
class Foo: NSObject { }
-
-@objc extension Foo {
-    @objc enum Bar: Int {
-       case bar
-    }
-
-    var bar: Bar { .bar }
-}
-
-
class Foo: NSObject { }
-
-@objc extension Foo {
-    @objc private enum Baz: Int {
-      case baz
-    }
-
-    private var baz: Baz { .baz }
-}
-
-
@objcMembers
-internal class Foo: NSObject {
-    @objc
-    private var baz: Int = 1
-
-    var x: Any? {
-        value(forKey: "baz")
-    }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc enum Bar: Int {
-       case bar
-    }
-}
-
-

Triggering Examples

-
↓@objc @IBInspectable private var foo: String? {}
-
-
@IBInspectable ↓@objc private var foo: String? {}
-
-
↓@objc @IBAction private func foo(_ sender: Any) {}
-
-
@IBAction ↓@objc private func foo(_ sender: Any) {}
-
-
↓@objc @GKInspectable private var foo: String! {}
-
-
@GKInspectable ↓@objc private var foo: String! {}
-
-
↓@objc @NSManaged private var foo: String!
-
-
@NSManaged ↓@objc private var foo: String!
-
-
↓@objc @IBDesignable class Foo {}
-
-
@objcMembers
-class Foo: NSObject {
-    ↓@objc var bar: Any?
-}
-
-
@objcMembers
-class Foo: NSObject {
-    ↓@objc var bar: Any?
-    ↓@objc var foo: Any?
-    @objc
-    class Bar {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objcMembers
-    class Bar: NSObject {
-        ↓@objc var foo: Any
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    private var bar: Int {
-        return 0
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_optional_initialization.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_optional_initialization.html deleted file mode 100644 index c7475789c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_optional_initialization.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - redundant_optional_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Optional Initialization

- -

Initializing an optional variable with nil is redundant

- -
    -
  • Identifier: redundant_optional_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var myVar: Int?
-
-
let myVar: Int? = nil
-
-
var myVar: Int? = 0
-
-
func foo(bar: Int? = 0) { }
-
-
var myVar: Optional<Int>
-
-
let myVar: Optional<Int> = nil
-
-
var myVar: Optional<Int> = 0
-
-
var foo: Int? {
-  if bar != nil { }
-  return 0
-}
-
-
var foo: Int? = {
-  if bar != nil { }
-  return 0
-}()
-
-
lazy var test: Int? = nil
-
-
func funcName() {
-  var myVar: String?
-}
-
-
func funcName() {
-  let myVar: String? = nil
-}
-
-

Triggering Examples

-
var myVar: Int?↓ = nil
-
-
var myVar: Optional<Int>↓ = nil
-
-
var myVar: Int?↓=nil
-
-
var myVar: Optional<Int>↓=nil
-)
-
-
var myVar: String?↓ = nil {
-  didSet { print("didSet") }
-}
-
-
func funcName() {
-    var myVar: String?↓ = nil
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_self_in_closure.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_self_in_closure.html deleted file mode 100644 index 44e021d32..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_self_in_closure.html +++ /dev/null @@ -1,581 +0,0 @@ - - - - redundant_self_in_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Self in Closure

- -

Explicit use of ‘self’ is not required

- -
    -
  • Identifier: redundant_self_in_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct S {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f {
-            x = 1
-            f { x = 1 }
-            g()
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [weak self] in
-            self?.x = 1
-            self?.g()
-            guard let self = self ?? C() else { return }
-            self?.x = 1
-        }
-        C().f { self.x = 1 }
-        f { [weak self] in if let self { x = 1 } }
-    }
-}
-
-
struct S {
-    var x = 0, error = 0, exception = 0
-    var y: Int?, z: Int?, u: Int, v: Int?, w: Int?
-    func f(_ work: @escaping (Int) -> Void) { work() }
-    func g(x: Int) {
-        f { u in
-            self.x = x
-            let x = 1
-            self.x = 2
-            if let y, let v {
-                self.y = 3
-                self.v = 1
-            }
-            guard let z else {
-                let v = 4
-                self.x = 5
-                self.v = 6
-                return
-            }
-            self.z = 7
-            while let v { self.v = 8 }
-            for w in [Int]() { self.w = 9 }
-            self.u = u
-            do {} catch { self.error = 10 }
-            do {} catch let exception { self.exception = 11 }
-        }
-    }
-}
-
-
enum E {
-    case a(Int)
-    case b(Int, Int)
-}
-struct S {
-    var x: E = .a(3), y: Int, z: Int
-    func f(_ work: @escaping () -> Void) { work() }
-    func g(x: Int) {
-        f {
-            switch x {
-            case let .a(y):
-                self.y = 1
-            case .b(let y, var z):
-                self.y = 2
-                self.z = 3
-            }
-        }
-    }
-}
-
-

Triggering Examples

-
struct S {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f {
-            ↓self.x = 1
-            if ↓self.x == 1 { ↓self.g() }
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func g() {
-        {
-            ↓self.x = 1
-            ↓self.g()
-        }()
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [self] in
-            ↓self.x = 1
-            ↓self.g()
-            f { self.x = 1 }
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [unowned self] in ↓self.x = 1 }
-        f { [self = self] in ↓self.x = 1 }
-        f { [s = self] in s.x = 1 }
-    }
-}
-
-
struct S {
-    var x = 0
-    var y: Int?, z: Int?, v: Int?, w: Int?
-    func f(_ work: @escaping () -> Void) { work() }
-    func g(w: Int, _ v: Int) {
-        f {
-            self.w = 1
-            ↓self.x = 2
-            if let y { ↓self.x = 3 }
-            else { ↓self.y = 3 }
-            guard let z else {
-                ↓self.z = 4
-                ↓self.x = 5
-                return
-            }
-            ↓self.y = 6
-            while let y { ↓self.x = 7 }
-            for y in [Int]() { ↓self.x = 8 }
-            self.v = 9
-            do {
-                let x = 10
-                self.x = 11
-            }
-            ↓self.x = 12
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [weak self] in
-            self?.x = 1
-            guard let self else { return }
-            ↓self.x = 1
-        }
-        f { [weak self] in
-            self?.x = 1
-            if let self = self else { ↓self.x = 1 }
-            self?.x = 1
-        }
-        f { [weak self] in
-            self?.x = 1
-            while let self else { ↓self.x = 1 }
-            self?.x = 1
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_set_access_control.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_set_access_control.html deleted file mode 100644 index 390b37e85..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_set_access_control.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - redundant_set_access_control Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Access Control for Setter

- -

Property setter access level shouldn’t be explicit if it’s the same as the variable access level

- -
    -
  • Identifier: redundant_set_access_control
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
private(set) public var foo: Int
-
-
public let foo: Int
-
-
public var foo: Int
-
-
var foo: Int
-
-
private final class A {
-  private(set) var value: Int
-}
-
-
extension Color {
-    public internal(set) static var someColor = Color.anotherColor
-}
-
-

Triggering Examples

-
↓private(set) private var foo: Int
-
-
↓fileprivate(set) fileprivate var foo: Int
-
-
↓internal(set) internal var foo: Int
-
-
↓public(set) public var foo: Int
-
-
open class Foo {
-  ↓open(set) open var bar: Int
-}
-
-
class A {
-  ↓internal(set) var value: Int
-}
-
-
internal class A {
-  ↓internal(set) var value: Int
-}
-
-
fileprivate class A {
-  ↓fileprivate(set) var value: Int
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_string_enum_value.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_string_enum_value.html deleted file mode 100644 index 19e0c4f41..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_string_enum_value.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - redundant_string_enum_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant String Enum Value

- -

String enum values can be omitted when they are equal to the enumcase name

- -
    -
  • Identifier: redundant_string_enum_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Numbers: String {
-  case one
-  case two
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "TWO"
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "two"
-}
-
-
enum Numbers: String {
-  case one, two
-}
-
-

Triggering Examples

-
enum Numbers: String {
-  case one = ↓"one"
-  case two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one = ↓"one", two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one, two = ↓"two"
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_type_annotation.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_type_annotation.html deleted file mode 100644 index 673b6061d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_type_annotation.html +++ /dev/null @@ -1,641 +0,0 @@ - - - - redundant_type_annotation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Type Annotation

- -

Variables should not have redundant type annotation

- -
    -
  • Identifier: redundant_type_annotation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_attributes - -[“IBInspectable”] -
    -ignore_properties - -false -
    -consider_default_literal_types_redundant - -false -
  • -
-

Non Triggering Examples

-
var url = URL()
-
-
var url: CustomStringConvertible = URL()
-
-
var one: Int = 1, two: Int = 2, three: Int
-
-
guard let url = URL() else { return }
-
-
if let url = URL() { return }
-
-
let alphanumerics = CharacterSet.alphanumerics
-
-
var set: Set<Int> = Set([])
-
-
var set: Set<Int> = Set.init([])
-
-
var set = Set<Int>([])
-
-
var set = Set<Int>.init([])
-
-
guard var set: Set<Int> = Set([]) else { return }
-
-
if var set: Set<Int> = Set.init([]) { return }
-
-
guard var set = Set<Int>([]) else { return }
-
-
if var set = Set<Int>.init([]) { return }
-
-
var one: A<T> = B()
-
-
var one: A = B<T>()
-
-
var one: A<T> = B<T>()
-
-
let a = A.b.c.d
-
-
let a: B = A.b.c.d
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction: Direction = .up
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction = Direction.up
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-@IgnoreMe var a: Int = Int(5)
-
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-var a: Int {
-    @IgnoreMe let i: Int = Int(1)
-    return i
-}
-
-
-
var bol: Bool = true
-
-
var dbl: Double = 0.0
-
-
var int: Int = 0
-
-
var str: String = "str"
-
-
//
-// ignore_properties: true
-//
-
-struct Foo {
-    var url: URL = URL()
-    let myVar: Int? = 0, s: String = ""
-}
-
-
-

Triggering Examples

-
var url↓:URL=URL()
-
-
var url↓:URL = URL(string: "")
-
-
var url↓: URL = URL()
-
-
let url↓: URL = URL()
-
-
lazy var url↓: URL = URL()
-
-
let url↓: URL = URL()!
-
-
var one: Int = 1, two↓: Int = Int(5), three: Int
-
-
guard let url↓: URL = URL() else { return }
-
-
if let url↓: URL = URL() { return }
-
-
let alphanumerics↓: CharacterSet = CharacterSet.alphanumerics
-
-
var set↓: Set<Int> = Set<Int>([])
-
-
var set↓: Set<Int> = Set<Int>.init([])
-
-
var set↓: Set = Set<Int>([])
-
-
var set↓: Set = Set<Int>.init([])
-
-
guard var set↓: Set = Set<Int>([]) else { return }
-
-
if var set↓: Set = Set<Int>.init([]) { return }
-
-
guard var set↓: Set<Int> = Set<Int>([]) else { return }
-
-
if var set↓: Set<Int> = Set<Int>.init([]) { return }
-
-
var set↓: Set = Set<Int>([]), otherSet: Set<Int>
-
-
var num↓: Int = Int.random(0..<10)
-
-
let a↓: A = A.b.c.d
-
-
let a↓: A = A.f().b
-
-
class ViewController: UIViewController {
-  func someMethod() {
-    let myVar↓: Int = Int(5)
-  }
-}
-
-
//
-// ignore_properties: true
-//
-
-class ViewController: UIViewController {
-  func someMethod() {
-    let myVar↓: Int = Int(5)
-  }
-}
-
-
-
let a↓: [Int] = [Int]()
-
-
let a↓: A.B = A.B()
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction↓: Direction = Direction.up
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-@DontIgnoreMe var a↓: Int = Int(5)
-
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-@IgnoreMe
-var a: Int {
-    let i↓: Int = Int(1)
-    return i
-}
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var bol↓: Bool = true
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var dbl↓: Double = 0.0
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var int↓: Int = 0
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var str↓: String = "str"
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_void_return.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_void_return.html deleted file mode 100644 index 0b59625ae..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/redundant_void_return.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - redundant_void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Void Return

- -

Returning Void in a function declaration is redundant

- -
    -
  • Identifier: redundant_void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -include_closures - -true -
  • -
-

Non Triggering Examples

-
func foo() {}
-
-
func foo() -> Int {}
-
-
func foo() -> Int -> Void {}
-
-
func foo() -> VoidResponse
-
-
let foo: (Int) -> Void
-
-
func foo() -> Int -> () {}
-
-
let foo: (Int) -> ()
-
-
func foo() -> ()?
-
-
func foo() -> ()!
-
-
func foo() -> Void?
-
-
func foo() -> Void!
-
-
struct A {
-    subscript(key: String) {
-        print(key)
-    }
-}
-
-
//
-// include_closures: false
-//
-
-doSomething { arg -> Void in
-    print(arg)
-}
-
-
-

Triggering Examples

-
func foo()↓ -> Void {}
-
-
protocol Foo {
-  func foo()↓ -> Void
-}
-
-
func foo()↓ -> () {}
-
-
func foo()↓ -> ( ) {}
-
-
protocol Foo {
-  func foo()↓ -> ()
-}
-
-
doSomething { arg↓ -> () in
-    print(arg)
-}
-
-
doSomething { arg↓ -> Void in
-    print(arg)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_deinit.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_deinit.html deleted file mode 100644 index 7814f9eec..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_deinit.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - required_deinit Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Deinit

- -

Classes should have an explicit deinit method

- -
    -
  • Identifier: required_deinit
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Apple {
-    deinit { }
-}
-
-
enum Banana { }
-
-
protocol Cherry { }
-
-
struct Damson { }
-
-
class Outer {
-    deinit { print("Deinit Outer") }
-    class Inner {
-        deinit { print("Deinit Inner") }
-    }
-}
-
-

Triggering Examples

-
↓class Apple { }
-
-
↓class Banana: NSObject, Equatable { }
-
-
↓class Cherry {
-    // deinit { }
-}
-
-
↓class Damson {
-    func deinitialize() { }
-}
-
-
class Outer {
-    func hello() -> String { return "outer" }
-    deinit { }
-    ↓class Inner {
-        func hello() -> String { return "inner" }
-    }
-}
-
-
↓class Outer {
-    func hello() -> String { return "outer" }
-    class Inner {
-        func hello() -> String { return "inner" }
-        deinit { }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_enum_case.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_enum_case.html deleted file mode 100644 index 0a56dbc4f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/required_enum_case.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - required_enum_case Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Enum Case

- -

Enums conforming to a specified protocol must implement a specific case(s).

- -
    -
  • Identifier: required_enum_case
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -{Protocol Name} - - - - - - - - - - - - - - - -
    KeyValue
    -{Case Name 1} - -{warning|error} -
    -{Case Name 2} - -{warning|error} -
    -
  • -
-

Non Triggering Examples

-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected(error: Error)
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected(error: Error)
-}
-
-
-

Triggering Examples

-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_arrow_whitespace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_arrow_whitespace.html deleted file mode 100644 index 3afc43f92..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_arrow_whitespace.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - return_arrow_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Returning Whitespace

- -

Return arrow and return type should be separated by a single space or on a separate line

- -
    -
  • Identifier: return_arrow_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func abc() -> Int {}
-
-
func abc() -> [Int] {}
-
-
func abc() -> (Int, Int) {}
-
-
var abc = {(param: Int) -> Void in }
-
-
func abc() ->
-    Int {}
-
-
func abc()
-    -> Int {}
-
-
func reallyLongFunctionMethods<T>(withParam1: Int, param2: String, param3: Bool) where T: AGenericConstraint
-    -> Int {
-    return 1
-}
-
-
typealias SuccessBlock = ((Data) -> Void)
-
-

Triggering Examples

-
func abc()↓->Int {}
-
-
func abc()↓->[Int] {}
-
-
func abc()↓->(Int, Int) {}
-
-
func abc()↓-> Int {}
-
-
func abc()↓->   Int {}
-
-
func abc()↓ ->Int {}
-
-
func abc()↓  ->  Int {}
-
-
var abc = {(param: Int)↓ ->Bool in }
-
-
var abc = {(param: Int)↓->Bool in }
-
-
typealias SuccessBlock = ((Data)↓->Void)
-
-
func abc()
-  ↓->  Int {}
-
-
func abc()
- ↓->  Int {}
-
-
func abc()↓  ->
-  Int {}
-
-
func abc()↓  ->
-Int {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_value_from_void_function.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_value_from_void_function.html deleted file mode 100644 index b56bc6d1f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/return_value_from_void_function.html +++ /dev/null @@ -1,626 +0,0 @@ - - - - return_value_from_void_function Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Return Value from Void Function

- -

Returning values from Void functions should be avoided

- -
    -
  • Identifier: return_value_from_void_function
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo() {
-    return
-}
-
-
func foo() {
-    return /* a comment */
-}
-
-
func foo() -> Int {
-    return 1
-}
-
-
func foo() -> Void {
-    if condition {
-        return
-    }
-    bar()
-}
-
-
func foo() {
-    return;
-    bar()
-}
-
-
func test() {}
-
-
init?() {
-    guard condition else {
-        return nil
-    }
-}
-
-
init?(arg: String?) {
-    guard arg != nil else {
-        return nil
-    }
-}
-
-
func test() {
-    guard condition else {
-        return
-    }
-}
-
-
func test() -> Result<String, Error> {
-    func other() {}
-    func otherVoid() -> Void {}
-}
-
-
func test() -> Int? {
-    return nil
-}
-
-
func test() {
-    if bar {
-        print("")
-        return
-    }
-    let foo = [1, 2, 3].filter { return true }
-    return
-}
-
-
func test() {
-    guard foo else {
-        bar()
-        return
-    }
-}
-
-
func spec() {
-    var foo: Int {
-        return 0
-    }
-
-
func f() -> () { g() }
-
-
func f() { g() }
-
-
func f() { { return g() }() }
-
-
func f() {
-    func g() -> Int {
-        return 1
-    }
-}
-
-
init?() { return nil }
-
-
func f() {
-    var i: Int { return 1 }
-}
-
-

Triggering Examples

-
func foo() {
-    ↓return bar()
-}
-
-
func foo() -> () {
-    ↓return self.bar()
-}
-
-
func foo() -> Void {
-    ↓return bar()
-}
-
-
func foo() -> Void {
-    ↓return /* comment */ bar()
-}
-
-
func foo() {
-    ↓return
-    self.bar()
-}
-
-
func foo() {
-    variable += 1
-    ↓return
-    variable += 1
-}
-
-
func initThing() {
-    guard foo else {
-        ↓return print("")
-    }
-}
-
-
// Leading comment
-func test() {
-    guard condition else {
-        ↓return assertionfailure("")
-    }
-}
-
-
func test() -> Result<String, Error> {
-    func other() {
-        guard false else {
-            ↓return assertionfailure("")
-        }
-    }
-    func otherVoid() -> Void {}
-}
-
-
func test() {
-    guard conditionIsTrue else {
-        sideEffects()
-        return // comment
-    }
-    guard otherCondition else {
-        ↓return assertionfailure("")
-    }
-    differentSideEffect()
-}
-
-
func test() {
-    guard otherCondition else {
-        ↓return assertionfailure(""); // comment
-    }
-    differentSideEffect()
-}
-
-
func test() {
-  if x {
-    ↓return foo()
-  }
-  bar()
-}
-
-
func test() {
-  switch x {
-    case .a:
-      ↓return foo() // return to skip baz()
-    case .b:
-      bar()
-  }
-  baz()
-}
-
-
func test() {
-  if check {
-    if otherCheck {
-      ↓return foo()
-    }
-  }
-  bar()
-}
-
-
func test() {
-    ↓return foo()
-}
-
-
func test() {
-  ↓return foo({
-    return bar()
-  })
-}
-
-
func test() {
-  guard x else {
-    ↓return foo()
-  }
-  bar()
-}
-
-
func test() {
-  let closure: () -> () = {
-    return assert()
-  }
-  if check {
-    if otherCheck {
-      return // comments are fine
-    }
-  }
-  ↓return foo()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/rule-directory.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/rule-directory.html deleted file mode 100644 index 45a55042f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/rule-directory.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - Rule Directory Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Rule Directory

-

Default Rules

- - -

Opt-in Rules

- - -

Analyzer Rules

- - - -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/search.json b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/search.json deleted file mode 100644 index 8674ea78d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/search.json +++ /dev/null @@ -1 +0,0 @@ -{"Macros.html#/s:13SwiftLintCore16AutoConfigParseryycfm":{"name":"AutoConfigParser()","abstract":"

Macro to be attached to rule configurations. It generates the configuration parsing logic"},"Macros.html#/s:13SwiftLintCore32AcceptableByConfigurationElementyycfm":{"name":"AcceptableByConfigurationElement()","abstract":"

Macro that lets an enum with a String raw type automatically conform to AcceptableByConfigurationElement.

"},"Macros.html#/s:13SwiftLintCore0A10SyntaxRule15foldExpressions16explicitRewriterySb_Sbtcfm":{"name":"SwiftSyntaxRule(foldExpressions:explicitRewriter:)","abstract":"

Macro that adds a conformance to the SwiftSyntaxRule protocol and a default makeVisitor(file:) implementation"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV7warningSivp":{"name":"warning","abstract":"

The threshold for a violation to be a warning.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV5errorSiSgvp":{"name":"error","abstract":"

The threshold for a violation to be an error.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV7warning5errorACyxGSi_SiSgtcfc":{"name":"init(warning:error:)","abstract":"

Create a SeverityLevelsConfiguration based on the specified warning and error thresholds.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV6paramsSayAA13RuleParameterVySiGGvp":{"name":"params","abstract":"

The rule parameters that define the thresholds that should map to each severity.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"SeverityLevelsConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV10identifierSSvp":{"name":"identifier","abstract":"

The identifier for this custom rule.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV4nameSSSgvp":{"name":"name","abstract":"

The name for this custom rule.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV7messageSSvp":{"name":"message","abstract":"

The message to be presented when producing violations.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV8includedSaySo19NSRegularExpressionCGvp":{"name":"included","abstract":"

Regular expressions to include when matching the file path.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV8excludedSaySo19NSRegularExpressionCGvp":{"name":"excluded","abstract":"

Regular expressions to exclude when matching the file path.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV18excludedMatchKindsShy21SourceKittenFramework10SyntaxKindOGvp":{"name":"excludedMatchKinds","abstract":"

The syntax kinds to exclude from matches. If the regex matched syntax kinds from this list, it would","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationP08severityG0AA0dG0Vy6ParentQzGvp":{"name":"severityConfiguration","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV12captureGroupSivp":{"name":"captureGroup","abstract":"

The index of the regex capture group to match.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore24CacheDescriptionProviderP05cacheE0SSvp":{"name":"cacheDescription","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV11descriptionAA15RuleDescriptionVvp":{"name":"description","abstract":"

The RuleDescription for the custom rule defined here.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV10identifierACyxGSS_tcfc":{"name":"init(identifier:)","abstract":"

Create a RegexConfiguration with the specified identifier, with other properties to be set later.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RegexConfiguration"},"Structs/ReasonedRuleViolation/ViolationCorrection.html#/s:13SwiftLintCore21ReasonedRuleViolationV0F10CorrectionV5start3end11replacementAE0A6Syntax16AbsolutePositionV_AKSStcfc":{"name":"init(start:end:replacement:)","abstract":"

Create a ViolationCorrection.

","parent_name":"ViolationCorrection"},"Structs/ReasonedRuleViolation/ViolationCorrection.html":{"name":"ViolationCorrection","abstract":"

The correction of a violation that is basically the violation’s range in the source code and a","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV8position0A6Syntax16AbsolutePositionVvp":{"name":"position","abstract":"

The violation’s position.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV6reasonSSSgvp":{"name":"reason","abstract":"

A specific reason for the violation.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV8severityAA0F8SeverityOSgvp":{"name":"severity","abstract":"

The violation’s severity.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV10correctionAC0F10CorrectionVSgvp":{"name":"correction","abstract":"

An optional correction of the violation to be used in rewriting (see SwiftSyntaxCorrectableRule). Can be","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV8position6reason8severity10correctionAC0A6Syntax16AbsolutePositionV_SSSgAA0F8SeverityOSgAC0F10CorrectionVSgtcfc":{"name":"init(position:reason:severity:correction:)","abstract":"

Creates a ReasonedRuleViolation.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"ReasonedRuleViolation"},"Structs/YamlParser.html#/s:13SwiftLintCore10YamlParserV5parse_3envSDySSypGSS_SDyS2SGtKFZ":{"name":"parse(_:env:)","abstract":"

Parses the input YAML string as an untyped dictionary.

","parent_name":"YamlParser"},"Structs/Version.html#/s:13SwiftLintCore7VersionV5valueSSvp":{"name":"value","abstract":"

The string value for this version.

","parent_name":"Version"},"Structs/Version.html#/s:13SwiftLintCore7VersionV8rawValueSSvp":{"name":"rawValue","abstract":"

An alias for value required for protocol conformance.

","parent_name":"Version"},"Structs/Version.html#/s:13SwiftLintCore7VersionV7currentACvpZ":{"name":"current","abstract":"

The current SwiftLint version.

","parent_name":"Version"},"Structs/Version.html#/s:13SwiftLintCore7VersionV5valueACSS_tcfc":{"name":"init(value:)","abstract":"

Public initializer.

","parent_name":"Version"},"Structs/SwiftVersion.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV4fiveACvpZ":{"name":"five","abstract":"

Swift 5.0.x - https://swift.org/download/#swift-50

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV10fiveDotOneACvpZ":{"name":"fiveDotOne","abstract":"

Swift 5.1.x - https://swift.org/download/#swift-51

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV10fiveDotTwoACvpZ":{"name":"fiveDotTwo","abstract":"

Swift 5.2.x - https://swift.org/download/#swift-52

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV12fiveDotThreeACvpZ":{"name":"fiveDotThree","abstract":"

Swift 5.3.x - https://swift.org/download/#swift-53

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV11fiveDotFourACvpZ":{"name":"fiveDotFour","abstract":"

Swift 5.4.x - https://swift.org/download/#swift-54

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV11fiveDotFiveACvpZ":{"name":"fiveDotFive","abstract":"

Swift 5.5.x - https://swift.org/download/#swift-55

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV10fiveDotSixACvpZ":{"name":"fiveDotSix","abstract":"

Swift 5.6.x - https://swift.org/download/#swift-56

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV12fiveDotSevenACvpZ":{"name":"fiveDotSeven","abstract":"

Swift 5.7.x - https://swift.org/download/#swift-57

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV12fiveDotEightACvpZ":{"name":"fiveDotEight","abstract":"

Swift 5.8.x - https://swift.org/download/#swift-58

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV11fiveDotNineACvpZ":{"name":"fiveDotNine","abstract":"

Swift 5.9.x - https://swift.org/download/#swift-59

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV7currentACvpZ":{"name":"current","abstract":"

The current detected Swift compiler version, based on the currently accessible SourceKit version.

","parent_name":"SwiftVersion"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV5value21SourceKittenFramework0dE0Vvp":{"name":"value","abstract":"

The raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV4kind21SourceKittenFramework0D4KindOSgvp":{"name":"kind","abstract":"

The syntax kind associated with is token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV5valueAC21SourceKittenFramework0dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV5range21SourceKittenFramework9ByteRangeVvp":{"name":"range","abstract":"

The byte range in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV6offset21SourceKittenFramework9ByteCountVvp":{"name":"offset","abstract":"

The starting byte offset in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV6length21SourceKittenFramework9ByteCountVvp":{"name":"length","abstract":"

The length in bytes for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV5value21SourceKittenFramework0dE0Vvp":{"name":"value","abstract":"

The raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV6tokensSayAA0abD5TokenVGvp":{"name":"tokens","abstract":"

The SwiftLint-specific syntax tokens for this syntax map.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV5valueAC21SourceKittenFramework0dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV6tokens11inByteRangeSayAA0abD5TokenVG21SourceKittenFramework0hI0V_tF":{"name":"tokens(inByteRange:)","abstract":"

Returns array of syntax tokens intersecting with byte range.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV5kinds11inByteRangeSay21SourceKittenFramework0D4KindOGAF0hI0V_tF":{"name":"kinds(inByteRange:)","abstract":"

Returns the syntax kinds in the specified byte range.

","parent_name":"SwiftLintSyntaxMap"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV14ruleIdentifierSSvp":{"name":"ruleIdentifier","abstract":"

The identifier of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV15ruleDescriptionSSvp":{"name":"ruleDescription","abstract":"

The description of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV8ruleNameSSvp":{"name":"ruleName","abstract":"

The name of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV8severityAA0E8SeverityOvp":{"name":"severity","abstract":"

The severity of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV6reasonSSvp":{"name":"reason","abstract":"

The justification for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV11descriptionSSvp":{"name":"description","abstract":"

A printable description for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV15ruleDescription8severity8location6reasonAcA04RuleG0V_AA0E8SeverityOAA8LocationVSSSgtcfc":{"name":"init(ruleDescription:severity:location:reason:)","abstract":"

Creates a StyleViolation by specifying its properties directly.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV4with8severityAcA0E8SeverityO_tF":{"name":"with(severity:)","abstract":"

Returns the same violation, but with the severity that is passed in

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV4with8locationAcA8LocationV_tF":{"name":"with(location:)","abstract":"

Returns the same violation, but with the location that is passed in

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"StyleViolation"},"Structs/RuleParameter.html#/s:13SwiftLintCore13RuleParameterV8severityAA17ViolationSeverityOvp":{"name":"severity","abstract":"

The severity that should be assigned to the violation of this parameter’s value is met.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:13SwiftLintCore13RuleParameterV5valuexvp":{"name":"value","abstract":"

The value to configure the rule.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:13SwiftLintCore13RuleParameterV8severity5valueACyxGAA17ViolationSeverityO_xtcfc":{"name":"init(severity:value:)","abstract":"

Creates a RuleParameter by specifying its properties directly.

","parent_name":"RuleParameter"},"Structs/RuleList.html#/s:13SwiftLintCore8RuleListV4listSDySSAA0D0_pXpGvp":{"name":"list","abstract":"

The rules contained in this list.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:13SwiftLintCore8RuleListV5rulesAcA0D0_pXpd_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:13SwiftLintCore8RuleListV5rulesACSayAA0D0_pXpG_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleList"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV10identifierSSvp":{"name":"identifier","abstract":"

The rule’s unique identifier, to be used in configuration files and SwiftLint commands.","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV4nameSSvp":{"name":"name","abstract":"

The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV11descriptionSSvp":{"name":"description","abstract":"

The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV4kindAA0D4KindOvp":{"name":"kind","abstract":"

The RuleKind that best categorizes this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV21nonTriggeringExamplesSayAA7ExampleVGvp":{"name":"nonTriggeringExamples","abstract":"

Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV18triggeringExamplesSayAA7ExampleVGvp":{"name":"triggeringExamples","abstract":"

Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV11correctionsSDyAA7ExampleVAFGvp":{"name":"corrections","abstract":"

Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV17deprecatedAliasesShySSGvp":{"name":"deprecatedAliases","abstract":"

Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV03minA7VersionAA0aG0Vvp":{"name":"minSwiftVersion","abstract":"

The oldest version of the Swift compiler supported by this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV18requiresFileOnDiskSbvp":{"name":"requiresFileOnDisk","abstract":"

Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV07consoleE0SSvp":{"name":"consoleDescription","abstract":"

The console-printable string for this description.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV14allIdentifiersSaySSGvp":{"name":"allIdentifiers","abstract":"

All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV10identifier4name11description4kind03minA7Version21nonTriggeringExamples010triggeringN011corrections17deprecatedAliases18requiresFileOnDiskACSS_S2SAA0D4KindOAA0aK0VSayAA7ExampleVGATSDyA2SGShySSGSbtcfc":{"name":"init(identifier:name:description:kind:minSwiftVersion:nonTriggeringExamples:triggeringExamples:corrections:deprecatedAliases:requiresFileOnDisk:)","abstract":"

Creates a RuleDescription by specifying all its properties directly.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleDescription"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationV5errorACyxGvpZ":{"name":"error","abstract":"

Configuration with a warning severity.

","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationV7warningACyxGvpZ":{"name":"warning","abstract":"

Configuration with an error severity.

","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationP08severityG0AA0dG0Vy6ParentQzGvp":{"name":"severityConfiguration","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationVyACyxGAA09ViolationD0Ocfc":{"name":"init(_:)","abstract":"

Create a SeverityConfiguration with the specified severity.

","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationV13asDescription4withAA04RuleeG0VSS_tF":{"name":"asDescription(with:)","abstract":"

Severity configurations are special in that they shall not be nested when an option name is provided.","parent_name":"SeverityConfiguration"},"Structs/ConfigurationElement/DeprecationNotice.html#/s:13SwiftLintCore20ConfigurationElementV17DeprecationNoticeO18suggestAlternativeyAEyx_GSS_SStcAGmSQRzAA012AcceptableBydE0RzlF":{"name":"suggestAlternative(ruleID:name:)","abstract":"

Warning suggesting an alternative option.

","parent_name":"DeprecationNotice"},"Structs/ConfigurationElement/DeprecationNotice.html":{"name":"DeprecationNotice","abstract":"

A deprecation notice.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValuexvp":{"name":"wrappedValue","abstract":"

Wrapped option value.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV14projectedValueACyxGvp":{"name":"projectedValue","abstract":"

The wrapper itself providing access to all its data. This field can only be accessed by the","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV3keySSvp":{"name":"key","abstract":"

Name of this configuration entry.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV6inlineSbvp":{"name":"inline","abstract":"

Whether this configuration element will be inlined into its description.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValue3key17deprecationNotice13postprocessorACyxGx_SSAC011DeprecationJ0Oyx_GSgyxzctcfc":{"name":"init(wrappedValue:key:deprecationNotice:postprocessor:)","abstract":"

Default constructor.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV3keyACyqd__SgGSS_tcAERszSQRd__AA012AcceptableBydE0Rd__lufc":{"name":"init(key:)","abstract":"

Constructor for optional values.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValue6inlineACyxGx_SbtcAA19InlinableOptionTypeRzrlufc":{"name":"init(wrappedValue:inline:)","abstract":"

Constructor for an InlinableOptionType without a key.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValue3keyACyxGx_SStcAA19InlinableOptionTypeRzrlufc":{"name":"init(wrappedValue:key:)","abstract":"

Constructor for an InlinableOptionType with a name. The configuration will explicitly not be inlined.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"ConfigurationElement"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore23RuleConfigurationOptionV9noOptionsACvpZ":{"name":"noOptions","abstract":"

An option serving as a marker for an empty configuration description.

","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","parent_name":"RuleConfigurationDescription"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","parent_name":"RuleConfigurationDescription"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","parent_name":"RuleConfigurationDescription"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","parent_name":"RuleConfigurationDescription"},"Structs/Region.html#/s:13SwiftLintCore6RegionV5startAA8LocationVvp":{"name":"start","abstract":"

The location describing the start of the region. All locations that are less than this value","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV3endAA8LocationVvp":{"name":"end","abstract":"

The location describing the end of the region. All locations that are greater than this value","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV23disabledRuleIdentifiersShyAA0F10IdentifierOGvp":{"name":"disabledRuleIdentifiers","abstract":"

All SwiftLint rule identifiers that are disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV5start3end23disabledRuleIdentifiersAcA8LocationV_AHShyAA0H10IdentifierOGtcfc":{"name":"init(start:end:disabledRuleIdentifiers:)","abstract":"

Creates a Region by setting explicit values for all its properties.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV8containsySbAA8LocationVF":{"name":"contains(_:)","abstract":"

Whether the specific location is contained in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV13isRuleEnabledySbxAA0F0RzlF":{"name":"isRuleEnabled(_:)","abstract":"

Whether the specified rule is enabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV14isRuleDisabledySbxAA0F0RzlF":{"name":"isRuleDisabled(_:)","abstract":"

Whether the specified rule is disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV16areRulesDisabled7ruleIDsSbSaySSG_tF":{"name":"areRulesDisabled(ruleIDs:)","abstract":"

Whether the given rules are disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV26deprecatedAliasesDisabling4ruleShySSGx_tAA4RuleRzlF":{"name":"deprecatedAliasesDisabling(rule:)","abstract":"

Returns the deprecated rule aliases that are disabling the specified rule in this region.","parent_name":"Region"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4fileSSSgvp":{"name":"file","abstract":"

The file path on disk for this location.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4lineSiSgvp":{"name":"line","abstract":"

The line offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV9characterSiSgvp":{"name":"character","abstract":"

The character offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV11descriptionSSvp":{"name":"description","abstract":"

A lossless printable description of this location.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV12relativeFileSSSgvp":{"name":"relativeFile","abstract":"

The file path for this location relative to the current working directory.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file4line9characterACSSSg_SiSgAHtcfc":{"name":"init(file:line:character:)","abstract":"

Creates a Location by specifying its properties directly.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file10byteOffsetAcA0aB4FileC_21SourceKittenFramework9ByteCountVtcfc":{"name":"init(file:byteOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a byte-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file8positionAcA0aB4FileC_0A6Syntax16AbsolutePositionVtcfc":{"name":"init(file:position:)","abstract":"

Creates a Location based on a SwiftLintFile and a SwiftSyntax AbsolutePosition into the file.","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file15characterOffsetAcA0aB4FileC_Sitcfc":{"name":"init(file:characterOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Location"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV15styleViolations5usingSayAA14StyleViolationVGAA11RuleStorageC_tF":{"name":"styleViolations(using:)","abstract":"

Computes or retrieves style violations.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV27styleViolationsAndRuleTimes5usingSayAA14StyleViolationVG_SaySS2id_Sd4timetGtAA0I7StorageC_tF":{"name":"styleViolationsAndRuleTimes(using:)","abstract":"

Computes or retrieves style violations and the time spent executing each rule.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV7correct5usingSayAA10CorrectionVGAA11RuleStorageC_tF":{"name":"correct(using:)","abstract":"

Applies corrections for all rules to this file, returning performed corrections.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV6format7useTabs11indentWidthySb_SitF":{"name":"format(useTabs:indentWidth:)","abstract":"

Formats the file associated with this linter.

","parent_name":"CollectedLinter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"Linter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV12isCollectingSbvp":{"name":"isCollecting","abstract":"

Whether or not this linter will be used to collect information from several files.

","parent_name":"Linter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV4file13configuration5cache17compilerArgumentsAcA0aB4FileC_AA13ConfigurationVAA0D5CacheCSgSaySSGtcfc":{"name":"init(file:configuration:cache:compilerArguments:)","abstract":"

Creates a Linter by specifying its properties directly.

","parent_name":"Linter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV7collect4intoAA09CollectedD0VAA11RuleStorageC_tF":{"name":"collect(into:)","abstract":"

Returns a linter capable of checking for violations after running each rule’s collection step.

","parent_name":"Linter"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4codeSSvp":{"name":"code","abstract":"

The contents of the example

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV13configurationSDySSs8Sendable_pGSgvp":{"name":"configuration","abstract":"

The untyped configuration to apply to the rule, if deviating from the default configuration.","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV20testMultiByteOffsetsSbvp":{"name":"testMultiByteOffsets","abstract":"

Whether the example should be tested by prepending multibyte grapheme clusters

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV11testOnLinuxSbvp":{"name":"testOnLinux","abstract":"

Whether the example should be tested on Linux

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4files12StaticStringVvp":{"name":"file","abstract":"

The path to the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4lineSuvp":{"name":"line","abstract":"

The line in the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV_13configuration20testMultiByteOffsets0F17WrappingInComment0fjK6String0F14DisableCommand0F7OnLinux4file4line24excludeFromDocumentationACSS_SDySSs8Sendable_pGSgS5bs06StaticM0VSuSbtcfc":{"name":"init(_:configuration:testMultiByteOffsets:testWrappingInComment:testWrappingInString:testDisableCommand:testOnLinux:file:line:excludeFromDocumentation:)","abstract":"

Create a new Example with the specified code, file, and line.

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4with4codeACSS_tF":{"name":"with(code:)","abstract":"

Returns the same example, but with the code that is passed in

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV24removingViolationMarkersACyF":{"name":"removingViolationMarkers()","abstract":"

Returns a copy of the Example with all instances of the “↓” character removed.

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV7focusedACyF":{"name":"focused()","abstract":"

Makes the current example focused. This is for debugging purposes only.

","parent_name":"Example"},"Structs/Example.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Example"},"Structs/Example.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Example"},"Structs/Example.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Example"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV15ruleDescriptionAA04RuleF0Vvp":{"name":"ruleDescription","abstract":"

The description of the rule for which this correction was applied.

","parent_name":"Correction"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of the original violation that was corrected.

","parent_name":"Correction"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"

The console-printable description for this correction.

","parent_name":"Correction"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV15ruleDescription8locationAcA04RuleF0V_AA8LocationVtcfc":{"name":"init(ruleDescription:location:)","abstract":"

Memberwise initializer.

","parent_name":"Correction"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV7defaultACvpZ":{"name":"default","abstract":"

The default Configuration resulting from an empty configuration file.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV15defaultFileNameSSvpZ":{"name":"defaultFileName","abstract":"

The default file name to look for user-defined configurations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13includedPathsSaySSGvp":{"name":"includedPaths","abstract":"

The paths that should be included when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13excludedPathsSaySSGvp":{"name":"excludedPaths","abstract":"

The paths that should be excluded when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV11indentationAC16IndentationStyleOvp":{"name":"indentation","abstract":"

The style to use when indenting Swift source code.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV16warningThresholdSiSgvp":{"name":"warningThreshold","abstract":"

The threshold for the number of warnings to tolerate before treating the lint as having failed.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV8reporterSSSgvp":{"name":"reporter","abstract":"

The identifier for the Reporter to use to report style violations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV9cachePathSSSgvp":{"name":"cachePath","abstract":"

The location of the persisted cache to use with this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV22allowZeroLintableFilesSbvp":{"name":"allowZeroLintableFiles","abstract":"

Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV6strictSbvp":{"name":"strict","abstract":"

Treat warnings as errors.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV7lenientSbvp":{"name":"lenient","abstract":"

Treat errors as warnings.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV8baselineSSSgvp":{"name":"baseline","abstract":"

The path to read a baseline from.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13writeBaselineSSSgvp":{"name":"writeBaseline","abstract":"

The path to write a baseline to.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV15checkForUpdatesSbvp":{"name":"checkForUpdates","abstract":"

Check for updates.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV013basedOnCustomD5FilesSbvp":{"name":"basedOnCustomConfigurationFiles","abstract":"

This value is true iff the --config parameter was used to specify (a) configuration file(s)","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV5rulesSayAA4Rule_pGvp":{"name":"rules","abstract":"

All rules enabled in this configuration

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13rootDirectorySSvp":{"name":"rootDirectory","abstract":"

The root directory is the directory that included & excluded paths relate to.","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV9rulesModeAC05RulesF0Ovp":{"name":"rulesMode","abstract":"

The rules mode used for this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV18configurationFiles14enableAllRules8onlyRule9cachePath27ignoreParentAndChildConfigs20mockedNetworkResults25useDefaultConfigOnFailureACSaySSG_SbAKSSSgSbSDyS2SGSbSgtcfc":{"name":"init(configurationFiles:enableAllRules:onlyRule:cachePath:ignoreParentAndChildConfigs:mockedNetworkResults:useDefaultConfigOnFailure:)","abstract":"

Creates a Configuration with convenience parameters.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"Configuration"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO8previousyA2EmF":{"name":"previous","abstract":"

The command should only apply to the line preceding its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO4thisyA2EmF":{"name":"this","abstract":"

The command should only apply to the same line as its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO4nextyA2EmF":{"name":"next","abstract":"

The command should only apply to the line following its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO7invalidyA2EmF":{"name":"invalid","abstract":"

The modifier string was invalid.

","parent_name":"Modifier"},"Structs/Command/Action.html#/s:13SwiftLintCore7CommandV6ActionO6enableyA2EmF":{"name":"enable","abstract":"

The rule(s) associated with this command should be enabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html#/s:13SwiftLintCore7CommandV6ActionO7disableyA2EmF":{"name":"disable","abstract":"

The rule(s) associated with this command should be disabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html#/s:13SwiftLintCore7CommandV6ActionO7invalidyA2EmF":{"name":"invalid","abstract":"

The action string was invalid.

","parent_name":"Action"},"Structs/Command/Action.html":{"name":"Action","abstract":"

The action (verb) that SwiftLint should perform when interpreting this command.

","parent_name":"Command"},"Structs/Command/Modifier.html":{"name":"Modifier","abstract":"

The modifier for a command, used to modify its scope.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV6actionAC6ActionOvp":{"name":"action","abstract":"

The action (verb) that SwiftLint should perform when interpreting this command.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV15ruleIdentifiersShyAA14RuleIdentifierOGvp":{"name":"ruleIdentifiers","abstract":"

The identifiers for the rules associated with this command.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV4lineSivp":{"name":"line","abstract":"

The line in the source file where this command is defined.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV9characterSiSgvp":{"name":"character","abstract":"

The character offset within the line in the source file where this command is defined.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV8modifierAC8ModifierOSgvp":{"name":"modifier","abstract":"

This command’s modifier, if any.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV6action15ruleIdentifiers4line9character8modifier15trailingCommentA2C6ActionO_ShyAA14RuleIdentifierOGS2iSgAC8ModifierOSgSSSgtcfc":{"name":"init(action:ruleIdentifiers:line:character:modifier:trailingComment:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV12actionString4line9characterACSS_S2itcfc":{"name":"init(actionString:line:character:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV5errorACyxGvpZ":{"name":"error","abstract":"

Configuration with a warning severity.

","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV7warningACyxGvpZ":{"name":"warning","abstract":"

Configuration with an error severity.

","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV3offACyxGvpZ":{"name":"off","abstract":"

Configuration disabling an option.

","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV8severityAA09ViolationF0OSgvp":{"name":"severity","abstract":"

The ChildOptionSeverityConfiguration mapped to a usually used ViolationSeverity. It’s nil if the option","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"ChildOptionSeverityConfiguration"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV10violationsSayAA14StyleViolationVGvp":{"name":"violations","abstract":"

The stored violations.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV8fromPathACSS_tKcfc":{"name":"init(fromPath:)","abstract":"

Creates a Baseline from a saved file.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV10violationsACSayAA14StyleViolationVG_tcfc":{"name":"init(violations:)","abstract":"

Creates a Baseline from a list of violations.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV5write6toPathySS_tKF":{"name":"write(toPath:)","abstract":"

Writes a Baseline to disk in JSON format.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV6filterySayAA14StyleViolationVGAGF":{"name":"filter(_:)","abstract":"

Filters out violations that are present in the Baseline.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV7compareySayAA14StyleViolationVGACF":{"name":"compare(_:)","abstract":"

Returns the violations that are present in another Baseline, but not in this one.

","parent_name":"Baseline"},"Structs/Stack.html#/s:13SwiftLintCore5StackVACyxGycfc":{"name":"init()","abstract":"

Creates an empty Stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV5countSivp":{"name":"count","abstract":"

The number of elements in this stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV4pushyyxF":{"name":"push(_:)","abstract":"

Pushes (appends) an element onto the stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV3popxSgyF":{"name":"pop()","abstract":"

Removes and returns the last element of the stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV4peekxSgyF":{"name":"peek()","abstract":"

Returns the last element of the stack if the stack is not empty; otherwise, nil.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV8contains5whereS2bxXE_tF":{"name":"contains(where:)","abstract":"

Check whether the sequence contains an element that satisfies the given predicate.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV10modifyLast2byyyxzXE_tF":{"name":"modifyLast(by:)","abstract":"

Modify the last element.

","parent_name":"Stack"},"Structs/Stack.html#/s:ST12makeIterator0B0QzyF":{"name":"makeIterator()","parent_name":"Stack"},"Structs/Stack.html#/s:s28CustomDebugStringConvertibleP16debugDescriptionSSvp":{"name":"debugDescription","parent_name":"Stack"},"Structs/RuleListDocumentation.html#/s:13SwiftLintCore21RuleListDocumentationVyAcA0dE0Vcfc":{"name":"init(_:)","abstract":"

Creates a RuleListDocumentation instance from a RuleList.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html#/s:13SwiftLintCore21RuleListDocumentationV5write2toy10Foundation3URLV_tKF":{"name":"write(to:)","abstract":"

Write the rule list documentation as markdown files to the specified directory.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html":{"name":"RuleListDocumentation","abstract":"

User-facing documentation for a SwiftLint RuleList.

"},"Structs/Stack.html":{"name":"Stack","abstract":"

A basic stack type implementing the LIFO principle - only the last inserted element can be accessed and removed.

"},"Structs/Baseline.html":{"name":"Baseline","abstract":"

A set of violations that can be used to filter newly detected violations.

"},"Structs/ChildOptionSeverityConfiguration.html":{"name":"ChildOptionSeverityConfiguration","abstract":"

A rule configuration that allows to disable (off) an option of a rule or specify its severity level in which"},"Structs/Command.html":{"name":"Command","abstract":"

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

"},"Structs/Correction.html":{"name":"Correction","abstract":"

A value describing a SwiftLint violation that was corrected.

"},"Structs/Example.html":{"name":"Example","abstract":"

Captures code and context information for an example of a triggering or"},"Structs/Linter.html":{"name":"Linter","abstract":"

Represents a file that can be linted for style violations and corrections after being collected.

"},"Structs/CollectedLinter.html":{"name":"CollectedLinter","abstract":"

Represents a file that can compute style violations and corrections for a list of rules.

"},"Structs/Location.html":{"name":"Location","abstract":"

The placement of a segment of Swift in a collection of source files.

"},"Structs/Region.html":{"name":"Region","abstract":"

A contiguous region of Swift source code.

"},"Structs/RuleConfigurationDescription.html":{"name":"RuleConfigurationDescription","abstract":"

Description of a rule configuration.

"},"Structs/RuleConfigurationOption.html":{"name":"RuleConfigurationOption","abstract":"

A single option of a RuleConfigurationDescription.

"},"Structs.html#/s:13SwiftLintCore35RuleConfigurationDescriptionBuilderV":{"name":"RuleConfigurationDescriptionBuilder","abstract":"

A result builder creating configuration descriptions.

"},"Structs/ConfigurationElement.html":{"name":"ConfigurationElement","abstract":"

A single parameter of a rule configuration.

"},"Structs/SeverityConfiguration.html":{"name":"SeverityConfiguration","abstract":"

A rule configuration that allows specifying the desired severity level for violations.

"},"Structs/RuleDescription.html":{"name":"RuleDescription","abstract":"

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

"},"Structs/RuleList.html":{"name":"RuleList","abstract":"

A list of available SwiftLint rules.

"},"Structs/RuleParameter.html":{"name":"RuleParameter","abstract":"

A configuration parameter for rules.

"},"Structs/StyleViolation.html":{"name":"StyleViolation","abstract":"

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

"},"Structs/SwiftLintSyntaxMap.html":{"name":"SwiftLintSyntaxMap","abstract":"

Represents a Swift file’s syntax information.

"},"Structs/SwiftLintSyntaxToken.html":{"name":"SwiftLintSyntaxToken","abstract":"

A SwiftLint-aware Swift syntax token.

"},"Structs/SwiftVersion.html":{"name":"SwiftVersion","abstract":"

A value describing the version of the Swift compiler.

"},"Structs/Version.html":{"name":"Version","abstract":"

A type describing the SwiftLint version.

"},"Structs/YamlParser.html":{"name":"YamlParser","abstract":"

An interface for parsing YAML.

"},"Structs/ReasonedRuleViolation.html":{"name":"ReasonedRuleViolation","abstract":"

A violation produced by ViolationsSyntaxVisitors.

"},"Structs/RegexConfiguration.html":{"name":"RegexConfiguration","abstract":"

A rule configuration used for defining custom rules in yaml.

"},"Structs/SeverityLevelsConfiguration.html":{"name":"SeverityLevelsConfiguration","abstract":"

A rule configuration that allows specifying thresholds for warning and error severities.

"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore0A10SyntaxRuleP11makeVisitor4fileAA010ViolationsdG0Cy17ConfigurationTypeQzGAA0aB4FileC_tF":{"name":"makeVisitor(file:)","abstract":"

Produce a ViolationsSyntaxVisitor for the given file.

","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore0A10SyntaxRuleP13makeViolation4file9violationAA05StyleG0VAA0aB4FileC_AA08ReasonedeG0VtF":{"name":"makeViolation(file:violation:)","abstract":"

Produce a violation for the given file and absolute position.

","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore0A10SyntaxRuleP10preprocess4file0aD0010SourceFileD0VSgAA0abI0C_tF":{"name":"preprocess(file:)","abstract":"

Gives a chance for the rule to do some pre-processing on the syntax tree.","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxCorrectableRule.html#/s:13SwiftLintCore0A21SyntaxCorrectableRuleP12makeRewriter4fileAA010ViolationsdH0Cy17ConfigurationTypeQzGSgAA0aB4FileC_tF":{"name":"makeRewriter(file:)","abstract":"

Produce a ViolationsSyntaxRewriter for the given file.

","parent_name":"SwiftSyntaxCorrectableRule"},"Protocols/SwiftSyntaxCorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"SwiftSyntaxCorrectableRule"},"Protocols/SeverityBasedRuleConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationP08severityG0AA0dG0Vy6ParentQzGvp":{"name":"severityConfiguration","abstract":"

The configuration of a rule’s severity.

","parent_name":"SeverityBasedRuleConfiguration"},"Protocols/SeverityBasedRuleConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationPAAE8severityAA09ViolationD0Ovp":{"name":"severity","abstract":"

The severity of a rule.

","parent_name":"SeverityBasedRuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP6ParentQa":{"name":"Parent","abstract":"

The type of the rule that’s using this configuration.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP20parameterDescriptionAA0deG0VSgvp":{"name":"parameterDescription","abstract":"

A description for this configuration’s parameters. It can be built using the annotated result builder.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","abstract":"

Apply an untyped configuration to the current value.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP8validateyyKF":{"name":"validate()","abstract":"

Run a sanity check on the configuration, perform optional postprocessing steps and/or warn about potential","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationPAAE13supportedKeysShySSGvp":{"name":"supportedKeys","abstract":"

All keys supported by this configuration.

","parent_name":"RuleConfiguration"},"Protocols/AnalyzerRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"AnalyzerRule"},"Protocols/SubstitutionCorrectableRule.html#/s:13SwiftLintCore27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","abstract":"

Returns the NSString-based NSRanges to be replaced in the specified file.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:13SwiftLintCore27SubstitutionCorrectableRuleP12substitution3for2inSo8_NSRangeV_SStSgAH_AA0aB4FileCtF":{"name":"substitution(for:in:)","abstract":"

Returns the substitution to apply for the given range.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"SubstitutionCorrectableRule"},"Protocols/CorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CorrectableRule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP17ConfigurationTypeQa":{"name":"ConfigurationType","abstract":"

The type of the configuration used to configure this rule.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP11descriptionAA0D11DescriptionVvpZ":{"name":"description","abstract":"

A verbose description of many of this rule’s properties.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP13configuration17ConfigurationTypeQzvp":{"name":"configuration","abstract":"

This rule’s configuration.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP06shouldB10EmptyFilesSbvp":{"name":"shouldLintEmptyFiles","abstract":"

Whether this rule should be used on empty files. Defaults to false.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RulePxycfc":{"name":"init()","abstract":"

A default initializer for rules. All rules need to be trivially initializable.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","abstract":"

Creates a rule by applying its configuration.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP30createConfigurationDescription16exclusiveOptionsAA0dfG0VShySSG_tF":{"name":"createConfigurationDescription(exclusiveOptions:)","abstract":"

Create a description of how this rule has been configured to run.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"

Whether or not the specified rule is equivalent to the current rule.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","abstract":"

Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP13canBeDisabled9violation2bySbAA14StyleViolationV_AA0D10IdentifierOtF":{"name":"canBeDisabled(violation:by:)","abstract":"

Checks if a style violation can be disabled by a command specifying a rule ID. Only the rule can claim that for","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP9isEnabled2in3forSbAA6RegionV_SStF":{"name":"isEnabled(in:for:)","abstract":"

Checks if a the rule is enabled in a given region. A specific rule ID can be provided in case a rule supports","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RulePAAE16cacheDescriptionSSvp":{"name":"cacheDescription","abstract":"

The cache description which will be used to determine if a previous","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RulePAAE10identifierSSvpZ":{"name":"identifier","abstract":"

The rule’s unique identifier which is the same as Rule.description.identifier.

","parent_name":"Rule"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP10identifierSSvpZ":{"name":"identifier","abstract":"

The unique identifier for this reporter.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","abstract":"

Whether or not this reporter can output incrementally as violations are found or if all violations must be","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP11descriptionSSvpZ":{"name":"description","abstract":"

A more detailed description of the reporter’s output.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP11descriptionSSvp":{"name":"description","abstract":"

For CustomStringConvertible conformance.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","abstract":"

Return a string with the report for the specified violations.

","parent_name":"Reporter"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP8FileInfoQa":{"name":"FileInfo","abstract":"

The kind of information to collect for each file being linted for this rule.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP11collectInfo3for17compilerArguments04FileG0QzAA0abK0C_SaySSGtF":{"name":"collectInfo(for:compilerArguments:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP11collectInfo3for04FileG0QzAA0abI0C_tF":{"name":"collectInfo(for:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP8validate4file13collectedInfo17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SDyAL0nI0QzGSaySSGtF":{"name":"validate(file:collectedInfo:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP8validate4file13collectedInfoSayAA14StyleViolationVGAA0aB4FileC_SDyAK0lI0QzGtF":{"name":"validate(file:collectedInfo:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CacheDescriptionProvider.html#/s:13SwiftLintCore24CacheDescriptionProviderP05cacheE0SSvp":{"name":"cacheDescription","abstract":"

The cache description which will be used to determine if a previous","parent_name":"CacheDescriptionProvider"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRuleP8KindTypeQa":{"name":"KindType","abstract":"

The kind of token being recursed over.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRuleP8validate4file4kind10dictionarySayAA14StyleViolationVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"validate(file:kind:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRuleP4kind4from8KindTypeQzSgAA22SourceKittenDictionaryV_tF":{"name":"kind(from:)","abstract":"

Get the kind from the specified dictionary.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRulePAAE8validate4file10dictionarySayAA14StyleViolationVGAA0aB4FileC_AA22SourceKittenDictionaryVtF":{"name":"validate(file:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s","parent_name":"ASTRule"},"Protocols/VersionComparable.html#/s:13SwiftLintCore17VersionComparableP8rawValueSSvp":{"name":"rawValue","abstract":"

The version string.

","parent_name":"VersionComparable"},"Protocols/VersionComparable.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"VersionComparable"},"Protocols/VersionComparable.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"VersionComparable"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","abstract":"

Initializer taking a value from a configuration to create an element of Self.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","abstract":"

Make the object an option.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP13asDescription4withAA04RulefI0VSS_tF":{"name":"asDescription(with:)","abstract":"

Make the object a description.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP5apply_6ruleIDyyp_SStKF":{"name":"apply(_:ruleID:)","abstract":"

Update the object.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","abstract":"

Convert an object to Markdown.

","parent_name":"Documentable"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","abstract":"

Convert an object to a single line string.

","parent_name":"Documentable"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","abstract":"

Indicate if the item has some content that is useful to document.

","parent_name":"Documentable"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","abstract":"

Convert an object to YAML as used in .swiftlint.yml.

","parent_name":"Documentable"},"Protocols/Documentable.html":{"name":"Documentable","abstract":"

A type that can be converted into a human-readable representation.

"},"Protocols/AcceptableByConfigurationElement.html":{"name":"AcceptableByConfigurationElement","abstract":"

Type of an object that can be used as a configuration element.

"},"Protocols.html#/s:13SwiftLintCore19InlinableOptionTypeP":{"name":"InlinableOptionType","abstract":"

An option type that can appear inlined into its using configuration.

"},"Protocols/VersionComparable.html":{"name":"VersionComparable","abstract":"

A comparable major.minor.patch version number.

"},"Protocols/ASTRule.html":{"name":"ASTRule","abstract":"

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s"},"Protocols/CacheDescriptionProvider.html":{"name":"CacheDescriptionProvider","abstract":"

Interface providing access to a cache description.

"},"Protocols.html#/s:13SwiftLintCore17AnyCollectingRuleP":{"name":"AnyCollectingRule","abstract":"

Type-erased protocol used to check whether a rule is collectable.

"},"Protocols/CollectingRule.html":{"name":"CollectingRule","abstract":"

A rule that requires knowledge of all other files being linted.

"},"Protocols/Reporter.html":{"name":"Reporter","abstract":"

An interface for reporting violations as strings.

"},"Protocols/Rule.html":{"name":"Rule","abstract":"

An executable value that can identify issues (violations) in Swift source code.

"},"Protocols.html#/s:13SwiftLintCore9OptInRuleP":{"name":"OptInRule","abstract":"

A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

"},"Protocols/CorrectableRule.html":{"name":"CorrectableRule","abstract":"

A rule that can correct violations.

"},"Protocols/SubstitutionCorrectableRule.html":{"name":"SubstitutionCorrectableRule","abstract":"

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with"},"Protocols.html#/s:13SwiftLintCore17SourceKitFreeRuleP":{"name":"SourceKitFreeRule","abstract":"

A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

"},"Protocols/AnalyzerRule.html":{"name":"AnalyzerRule","abstract":"

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like"},"Protocols/RuleConfiguration.html":{"name":"RuleConfiguration","abstract":"

A configuration value for a rule to allow users to modify its behavior.

"},"Protocols/SeverityBasedRuleConfiguration.html":{"name":"SeverityBasedRuleConfiguration","abstract":"

A configuration for a rule that allows to configure at least the severity.

"},"Protocols/SwiftSyntaxCorrectableRule.html":{"name":"SwiftSyntaxCorrectableRule","abstract":"

A SwiftLint CorrectableRule that performs its corrections using a SwiftSyntax SyntaxRewriter.

"},"Protocols/SwiftSyntaxRule.html":{"name":"SwiftSyntaxRule","abstract":"

A SwiftLint Rule backed by SwiftSyntax that does not use SourceKit requests.

"},"Functions.html#/s:13SwiftLintCore12reporterFrom10identifierAA8Reporter_pXpSSSg_tF":{"name":"reporterFrom(identifier:)","abstract":"

Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any"},"Extensions/Double.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Double"},"Extensions/Double.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Double"},"Extensions/Int.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Int"},"Extensions/Int.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Int"},"Extensions/Set.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Set"},"Extensions/Set.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Set"},"Extensions/String.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"String"},"Extensions/String.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"String"},"Extensions/Bool.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Bool"},"Extensions/Bool.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Bool"},"Extensions/Optional.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Optional"},"Extensions/Optional.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Optional"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE26skipWrappingInCommentTestsSayACGyF":{"name":"skipWrappingInCommentTests()","abstract":"

Make these examples skip wrapping in comment tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE25skipWrappingInStringTestsSayACGyF":{"name":"skipWrappingInStringTests()","abstract":"

Make these examples skip wrapping in string tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE24skipMultiByteOffsetTestsSayACGyF":{"name":"skipMultiByteOffsetTests()","abstract":"

Make these examples skip multi-byte offset tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE23skipDisableCommandTestsSayACGyF":{"name":"skipDisableCommandTests()","abstract":"

Make these examples skip disable command tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE23removingViolationMarkerSayACGyF":{"name":"removingViolationMarker()","abstract":"

Remove all violation markers from the examples.

","parent_name":"Array"},"Extensions/Array.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Array"},"Extensions/Array.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA0aB11SyntaxTokenVRszlE5kindsSay21SourceKittenFramework0D4KindOGvp":{"name":"kinds","abstract":"

The kinds for these tokens.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA21ReasonedRuleViolationVRszlE6appendyy0A6Syntax16AbsolutePositionVF":{"name":"append(_:)","abstract":"

Add a violation at the specified position using the default description and severity.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA21ReasonedRuleViolationVRszlE6append2at10correctiony0A6Syntax16AbsolutePositionV_AC0F10CorrectionVSgtF":{"name":"append(at:correction:)","abstract":"

Add a violation and the correction at the specified position using the default description and severity.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA21ReasonedRuleViolationVRszlE6append10contentsOfySay0A6Syntax16AbsolutePositionVG_tF":{"name":"append(contentsOf:)","abstract":"

Add violations for the specified positions using the default description and severity.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCore0A6Syntax04DeclD8Protocol_pXpRszlE3allSayAbC_pXpGvpZ":{"name":"all","abstract":"

All visitable declaration syntax types.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCore0A6Syntax04DeclD8Protocol_pXpRszlE9allExceptySayAbC_pXpGAbC_pXpd_tFZ":{"name":"allExcept(_:)","abstract":"

All declarations except for the specified ones.

","parent_name":"Array"},"Extensions/Array.html":{"name":"Array"},"Extensions/Optional.html":{"name":"Optional"},"Extensions/Bool.html":{"name":"Bool"},"Extensions/String.html":{"name":"String"},"Extensions/Set.html":{"name":"Set"},"Extensions/Int.html":{"name":"Int"},"Extensions/Double.html":{"name":"Double"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO9parameteryAC0A6Syntax05TokenG0V_tcACmF":{"name":"parameter(name:)","abstract":"

Parameter declaration with a name token.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO13localVariableyAC0A6Syntax05TokenH0V_tcACmF":{"name":"localVariable(name:)","abstract":"

Local variable declaration with a name token.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO16implicitVariableyACSS_tcACmF":{"name":"implicitVariable(name:)","abstract":"

A variable that is implicitly added by the compiler (e.g. error in catch clauses).

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO8wildcardyA2CmF":{"name":"wildcard","abstract":"

A variable hidden from scope because its name is a wildcard _.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO14lookupBoundaryyA2CmF":{"name":"lookupBoundary","abstract":"

Special case that marks a type boundary at which name lookup stops.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO8declares2id18disregardBackticksSbSS_SbtF":{"name":"declares(id:disregardBackticks:)","abstract":"

Check whether self declares a variable given by name.

","parent_name":"IdentifierDeclaration"},"Enums/ViolationSeverity.html#/s:13SwiftLintCore17ViolationSeverityO7warningyA2CmF":{"name":"warning","abstract":"

Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:13SwiftLintCore17ViolationSeverityO5erroryA2CmF":{"name":"error","abstract":"

Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"ViolationSeverity"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO4callyA2CmF":{"name":"call","abstract":"

A call to a named function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO8argumentyA2CmF":{"name":"argument","abstract":"

An argument value for a function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO5arrayyA2CmF":{"name":"array","abstract":"

An Array expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO10dictionaryyA2CmF":{"name":"dictionary","abstract":"

A Dictionary expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO13objectLiteralyA2CmF":{"name":"objectLiteral","abstract":"

An object literal expression. https://developer.apple.com/swift/blog/?id=33

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO7closureyA2CmF":{"name":"closure","abstract":"

A closure expression. https://docs.swift.org/swift-book/LanguageGuide/Closures.html

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO5tupleyA2CmF":{"name":"tuple","abstract":"

A tuple expression. https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID448

","parent_name":"SwiftExpressionKind"},"Enums/RuleListError.html#/s:13SwiftLintCore13RuleListErrorO24duplicatedConfigurationsyAcA0D0_pXp_tcACmF":{"name":"duplicatedConfigurations(rule:)","abstract":"

The rule list contains more than one configuration for the specified rule.

","parent_name":"RuleListError"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO4lintyA2CmF":{"name":"lint","abstract":"

Describes rules that validate Swift source conventions.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO9idiomaticyA2CmF":{"name":"idiomatic","abstract":"

Describes rules that validate common practices in the Swift community.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO5styleyA2CmF":{"name":"style","abstract":"

Describes rules that validate stylistic choices.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO7metricsyA2CmF":{"name":"metrics","abstract":"

Describes rules that validate magnitudes or measurements of Swift source.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO11performanceyA2CmF":{"name":"performance","abstract":"

Describes rules that validate that code patterns with poor performance are avoided.

","parent_name":"RuleKind"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierO3allyA2CmF":{"name":"all","abstract":"

Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierO6singleyACSS_tcACmF":{"name":"single(identifier:)","abstract":"

Represents a single SwiftLint rule with the specified identifier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierO20stringRepresentationSSvp":{"name":"stringRepresentation","abstract":"

The spelling of the string for this identifier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierOyACSScfc":{"name":"init(_:)","abstract":"

Creates a RuleIdentifier by its string representation.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"RuleIdentifier"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO5emptyyA2CmF":{"name":"empty","abstract":"

An irrelevant option. It will be ignored in documentation serialization.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO4flagyACSbcACmF":{"name":"flag(_:)","abstract":"

A boolean flag.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO6stringyACSScACmF":{"name":"string(_:)","abstract":"

A string option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO6symbolyACSScACmF":{"name":"symbol(_:)","abstract":"

Like a string option but without quotes in the serialized output.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO7integeryACSicACmF":{"name":"integer(_:)","abstract":"

An integer option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO5floatyACSdcACmF":{"name":"float(_:)","abstract":"

A floating point number option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO8severityyAcA17ViolationSeverityOcACmF":{"name":"severity(_:)","abstract":"

Special option for a ViolationSeverity.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO4listyACSayACGcACmF":{"name":"list(_:)","abstract":"

A list of options.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO6nestedyAcA28RuleConfigurationDescriptionVcACmF":{"name":"nested(_:)","abstract":"

An option which is another set of configuration options to be nested in the serialized output.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO2egoiyAA017RuleConfigurationD0VSS_ACtFZ":{"name":"=>(_:_:)","abstract":"

Operator enabling an easy way to create a configuration option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO4nestyAcA28RuleConfigurationDescriptionVyXEFZ":{"name":"nest(_:)","abstract":"

Create an option defined by nested configuration description.

","parent_name":"OptionType"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO20invalidConfigurationyACSS_SSSgtcACmF":{"name":"invalidConfiguration(ruleID:message:)","abstract":"

The configuration didn’t match internal expectations.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO29deprecatedConfigurationOptionyACSS_S2SSgtcACmF":{"name":"deprecatedConfigurationOption(ruleID:key:alternative:)","abstract":"

Issued when an option is deprecated. Suggests an alternative optionally.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14nothingAppliedyACSS_tcACmF":{"name":"nothingApplied(ruleID:)","abstract":"

Used in configuration parsing when no changes have been applied. Use only internally!

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO18listedMultipleTimeyACSS_SitcACmF":{"name":"listedMultipleTime(ruleID:times:)","abstract":"

Rule is listed multiple times in the configuration.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO17renamedIdentifieryACSS_SStcACmF":{"name":"renamedIdentifier(old:new:)","abstract":"

An identifier old has been renamed to new.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO24invalidConfigurationKeysyACSS_ShySSGtcACmF":{"name":"invalidConfigurationKeys(ruleID:keys:)","abstract":"

Some configuration keys are invalid.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO25inconsistentConfigurationyACSS_SStcACmF":{"name":"inconsistentConfiguration(ruleID:message:)","abstract":"

The configuration is inconsistent, that is options are mutually exclusive or one drives other values","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14invalidRuleIDsyACShySSGcACmF":{"name":"invalidRuleIDs(_:)","abstract":"

Used rule IDs are invalid.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO25ruleNotPresentInOnlyRulesyACSS_tcACmF":{"name":"ruleNotPresentInOnlyRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is not present in only_rules.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO014ruleDisabledInF5RulesyACSS_tcACmF":{"name":"ruleDisabledInDisabledRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is disabled.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO33ruleDisabledInParentConfigurationyACSS_tcACmF":{"name":"ruleDisabledInParentConfiguration(ruleID:)","abstract":"

Found a rule configuration for a rule that is disabled in the parent configuration.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO019ruleNotEnabledInOptH5RulesyACSS_tcACmF":{"name":"ruleNotEnabledInOptInRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is not enabled in opt_in_rules.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO31ruleNotEnabledInParentOnlyRulesyACSS_tcACmF":{"name":"ruleNotEnabledInParentOnlyRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is not enabled in parent only_rules.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14genericWarningyACSScACmF":{"name":"genericWarning(_:)","abstract":"

A generic warning specified by a string.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO12genericErroryACSScACmF":{"name":"genericError(_:)","abstract":"

A generic error specified by a string.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14ruleDeprecatedyACSS_tcACmF":{"name":"ruleDeprecated(ruleID:)","abstract":"

A deprecation warning for a rule.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO19initialFileNotFoundyACSS_tcACmF":{"name":"initialFileNotFound(path:)","abstract":"

The initial configuration file was not found.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO12fileNotFoundyACSS_tcACmF":{"name":"fileNotFound(path:)","abstract":"

A file at specified path was not found.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO15fileNotReadableyACSSSg_SStcACmF":{"name":"fileNotReadable(path:ruleID:)","abstract":"

The file at path is not readable or cannot be opened.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO15fileNotWritableyACSS_tcACmF":{"name":"fileNotWritable(path:)","abstract":"

The file at path is not writable.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO13indexingErroryACSSSg_SStcACmF":{"name":"indexingError(path:ruleID:)","abstract":"

The file at path cannot be indexed by a specific rule.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO24missingCompilerArgumentsyACSSSg_SStcACmF":{"name":"missingCompilerArguments(path:ruleID:)","abstract":"

No arguments were provided to compile a file at path within a specific rule.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO17missingCursorInfoyACSSSg_SStcACmF":{"name":"missingCursorInfo(path:ruleID:)","abstract":"

Cursor information cannot be extracted from a specific location.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO11yamlParsingyACSScACmF":{"name":"yamlParsing(_:)","abstract":"

An error that occurred when parsing YAML.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO19baselineNotReadableyACSS_tcACmF":{"name":"baselineNotReadable(path:)","abstract":"

The baseline file at path is not readable or cannot be opened.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO5printyyF":{"name":"print()","abstract":"

Print the issue to the console.

","parent_name":"Issue"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO7privateyA2CmF":{"name":"private","abstract":"

Accessible by the declaration’s immediate lexical scope.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO11fileprivateyA2CmF":{"name":"fileprivate","abstract":"

Accessible by the declaration’s same file.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO8internalyA2CmF":{"name":"internal","abstract":"

Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO7packageyA2CmF":{"name":"package","abstract":"

Accessible by all the modules defined in the same Swift package.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO6publicyA2CmF":{"name":"public","abstract":"

Accessible by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO4openyA2CmF":{"name":"open","abstract":"

Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO11descriptionACSgSS_tcfc":{"name":"init(description:)","abstract":"

Initializes an access control level by its Swift source keyword value.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO9isPrivateSbvp":{"name":"isPrivate","abstract":"

Returns true if is private or fileprivate

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"AccessControlLevel"},"Enums/ExecutableInfo.html#/s:13SwiftLintCore14ExecutableInfoO7buildIDSSSgvpZ":{"name":"buildID","abstract":"

A stable identifier for this executable. Uses the Mach-O header UUID on macOS. Nil on Linux.

","parent_name":"ExecutableInfo"},"Enums/ExecutableInfo.html":{"name":"ExecutableInfo","abstract":"

Information about this executable.

"},"Enums/AccessControlLevel.html":{"name":"AccessControlLevel","abstract":"

The accessibility of a Swift source declaration.

"},"Enums/Issue.html":{"name":"Issue","abstract":"

All possible SwiftLint issues which are printed as warnings by default.

"},"Enums/OptionType.html":{"name":"OptionType","abstract":"

Type of an option.

"},"Enums/RuleIdentifier.html":{"name":"RuleIdentifier","abstract":"

An identifier representing a SwiftLint rule, or all rules.

"},"Enums/RuleKind.html":{"name":"RuleKind","abstract":"

All the possible rule kinds (categories).

"},"Enums/RuleListError.html":{"name":"RuleListError","abstract":"

All possible rule list configuration errors.

"},"Enums/SwiftExpressionKind.html":{"name":"SwiftExpressionKind","abstract":"

The kind of expression for a contiguous set of Swift source tokens.

"},"Enums/ViolationSeverity.html":{"name":"ViolationSeverity","abstract":"

The magnitude of a StyleViolation.

"},"Enums/IdentifierDeclaration.html":{"name":"IdentifierDeclaration","abstract":"

An identifier declaration.

"},"Global%20Variables.html#/s:13SwiftLintCore13reportersListSayAA8Reporter_pXpGvp":{"name":"reportersList","abstract":"

The reporters list containing all the reporters built into SwiftLint.

"},"Global%20Variables.html#/s:13SwiftLintCore9coreRulesSayAA4Rule_pXpGvp":{"name":"coreRules","abstract":"

The rule list containing all available rules built into SwiftLintCore.

"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC13configurationxvp":{"name":"configuration","abstract":"

A rule’s configuration.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file from which the traversed syntax tree stems from.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC17locationConverter0aE0014SourceLocationH0Cvp":{"name":"locationConverter","abstract":"

A source location converter associated with the syntax tree being traversed.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC13configuration4fileACyxGx_AA0aB4FileCtcfc":{"name":"init(configuration:file:)","abstract":"

Initializer for a ViolationsSyntaxVisitor.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC10violationsSayAA21ReasonedRuleViolationVGvp":{"name":"violations","abstract":"

Positions in a source file where violations should be reported.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC21skippableDeclarationsSay0aE004DeclE8Protocol_pXpGvp":{"name":"skippableDeclarations","abstract":"

List of declaration types that shall be skipped while traversing the AST.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE09ActorDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE09ClassDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE08EnumDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE013ExtensionDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE012FunctionDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE015InitializerDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE012ProtocolDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE010StructDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE013SubscriptDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE012VariableDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5Scopea":{"name":"Scope","abstract":"

A type that remembers the declared identifiers (in order) up to the current position in the code.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5scopeAA5StackVySayAA21IdentifierDeclarationOGGvp":{"name":"scope","abstract":"

The hierarchical stack of identifiers declared up to the current position in the code.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC13configuration4file5scopeACyxGx_AA0aB4FileCAA5StackVySayAA21IdentifierDeclarationOGGtcfc":{"name":"init(configuration:file:scope:)","abstract":"

Initializer.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC18hasSeenDeclaration3forSbSS_tF":{"name":"hasSeenDeclaration(for:)","abstract":"

Indicate whether a given identifier is in scope.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5visity0A6Syntax0iG12ContinueKindOAE017CodeBlockItemListI0VF":{"name":"visit(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax017CodeBlockItemListJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax012VariableDeclJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax09GuardStmtJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5visity0A6Syntax0iG12ContinueKindOAE011MemberBlockI0VF":{"name":"visit(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax011MemberBlockJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO12indentSpacesyAESicAEmF":{"name":"indentSpaces(_:)","abstract":"

Indentation with a number of spaces.

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO14unindentSpacesyAESicAEmF":{"name":"unindentSpaces(_:)","abstract":"

Reverse indentation of a number of spaces.

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO10indentTabsyAESicAEmF":{"name":"indentTabs(_:)","abstract":"

Indentation with a number of tabs

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO12unindentTabsyAESicAEmF":{"name":"unindentTabs(_:)","abstract":"

Reverse indentation of a number of tabs.

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html":{"name":"IndentationStyle","abstract":"

Style defining whether the rewriter shall indent or unindent and whether it shall use tabs or spaces and","parent_name":"CodeIndentingRewriter"},"Classes/CodeIndentingRewriter.html#/s:13SwiftLintCore21CodeIndentingRewriterC5styleA2C16IndentationStyleO_tcfc":{"name":"init(style:)","abstract":"

Initializer accepting an indentation style.

","parent_name":"CodeIndentingRewriter"},"Classes/CodeIndentingRewriter.html#/s:13SwiftLintCore21CodeIndentingRewriterC5visity0A6Syntax05TokenH0VAGF":{"name":"visit(_:)","parent_name":"CodeIndentingRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC13configurationxvp":{"name":"configuration","abstract":"

A rule’s configuration.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file from which the traversed syntax tree stems from.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC17locationConverter0aE0014SourceLocationH0Cvp":{"name":"locationConverter","abstract":"

A converter of positions in the traversed source file.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC15disabledRegionsSay0aE011SourceRangeVGvp":{"name":"disabledRegions","abstract":"

The regions in the traversed file that are disabled by a command.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC19correctionPositionsSay0aE016AbsolutePositionVGvp":{"name":"correctionPositions","abstract":"

Positions in a source file where corrections were applied.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC13configuration4fileACyxGx_AA0aB4FileCtcfc":{"name":"init(configuration:file:)","abstract":"

Initializer for a ViolationsSyntaxRewriter.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC8visitAnyy0aE00E0VSgAGF":{"name":"visitAny(_:)","parent_name":"ViolationsSyntaxRewriter"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4file21SourceKittenFramework0D0Cvp":{"name":"file","abstract":"

The underlying SourceKitten file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC2id10Foundation4UUIDVvp":{"name":"id","abstract":"

The associated unique identifier for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC06isTestD0Sbvp":{"name":"isTestFile","abstract":"

Whether or not this is a file generated for testing purposes.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC9isVirtualSbvp":{"name":"isVirtual","abstract":"

A file is virtual if it is not backed by a filesystem path.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4fileAC21SourceKittenFramework0D0C_tcfc":{"name":"init(file:)","abstract":"

Creates a SwiftLintFile with a SourceKitten File.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4pathACSgSS_tcfc":{"name":"init(path:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk.","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC20pathDeferringReadingACSS_tcfc":{"name":"init(pathDeferringReading:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC8contentsACSS_tcfc":{"name":"init(contents:)","abstract":"

Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4pathSSSgvp":{"name":"path","abstract":"

The path on disk for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC8contentsSSvp":{"name":"contents","abstract":"

The file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC10stringView21SourceKittenFramework06StringF0Vvp":{"name":"stringView","abstract":"

A string view into the contents of this file optimized for string manipulation operations.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC5linesSay21SourceKittenFramework4LineVGvp":{"name":"lines","abstract":"

The parsed lines for this file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"SwiftLintFile"},"Classes/RuleStorage.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"RuleStorage"},"Classes/RuleStorage.html#/s:13SwiftLintCore11RuleStorageCACycfc":{"name":"init()","abstract":"

Creates a RuleStorage with no initial stored data.

","parent_name":"RuleStorage"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC6sharedACvpZ":{"name":"shared","abstract":"

Shared rule registry instance.

","parent_name":"RuleRegistry"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC4listAA0D4ListVvp":{"name":"list","abstract":"

Rule list associated with this registry. Lazily created, and","parent_name":"RuleRegistry"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC8register5rulesySayAA0D0_pXpG_tF":{"name":"register(rules:)","abstract":"

Register rules.

","parent_name":"RuleRegistry"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC4rule5forIDAA0D0_pXpSgSS_tF":{"name":"rule(forID:)","abstract":"

Look up a rule for a given ID.

","parent_name":"RuleRegistry"},"Classes/LinterCache.html#/s:13SwiftLintCore11LinterCacheC13configuration11fileManagerAcA13ConfigurationV_xtcAA012LintableFileH0Rzlufc":{"name":"init(configuration:fileManager:)","abstract":"

Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

","parent_name":"LinterCache"},"Classes/LinterCache.html#/s:13SwiftLintCore11LinterCacheC4saveyyKF":{"name":"save()","abstract":"

Persists the cache to disk.

","parent_name":"LinterCache"},"Classes/CustomRuleTimer.html#/s:13SwiftLintCore15CustomRuleTimerC6sharedACvpZ":{"name":"shared","abstract":"

Singleton.

","parent_name":"CustomRuleTimer"},"Classes/CustomRuleTimer.html#/s:13SwiftLintCore15CustomRuleTimerC8activateyyF":{"name":"activate()","abstract":"

Tell the timer it should record time spent in rules.

","parent_name":"CustomRuleTimer"},"Classes/CustomRuleTimer.html#/s:13SwiftLintCore15CustomRuleTimerC4dumpSDySSSdGyF":{"name":"dump()","abstract":"

Return all time spent for each custom rule, keyed by rule ID.

","parent_name":"CustomRuleTimer"},"Classes/CustomRuleTimer.html":{"name":"CustomRuleTimer","abstract":"

Utility to measure the time spent in each custom rule.

"},"Classes/LinterCache.html":{"name":"LinterCache","abstract":"

A persisted cache for storing and retrieving linter results.

"},"Classes/RuleRegistry.html":{"name":"RuleRegistry","abstract":"

Container to register and look up SwiftLint rules.

"},"Classes/RuleStorage.html":{"name":"RuleStorage","abstract":"

A storage mechanism for aggregating the results of CollectingRules.

"},"Classes/SwiftLintFile.html":{"name":"SwiftLintFile","abstract":"

A unit of Swift source code, either on disk or in memory.

"},"Classes/ViolationsSyntaxRewriter.html":{"name":"ViolationsSyntaxRewriter","abstract":"

A SwiftSyntax SyntaxRewriter that produces absolute positions where corrections were applied.

"},"Classes/CodeIndentingRewriter.html":{"name":"CodeIndentingRewriter","abstract":"

Rewriter that indents or unindents a syntax piece including comments and nested"},"Classes/DeclaredIdentifiersTrackingVisitor.html":{"name":"DeclaredIdentifiersTrackingVisitor","abstract":"

A specialized ViolationsSyntaxVisitor that tracks declared identifiers per scope while traversing the AST.

"},"Classes/ViolationsSyntaxVisitor.html":{"name":"ViolationsSyntaxVisitor","abstract":"

A SwiftSyntax SyntaxVisitor that produces absolute positions where violations should be reported.

"},"swift-syntax-dashboard.html":{"name":"Swift Syntax Dashboard"},"accessibility_label_for_image.html":{"name":"accessibility_label_for_image"},"accessibility_trait_for_button.html":{"name":"accessibility_trait_for_button"},"anonymous_argument_in_multiline_closure.html":{"name":"anonymous_argument_in_multiline_closure"},"array_init.html":{"name":"array_init"},"attribute_name_spacing.html":{"name":"attribute_name_spacing"},"attributes.html":{"name":"attributes"},"balanced_xctest_lifecycle.html":{"name":"balanced_xctest_lifecycle"},"blanket_disable_command.html":{"name":"blanket_disable_command"},"block_based_kvo.html":{"name":"block_based_kvo"},"capture_variable.html":{"name":"capture_variable"},"class_delegate_protocol.html":{"name":"class_delegate_protocol"},"closing_brace.html":{"name":"closing_brace"},"closure_body_length.html":{"name":"closure_body_length"},"closure_end_indentation.html":{"name":"closure_end_indentation"},"closure_parameter_position.html":{"name":"closure_parameter_position"},"closure_spacing.html":{"name":"closure_spacing"},"collection_alignment.html":{"name":"collection_alignment"},"colon.html":{"name":"colon"},"comma.html":{"name":"comma"},"comma_inheritance.html":{"name":"comma_inheritance"},"comment_spacing.html":{"name":"comment_spacing"},"compiler_protocol_init.html":{"name":"compiler_protocol_init"},"computed_accessors_order.html":{"name":"computed_accessors_order"},"conditional_returns_on_newline.html":{"name":"conditional_returns_on_newline"},"contains_over_filter_count.html":{"name":"contains_over_filter_count"},"contains_over_filter_is_empty.html":{"name":"contains_over_filter_is_empty"},"contains_over_first_not_nil.html":{"name":"contains_over_first_not_nil"},"contains_over_range_nil_comparison.html":{"name":"contains_over_range_nil_comparison"},"contrasted_opening_brace.html":{"name":"contrasted_opening_brace"},"control_statement.html":{"name":"control_statement"},"convenience_type.html":{"name":"convenience_type"},"custom_rules.html":{"name":"custom_rules"},"cyclomatic_complexity.html":{"name":"cyclomatic_complexity"},"deployment_target.html":{"name":"deployment_target"},"direct_return.html":{"name":"direct_return"},"discarded_notification_center_observer.html":{"name":"discarded_notification_center_observer"},"discouraged_assert.html":{"name":"discouraged_assert"},"discouraged_direct_init.html":{"name":"discouraged_direct_init"},"discouraged_none_name.html":{"name":"discouraged_none_name"},"discouraged_object_literal.html":{"name":"discouraged_object_literal"},"discouraged_optional_boolean.html":{"name":"discouraged_optional_boolean"},"discouraged_optional_collection.html":{"name":"discouraged_optional_collection"},"duplicate_conditions.html":{"name":"duplicate_conditions"},"duplicate_enum_cases.html":{"name":"duplicate_enum_cases"},"duplicate_imports.html":{"name":"duplicate_imports"},"duplicated_key_in_dictionary_literal.html":{"name":"duplicated_key_in_dictionary_literal"},"dynamic_inline.html":{"name":"dynamic_inline"},"empty_collection_literal.html":{"name":"empty_collection_literal"},"empty_count.html":{"name":"empty_count"},"empty_enum_arguments.html":{"name":"empty_enum_arguments"},"empty_parameters.html":{"name":"empty_parameters"},"empty_parentheses_with_trailing_closure.html":{"name":"empty_parentheses_with_trailing_closure"},"empty_string.html":{"name":"empty_string"},"empty_xctest_method.html":{"name":"empty_xctest_method"},"enum_case_associated_values_count.html":{"name":"enum_case_associated_values_count"},"expiring_todo.html":{"name":"expiring_todo"},"explicit_acl.html":{"name":"explicit_acl"},"explicit_enum_raw_value.html":{"name":"explicit_enum_raw_value"},"explicit_init.html":{"name":"explicit_init"},"explicit_self.html":{"name":"explicit_self"},"explicit_top_level_acl.html":{"name":"explicit_top_level_acl"},"explicit_type_interface.html":{"name":"explicit_type_interface"},"extension_access_modifier.html":{"name":"extension_access_modifier"},"fallthrough.html":{"name":"fallthrough"},"fatal_error_message.html":{"name":"fatal_error_message"},"file_header.html":{"name":"file_header"},"file_length.html":{"name":"file_length"},"file_name.html":{"name":"file_name"},"file_name_no_space.html":{"name":"file_name_no_space"},"file_types_order.html":{"name":"file_types_order"},"final_test_case.html":{"name":"final_test_case"},"first_where.html":{"name":"first_where"},"flatmap_over_map_reduce.html":{"name":"flatmap_over_map_reduce"},"for_where.html":{"name":"for_where"},"force_cast.html":{"name":"force_cast"},"force_try.html":{"name":"force_try"},"force_unwrapping.html":{"name":"force_unwrapping"},"function_body_length.html":{"name":"function_body_length"},"function_default_parameter_at_end.html":{"name":"function_default_parameter_at_end"},"function_parameter_count.html":{"name":"function_parameter_count"},"generic_type_name.html":{"name":"generic_type_name"},"ibinspectable_in_extension.html":{"name":"ibinspectable_in_extension"},"identical_operands.html":{"name":"identical_operands"},"identifier_name.html":{"name":"identifier_name"},"implicit_getter.html":{"name":"implicit_getter"},"implicit_return.html":{"name":"implicit_return"},"implicitly_unwrapped_optional.html":{"name":"implicitly_unwrapped_optional"},"inclusive_language.html":{"name":"inclusive_language"},"indentation_width.html":{"name":"indentation_width"},"inert_defer.html":{"name":"inert_defer"},"invalid_swiftlint_command.html":{"name":"invalid_swiftlint_command"},"is_disjoint.html":{"name":"is_disjoint"},"joined_default_parameter.html":{"name":"joined_default_parameter"},"large_tuple.html":{"name":"large_tuple"},"last_where.html":{"name":"last_where"},"leading_whitespace.html":{"name":"leading_whitespace"},"legacy_cggeometry_functions.html":{"name":"legacy_cggeometry_functions"},"legacy_constant.html":{"name":"legacy_constant"},"legacy_constructor.html":{"name":"legacy_constructor"},"legacy_hashing.html":{"name":"legacy_hashing"},"legacy_multiple.html":{"name":"legacy_multiple"},"legacy_nsgeometry_functions.html":{"name":"legacy_nsgeometry_functions"},"legacy_objc_type.html":{"name":"legacy_objc_type"},"legacy_random.html":{"name":"legacy_random"},"let_var_whitespace.html":{"name":"let_var_whitespace"},"line_length.html":{"name":"line_length"},"literal_expression_end_indentation.html":{"name":"literal_expression_end_indentation"},"local_doc_comment.html":{"name":"local_doc_comment"},"lower_acl_than_parent.html":{"name":"lower_acl_than_parent"},"mark.html":{"name":"mark"},"missing_docs.html":{"name":"missing_docs"},"modifier_order.html":{"name":"modifier_order"},"multiline_arguments.html":{"name":"multiline_arguments"},"multiline_arguments_brackets.html":{"name":"multiline_arguments_brackets"},"multiline_function_chains.html":{"name":"multiline_function_chains"},"multiline_literal_brackets.html":{"name":"multiline_literal_brackets"},"multiline_parameters.html":{"name":"multiline_parameters"},"multiline_parameters_brackets.html":{"name":"multiline_parameters_brackets"},"multiple_closures_with_trailing_closure.html":{"name":"multiple_closures_with_trailing_closure"},"nesting.html":{"name":"nesting"},"nimble_operator.html":{"name":"nimble_operator"},"no_empty_block.html":{"name":"no_empty_block"},"no_extension_access_modifier.html":{"name":"no_extension_access_modifier"},"no_fallthrough_only.html":{"name":"no_fallthrough_only"},"no_grouping_extension.html":{"name":"no_grouping_extension"},"no_magic_numbers.html":{"name":"no_magic_numbers"},"no_space_in_method_call.html":{"name":"no_space_in_method_call"},"non_optional_string_data_conversion.html":{"name":"non_optional_string_data_conversion"},"non_overridable_class_declaration.html":{"name":"non_overridable_class_declaration"},"notification_center_detachment.html":{"name":"notification_center_detachment"},"ns_number_init_as_function_reference.html":{"name":"ns_number_init_as_function_reference"},"nslocalizedstring_key.html":{"name":"nslocalizedstring_key"},"nslocalizedstring_require_bundle.html":{"name":"nslocalizedstring_require_bundle"},"nsobject_prefer_isequal.html":{"name":"nsobject_prefer_isequal"},"number_separator.html":{"name":"number_separator"},"object_literal.html":{"name":"object_literal"},"one_declaration_per_file.html":{"name":"one_declaration_per_file"},"opening_brace.html":{"name":"opening_brace"},"operator_usage_whitespace.html":{"name":"operator_usage_whitespace"},"operator_whitespace.html":{"name":"operator_whitespace"},"optional_data_string_conversion.html":{"name":"optional_data_string_conversion"},"optional_enum_case_matching.html":{"name":"optional_enum_case_matching"},"orphaned_doc_comment.html":{"name":"orphaned_doc_comment"},"overridden_super_call.html":{"name":"overridden_super_call"},"override_in_extension.html":{"name":"override_in_extension"},"pattern_matching_keywords.html":{"name":"pattern_matching_keywords"},"period_spacing.html":{"name":"period_spacing"},"prefer_key_path.html":{"name":"prefer_key_path"},"prefer_nimble.html":{"name":"prefer_nimble"},"prefer_self_in_static_references.html":{"name":"prefer_self_in_static_references"},"prefer_self_type_over_type_of_self.html":{"name":"prefer_self_type_over_type_of_self"},"prefer_type_checking.html":{"name":"prefer_type_checking"},"prefer_zero_over_explicit_init.html":{"name":"prefer_zero_over_explicit_init"},"prefixed_toplevel_constant.html":{"name":"prefixed_toplevel_constant"},"private_action.html":{"name":"private_action"},"private_outlet.html":{"name":"private_outlet"},"private_over_fileprivate.html":{"name":"private_over_fileprivate"},"private_subject.html":{"name":"private_subject"},"private_swiftui_state.html":{"name":"private_swiftui_state"},"private_unit_test.html":{"name":"private_unit_test"},"prohibited_interface_builder.html":{"name":"prohibited_interface_builder"},"prohibited_super_call.html":{"name":"prohibited_super_call"},"protocol_property_accessors_order.html":{"name":"protocol_property_accessors_order"},"quick_discouraged_call.html":{"name":"quick_discouraged_call"},"quick_discouraged_focused_test.html":{"name":"quick_discouraged_focused_test"},"quick_discouraged_pending_test.html":{"name":"quick_discouraged_pending_test"},"raw_value_for_camel_cased_codable_enum.html":{"name":"raw_value_for_camel_cased_codable_enum"},"reduce_boolean.html":{"name":"reduce_boolean"},"reduce_into.html":{"name":"reduce_into"},"redundant_discardable_let.html":{"name":"redundant_discardable_let"},"redundant_nil_coalescing.html":{"name":"redundant_nil_coalescing"},"redundant_objc_attribute.html":{"name":"redundant_objc_attribute"},"redundant_optional_initialization.html":{"name":"redundant_optional_initialization"},"redundant_self_in_closure.html":{"name":"redundant_self_in_closure"},"redundant_set_access_control.html":{"name":"redundant_set_access_control"},"redundant_string_enum_value.html":{"name":"redundant_string_enum_value"},"redundant_type_annotation.html":{"name":"redundant_type_annotation"},"redundant_void_return.html":{"name":"redundant_void_return"},"required_deinit.html":{"name":"required_deinit"},"required_enum_case.html":{"name":"required_enum_case"},"return_arrow_whitespace.html":{"name":"return_arrow_whitespace"},"return_value_from_void_function.html":{"name":"return_value_from_void_function"},"self_binding.html":{"name":"self_binding"},"self_in_property_initialization.html":{"name":"self_in_property_initialization"},"shorthand_argument.html":{"name":"shorthand_argument"},"shorthand_operator.html":{"name":"shorthand_operator"},"shorthand_optional_binding.html":{"name":"shorthand_optional_binding"},"single_test_class.html":{"name":"single_test_class"},"sorted_enum_cases.html":{"name":"sorted_enum_cases"},"sorted_first_last.html":{"name":"sorted_first_last"},"sorted_imports.html":{"name":"sorted_imports"},"statement_position.html":{"name":"statement_position"},"static_operator.html":{"name":"static_operator"},"static_over_final_class.html":{"name":"static_over_final_class"},"strict_fileprivate.html":{"name":"strict_fileprivate"},"strong_iboutlet.html":{"name":"strong_iboutlet"},"superfluous_disable_command.html":{"name":"superfluous_disable_command"},"superfluous_else.html":{"name":"superfluous_else"},"switch_case_alignment.html":{"name":"switch_case_alignment"},"switch_case_on_newline.html":{"name":"switch_case_on_newline"},"syntactic_sugar.html":{"name":"syntactic_sugar"},"test_case_accessibility.html":{"name":"test_case_accessibility"},"todo.html":{"name":"todo"},"toggle_bool.html":{"name":"toggle_bool"},"trailing_closure.html":{"name":"trailing_closure"},"trailing_comma.html":{"name":"trailing_comma"},"trailing_newline.html":{"name":"trailing_newline"},"trailing_semicolon.html":{"name":"trailing_semicolon"},"trailing_whitespace.html":{"name":"trailing_whitespace"},"type_body_length.html":{"name":"type_body_length"},"type_contents_order.html":{"name":"type_contents_order"},"type_name.html":{"name":"type_name"},"typesafe_array_init.html":{"name":"typesafe_array_init"},"unavailable_condition.html":{"name":"unavailable_condition"},"unavailable_function.html":{"name":"unavailable_function"},"unhandled_throwing_task.html":{"name":"unhandled_throwing_task"},"unneeded_break_in_switch.html":{"name":"unneeded_break_in_switch"},"unneeded_override.html":{"name":"unneeded_override"},"unneeded_parentheses_in_closure_argument.html":{"name":"unneeded_parentheses_in_closure_argument"},"unneeded_synthesized_initializer.html":{"name":"unneeded_synthesized_initializer"},"unowned_variable_capture.html":{"name":"unowned_variable_capture"},"untyped_error_in_catch.html":{"name":"untyped_error_in_catch"},"unused_capture_list.html":{"name":"unused_capture_list"},"unused_closure_parameter.html":{"name":"unused_closure_parameter"},"unused_control_flow_label.html":{"name":"unused_control_flow_label"},"unused_declaration.html":{"name":"unused_declaration"},"unused_enumerated.html":{"name":"unused_enumerated"},"unused_import.html":{"name":"unused_import"},"unused_optional_binding.html":{"name":"unused_optional_binding"},"unused_parameter.html":{"name":"unused_parameter"},"unused_setter_value.html":{"name":"unused_setter_value"},"valid_ibinspectable.html":{"name":"valid_ibinspectable"},"vertical_parameter_alignment.html":{"name":"vertical_parameter_alignment"},"vertical_parameter_alignment_on_call.html":{"name":"vertical_parameter_alignment_on_call"},"vertical_whitespace.html":{"name":"vertical_whitespace"},"vertical_whitespace_between_cases.html":{"name":"vertical_whitespace_between_cases"},"vertical_whitespace_closing_braces.html":{"name":"vertical_whitespace_closing_braces"},"vertical_whitespace_opening_braces.html":{"name":"vertical_whitespace_opening_braces"},"void_function_in_ternary.html":{"name":"void_function_in_ternary"},"void_return.html":{"name":"void_return"},"weak_delegate.html":{"name":"weak_delegate"},"xct_specific_matcher.html":{"name":"xct_specific_matcher"},"xctfail_message.html":{"name":"xctfail_message"},"yoda_condition.html":{"name":"yoda_condition"},"rule-directory.html":{"name":"Rule Directory"},"Rules.html":{"name":"Rules"},"Guides.html":{"name":"Guides","abstract":"

The following guides are available globally.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Global%20Variables.html":{"name":"Global Variables","abstract":"

The following global variables are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Functions.html":{"name":"Functions","abstract":"

The following functions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"},"Macros.html":{"name":"Macros","abstract":"

The following macros are available globally.

"}} \ No newline at end of file diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_binding.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_binding.html deleted file mode 100644 index 7b712c810..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_binding.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - self_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Self Binding

- -

Re-bind self to a consistent identifier name.

- -
    -
  • Identifier: self_binding
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -bind_identifier - -“self” -
  • -
-

Non Triggering Examples

-
if let self = self { return }
-
-
guard let self = self else { return }
-
-
if let this = this { return }
-
-
guard let this = this else { return }
-
-
//
-// bind_identifier: "this"
-//
-
-if let this = self { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-guard let this = self else { return }
-
-
-

Triggering Examples

-
if let ↓`self` = self { return }
-
-
guard let ↓`self` = self else { return }
-
-
if let ↓this = self { return }
-
-
guard let ↓this = self else { return }
-
-
//
-// bind_identifier: "this"
-//
-
-if let ↓self = self { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-guard let ↓self = self else { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-if let ↓self { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-guard let ↓self else { return }
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_in_property_initialization.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_in_property_initialization.html deleted file mode 100644 index 5b63e3ed8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/self_in_property_initialization.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - self_in_property_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Self in Property Initialization

- -

self refers to the unapplied NSObject.self() method, which is likely not expected; make the variable lazy to be able to refer to the current instance or use ClassName.self

- -
    -
  • Identifier: self_in_property_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class View: UIView {
-    let button: UIButton = {
-        return UIButton()
-    }()
-}
-
-
class View: UIView {
-    lazy var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(otherObject, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    private let collectionView: UICollectionView = {
-        let layout = UICollectionViewFlowLayout()
-        let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
-        collectionView.registerReusable(Cell.self)
-
-        return collectionView
-    }()
-}
-
-

Triggering Examples

-
class View: UIView {
-    ↓var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    ↓let button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_argument.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_argument.html deleted file mode 100644 index 49c4b5e3c..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_argument.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - shorthand_argument Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Argument

- -

Shorthand arguments like $0, $1, etc. in closures can be confusing. Avoid using them too far away from the beginning of the closure. Optionally, while usage of a single shorthand argument is okay, more than one or complex ones with field accesses might increase the risk of obfuscation.

- -
    -
  • Identifier: shorthand_argument
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allow_until_line_after_opening_brace - -4 -
    -always_disallow_more_than_one - -false -
    -always_disallow_member_access - -false -
  • -
-

Non Triggering Examples

-
f { $0 }
-
-
f {
-    $0
-  + $1
-  + $2
-}
-
-
f { $0.a + $0.b }
-
-
//
-// allow_until_line_after_opening_brace: 1
-//
-
-f {
-    $0
-  +  g { $0 }
-
-
-

Triggering Examples

-
f {
-    $0
-  + $1
-  + $2
-
-  + ↓$0
-}
-
-
//
-// allow_until_line_after_opening_brace: 5
-//
-
-f {
-    $0
-  + $1
-  + $2
-  +  5
-  + $0
-  + ↓$1
-}
-
-
-
//
-// always_disallow_more_than_one: true
-//
-
-f { ↓$0 + ↓$1 }
-
-
-
//
-// allow_until_line_after_opening_brace: 3
-// always_disallow_member_access: true
-//
-
-f {
-    ↓$0.a
-  + ↓$0.b
-  + $1
-  + ↓$2.c
-}
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_operator.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_operator.html deleted file mode 100644 index ac1fae5dc..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_operator.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - shorthand_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Operator

- -

Prefer shorthand operators (+=, -=, *=, /=) over doing the operation and assigning

- -
    -
  • Identifier: shorthand_operator
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
foo -= 1
-
-
foo += variable
-
-
foo *= bar.method()
-
-
self.foo = foo / 1
-
-
foo = self.foo + 1
-
-
page = ceilf(currentOffset * pageWidth)
-
-
foo = aMethod(foo / bar)
-
-
foo = aMethod(bar + foo)
-
-
public func -= (lhs: inout Foo, rhs: Int) {
-    lhs = lhs - rhs
-}
-
-
var helloWorld = "world!"
- helloWorld = "Hello, " + helloWorld
-
-
angle = someCheck ? angle : -angle
-
-
seconds = seconds * 60 + value
-
-

Triggering Examples

-
↓foo = foo * 1
-
-
↓foo = foo / aVariable
-
-
↓foo = foo - bar.method()
-
-
↓foo.aProperty = foo.aProperty - 1
-
-
↓self.aProperty = self.aProperty * 1
-
-
↓n = n + i / outputLength
-
-
↓n = n - i / outputLength
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_optional_binding.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_optional_binding.html deleted file mode 100644 index c7e5abcd5..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/shorthand_optional_binding.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - shorthand_optional_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Optional Binding

- -

Use shorthand syntax for optional binding

- -
    -
  • Identifier: shorthand_optional_binding
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.7.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if let i {}
-if let i = a {}
-guard let i = f() else {}
-if var i = i() {}
-if let i = i as? Foo {}
-guard let `self` = self else {}
-while var i { i = nil }
-
-

Triggering Examples

-
if ↓let i = i {}
-if ↓let self = self {}
-if ↓var `self` = `self` {}
-if i > 0, ↓let j = j {}
-if ↓let i = i, ↓var j = j {}
-
-
guard ↓let i = i else {}
-guard ↓let self = self else {}
-guard ↓var `self` = `self` else {}
-guard i > 0, ↓let j = j else {}
-guard ↓let i = i, ↓var j = j else {}
-
-
while ↓var i = i { i = nil }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/single_test_class.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/single_test_class.html deleted file mode 100644 index 36ed7aeef..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/single_test_class.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - single_test_class Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Single Test Class

- -

Test files should contain a single QuickSpec or XCTestCase class.

- -
    -
  • Identifier: single_test_class
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
class FooTests {  }
-
-
class FooTests: QuickSpec {  }
-
-
class FooTests: XCTestCase {  }
-
-

Triggering Examples

-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-↓class TotoTests: QuickSpec {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-↓class TotoTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-class TotoTests {  }
-
-
final ↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-class TotoTests {  }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_enum_cases.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_enum_cases.html deleted file mode 100644 index 0a08e3538..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_enum_cases.html +++ /dev/null @@ -1,490 +0,0 @@ - - - - sorted_enum_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Sorted Enum Cases

- -

Enum cases should be sorted

- -
    -
  • Identifier: sorted_enum_cases
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum foo {
-    case a
-    case b
-    case c
-}
-
-
enum foo {
-    case example
-    case exBoyfriend
-}
-
-
enum foo {
-    case a
-    case B
-    case c
-}
-
-
enum foo {
-    case a, b, c
-}
-
-
enum foo {
-    case a
-    case b, c
-}
-
-
enum foo {
-    case a(foo: Foo)
-    case b(String), c
-}
-
-
enum foo {
-    case a
-    case b, C, d
-}
-
-
@frozen
-enum foo {
-    case b
-    case a
-    case c, f, d
-}
-
-

Triggering Examples

-
enum foo {
-    ↓case b
-    ↓case a
-    case c
-}
-
-
enum foo {
-    ↓case B
-    ↓case a
-    case c
-}
-
-
enum foo {
-    case ↓b, ↓a, c
-}
-
-
enum foo {
-    case ↓B, ↓a, c
-}
-
-
enum foo {
-    ↓case b, c
-    ↓case a
-}
-
-
enum foo {
-    case a
-    case b, ↓d, ↓c
-}
-
-
enum foo {
-    case a(foo: Foo)
-    case ↓c, ↓b(String)
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_first_last.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_first_last.html deleted file mode 100644 index 6a00131aa..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_first_last.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - sorted_first_last Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Min or Max over Sorted First or Last

- -

Prefer using min() or max() over sorted().first or sorted().last

- -
    -
  • Identifier: sorted_first_last
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let min = myList.min()
-
-
let min = myList.min(by: { $0 < $1 })
-
-
let min = myList.min(by: >)
-
-
let max = myList.max()
-
-
let max = myList.max(by: { $0 < $1 })
-
-
let message = messages.sorted(byKeyPath: #keyPath(Message.timestamp)).last
-
-
let message = messages.sorted(byKeyPath: "timestamp", ascending: false).first
-
-
myList.sorted().firstIndex(of: key)
-
-
myList.sorted().lastIndex(of: key)
-
-
myList.sorted().firstIndex(where: someFunction)
-
-
myList.sorted().lastIndex(where: someFunction)
-
-
myList.sorted().firstIndex { $0 == key }
-
-
myList.sorted().lastIndex { $0 == key }
-
-
myList.sorted().first(where: someFunction)
-
-
myList.sorted().last(where: someFunction)
-
-
myList.sorted().first { $0 == key }
-
-
myList.sorted().last { $0 == key }
-
-

Triggering Examples

-
↓myList.sorted().first
-
-
↓myList.sorted(by: { $0.description < $1.description }).first
-
-
↓myList.sorted(by: >).first
-
-
↓myList.map { $0 + 1 }.sorted().first
-
-
↓myList.sorted(by: someFunction).first
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.first
-
-
↓myList.sorted().last
-
-
↓myList.sorted().last?.something()
-
-
↓myList.sorted(by: { $0.description < $1.description }).last
-
-
↓myList.map { $0 + 1 }.sorted().last
-
-
↓myList.sorted(by: someFunction).last
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.last
-
-
↓myList.map { $0 + 1 }.sorted { $0.first < $1.first }.last
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_imports.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_imports.html deleted file mode 100644 index e31b9d459..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/sorted_imports.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - sorted_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Sorted Imports

- -

Imports should be sorted

- -
    -
  • Identifier: sorted_imports
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -grouping - -names -
  • -
-

Non Triggering Examples

-
import AAA
-import BBB
-import CCC
-import DDD
-
-
import Alamofire
-import API
-
-
import labc
-import Ldef
-
-
import BBB
-// comment
-import AAA
-import CCC
-
-
@testable import AAA
-import   CCC
-
-
import AAA
-@testable import   CCC
-
-
import EEE.A
-import FFF.B
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import CCC
-import DDD.B
-#endif
-import AAA
-import BBB
-
-

Triggering Examples

-
import AAA
-import ZZZ
-import ↓BBB
-import CCC
-
-
import DDD
-// comment
-import CCC
-import ↓AAA
-
-
@testable import CCC
-import   ↓AAA
-
-
import CCC
-@testable import   ↓AAA
-
-
import FFF.B
-import ↓EEE.A
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import DDD.B
-import ↓CCC
-#endif
-import AAA
-import BBB
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/statement_position.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/statement_position.html deleted file mode 100644 index c33bf1568..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/statement_position.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - statement_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Statement Position

- -

Else and catch should be on the same line, one space after the previous declaration

- -
    -
  • Identifier: statement_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -statement_mode - -default -
  • -
-

Non Triggering Examples

-
} else if {
-
-
} else {
-
-
} catch {
-
-
"}else{"
-
-
struct A { let catchphrase: Int }
-let a = A(
- catchphrase: 0
-)
-
-
struct A { let `catch`: Int }
-let a = A(
- `catch`: 0
-)
-
-

Triggering Examples

-
↓}else if {
-
-
↓}  else {
-
-
↓}
-catch {
-
-
↓}
-      catch {
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_operator.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_operator.html deleted file mode 100644 index 645bc52b8..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_operator.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - static_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Static Operator

- -

Operators should be declared as static functions, not free functions

- -
    -
  • Identifier: static_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class A: Equatable {
-  static func == (lhs: A, rhs: A) -> Bool {
-    return false
-  }
-
-
class A<T>: Equatable {
-    static func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-        return false
-    }
-
-
public extension Array where Element == Rule {
-  static func == (lhs: Array, rhs: Array) -> Bool {
-    if lhs.count != rhs.count { return false }
-    return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-  }
-}
-
-
private extension Optional where Wrapped: Comparable {
-  static func < (lhs: Optional, rhs: Optional) -> Bool {
-    switch (lhs, rhs) {
-    case let (lhs?, rhs?):
-      return lhs < rhs
-    case (nil, _?):
-      return true
-    default:
-      return false
-    }
-  }
-}
-
-

Triggering Examples

-
↓func == (lhs: A, rhs: A) -> Bool {
-  return false
-}
-
-
↓func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-  return false
-}
-
-
↓func == (lhs: [Rule], rhs: [Rule]) -> Bool {
-  if lhs.count != rhs.count { return false }
-  return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-}
-
-
private ↓func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool {
-  switch (lhs, rhs) {
-  case let (lhs?, rhs?):
-    return lhs < rhs
-  case (nil, _?):
-    return true
-  default:
-    return false
-  }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_over_final_class.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_over_final_class.html deleted file mode 100644 index 7b3a6774f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/static_over_final_class.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - static_over_final_class Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Static Over Final Class

- -

Prefer static over class when the declaration is not allowed to be overridden in child classes due to its context being final. Likewise, the compiler complains about open being used in final classes.

- -
    -
  • Identifier: static_over_final_class
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-    static func f() {}
-}
-
-
class C {
-    static var i: Int { 0 }
-}
-
-
class C {
-    static subscript(_: Int) -> Int { 0 }
-}
-
-
class C {
-    class func f() {}
-}
-
-
final class C {}
-
-
final class C {
-    class D {
-      class func f() {}
-    }
-}
-
-

Triggering Examples

-
class C {
-    ↓final class func f() {}
-}
-
-
class C {
-    ↓final class var i: Int { 0 }
-}
-
-
class C {
-    ↓final class subscript(_: Int) -> Int { 0 }
-}
-
-
final class C {
-    ↓class func f() {}
-}
-
-
class C {
-    final class D {
-        ↓class func f() {}
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/strict_fileprivate.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/strict_fileprivate.html deleted file mode 100644 index 02d27dd91..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/strict_fileprivate.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - strict_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strict Fileprivate

- -

fileprivate should be avoided

- -
    -
  • Identifier: strict_fileprivate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public
-    extension String {
-        var i: Int { 1 }
-    }
-
-
    private enum E {
-        func f() {}
-    }
-
-
    public struct S {
-        internal let i: Int
-    }
-
-
    open class C {
-        private func f() {}
-    }
-
-
    internal actor A {}
-
-

Triggering Examples

-
    ↓fileprivate class C {
-        ↓fileprivate func f() {}
-    }
-
-
    ↓fileprivate extension String {
-        ↓fileprivate var isSomething: Bool { self == "something" }
-    }
-
-
    ↓fileprivate actor A {
-        ↓fileprivate let i = 1
-    }
-
-
    ↓fileprivate struct C {
-        ↓fileprivate(set) var myInt = 4
-    }
-
-
    struct Outter {
-        struct Inter {
-            ↓fileprivate struct Inner {}
-        }
-    }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/strong_iboutlet.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/strong_iboutlet.html deleted file mode 100644 index ea6d71c93..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/strong_iboutlet.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - strong_iboutlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strong IBOutlet

- -

@IBOutlets shouldn’t be declared as weak

- -
    -
  • Identifier: strong_iboutlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    weak var label: UILabel?
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓unowned var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var textField: UITextField?
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_disable_command.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_disable_command.html deleted file mode 100644 index f89c69abf..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_disable_command.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - superfluous_disable_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Superfluous Disable Command

- -

SwiftLint ‘disable’ commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use “ - ” if you wish to document a command.

- -
    -
  • Identifier: superfluous_disable_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let abc:Void // swiftlint:disable:this colon
-
-
// swiftlint:disable colon
-let abc:Void
-// swiftlint:enable colon
-
-

Triggering Examples

-
let abc: Void // swiftlint:disable:this colon
-
-
// swiftlint:disable colon
-let abc: Void
-// swiftlint:enable colon
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_else.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_else.html deleted file mode 100644 index 58dba1b3a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/superfluous_else.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - superfluous_else Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Superfluous Else

- -

Else branches should be avoided when the previous if-block exits the current scope

- -
    -
  • Identifier: superfluous_else
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if i > 0 {
-    // comment
-} else if i < 12 {
-    return 2
-} else {
-    return 3
-}
-
-
if i > 0 {
-    let a = 1
-    if a > 1 {
-        // comment
-    } else {
-        return 1
-    }
-    // comment
-} else {
-    return 3
-}
-
-
if i > 0 {
-    if a > 1 {
-        return 1
-    }
-} else {
-    return 3
-}
-
-
for i in list {
-    if i > 12 {
-        // Do nothing
-    } else {
-        continue
-    }
-    if i > 14 {
-        // Do nothing
-    } else if i > 13 {
-        break
-    }
-}
-
-
if #available(iOS 13, *) {
-    return
-} else {
-    deprecatedFunction()
-}
-
-

Triggering Examples

-
if i > 0 {
-    return 1
-    // comment
-} ↓else {
-    return 2
-}
-
-
if i > 0 {
-    return 1
-} ↓else if i < 12 {
-    return 2
-} ↓else if i > 18 {
-    return 3
-}
-
-
if i > 0 {
-    if i < 12 {
-        return 5
-    } ↓else {
-        if i > 11 {
-            return 6
-        } ↓else {
-            return 7
-        }
-    }
-} ↓else if i < 12 {
-    return 2
-} ↓else if i < 24 {
-    return 8
-} ↓else {
-    return 3
-}
-
-
for i in list {
-    if i > 13 {
-        return
-    } ↓else if i > 12 {
-        continue
-    } ↓else if i > 11 {
-        break
-    } ↓else {
-        throw error
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/swift-syntax-dashboard.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/swift-syntax-dashboard.html deleted file mode 100644 index 18446c2a1..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/swift-syntax-dashboard.html +++ /dev/null @@ -1,648 +0,0 @@ - - - - Swift Syntax Dashboard Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Swift Syntax Dashboard

- -

Efforts are actively under way to migrate most rules off SourceKit to use SwiftSyntax instead.

- -

Rules written using SwiftSyntax tend to be significantly faster and have fewer false positives -than rules that use SourceKit to get source structure information.

- -

23 out of 239 (9%) -of SwiftLint’s linter rules use SourceKit.

-

Rules Using SourceKit

-

Default Rules (6)

- - -

Opt-in Rules (17)

- - -

Rules not Using SourceKit

-

Default Rules (93)

- - -

Opt-in Rules (123)

- - - -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_alignment.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_alignment.html deleted file mode 100644 index 9f75c6a78..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_alignment.html +++ /dev/null @@ -1,578 +0,0 @@ - - - - switch_case_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Switch and Case Statement Alignment

- -

Case statements should vertically align with their closing brace, or indented if configured otherwise.

- -
    -
  • Identifier: switch_case_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -indented_cases - -false -
    -ignore_one_liners - -false -
  • -
-

Non Triggering Examples

-
switch someBool {
-case true: // case 1
-    print('red')
-case false:
-    /*
-    case 2
-    */
-    if case let .someEnum(val) = someFunc() {
-        print('blue')
-    }
-}
-enum SomeEnum {
-    case innocent
-}
-
-
if aBool {
-    switch someBool {
-    case true:
-        print('red')
-    case false:
-        print('blue')
-    }
-}
-
-
switch someInt {
-// comments ignored
-case 0:
-    // zero case
-    print('Zero')
-case 1:
-    print('One')
-default:
-    print('Some other number')
-}
-
-
func f() -> Int {
-    return switch i {
-    case 1: 1
-    default: 2
-    }
-}
-
-
//
-// ignore_one_liners: true
-//
-
-switch i { case .x: 1 default: 0 }
-
-
-
//
-// ignore_one_liners: true
-//
-
-let a = switch i { case .x: 1 default: 0 }
-
-
-

Triggering Examples

-
switch someBool {
-    ↓case true:
-        print("red")
-    ↓case false:
-        print("blue")
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-            print('red')
-        ↓case false:
-            print('blue')
-    }
-}
-
-
switch someInt {
-    ↓case 0:
-        print('Zero')
-    ↓case 1:
-        print('One')
-    ↓default:
-        print('Some other number')
-}
-
-
let a = switch i {
-    ↓case 1: 1
-    ↓default: 2
-}
-
-
switch someBool {
-case true:
-    print('red')
-    ↓case false:
-        print('blue')
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-        print('red')
-    case false:
-    print('blue')
-    }
-}
-
-
let a = switch i {
-case 1: 1
-    ↓default: 2
-}
-
-
switch i { ↓case .x: 1 ↓default: 0 }
-
-
//
-// ignore_one_liners: true
-//
-
-switch i {
-↓case .x: 1 ↓default: 0 }
-
-
-
//
-// ignore_one_liners: true
-//
-
-switch i { ↓case .x: 1 ↓default: 0
-}
-
-
-
//
-// ignore_one_liners: true
-//
-
-switch i
-{ ↓case .x: 1 ↓default: 0 }
-
-
-
//
-// ignore_one_liners: true
-//
-
-let a = switch i {
-case .x: 1 ↓default: 0
-}
-
-
-
//
-// ignore_one_liners: true
-//
-
-let a = switch i {
-↓case .x: 1 ↓default: 0 }
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_on_newline.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_on_newline.html deleted file mode 100644 index 37f3b1d55..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/switch_case_on_newline.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - switch_case_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Cases on Newline

- -

Cases inside a switch should always be on a newline

- -
    -
  • Identifier: switch_case_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
/*case 1: */return true
-
-
//case 1:
- return true
-
-
let x = [caseKey: value]
-
-
let x = [key: .default]
-
-
if case let .someEnum(value) = aFunction([key: 2]) { }
-
-
guard case let .someEnum(value) = aFunction([key: 2]) { }
-
-
for case let .someEnum(value) = aFunction([key: 2]) { }
-
-
enum Environment {
- case development
-}
-
-
enum Environment {
- case development(url: URL)
-}
-
-
enum Environment {
- case development(url: URL) // staging
-}
-
-
switch foo {
-    case 1:
- return true
-}
-
-
switch foo {
-    default:
- return true
-}
-
-
switch foo {
-    case let value:
- return true
-}
-
-
switch foo {
-    case .myCase: // error from network
- return true
-}
-
-
switch foo {
-    case let .myCase(value) where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(value)
- where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(code: lhsErrorCode, description: _)
- where lhsErrorCode > 10:
-return false
-}
-
-
switch foo {
-    case #selector(aFunction(_:)):
- return false
-}
-
-
do {
-  let loadedToken = try tokenManager.decodeToken(from: response)
-  return loadedToken
-} catch { throw error }
-
-

Triggering Examples

-
switch foo {
-    ↓case 1: return true
-}
-
-
switch foo {
-    ↓case let value: return true
-}
-
-
switch foo {
-    ↓default: return true
-}
-
-
switch foo {
-    ↓case "a string": return false
-}
-
-
switch foo {
-    ↓case .myCase: return false // error from network
-}
-
-
switch foo {
-    ↓case let .myCase(value) where value > 10: return false
-}
-
-
switch foo {
-    ↓case #selector(aFunction(_:)): return false
-}
-
-
switch foo {
-    ↓case let .myCase(value)
- where value > 10: return false
-}
-
-
switch foo {
-    ↓case .first,
- .second: return false
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/syntactic_sugar.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/syntactic_sugar.html deleted file mode 100644 index f3d1a08d7..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/syntactic_sugar.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - syntactic_sugar Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Syntactic Sugar

- -

Shorthand syntactic sugar should be used, i.e. [Int] instead of Array.

- -
    -
  • Identifier: syntactic_sugar
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let x: [Int]
-
-
let x: [Int: String]
-
-
let x: Int?
-
-
func x(a: [Int], b: Int) -> [Int: Any]
-
-
let x: Int!
-
-
extension Array {
-  func x() { }
-}
-
-
extension Dictionary {
-  func x() { }
-}
-
-
let x: CustomArray<String>
-
-
var currentIndex: Array<OnboardingPage>.Index?
-
-
func x(a: [Int], b: Int) -> Array<Int>.Index
-
-
unsafeBitCast(nonOptionalT, to: Optional<T>.self)
-
-
unsafeBitCast(someType, to: Swift.Array<T>.self)
-
-
IndexingIterator<Array<Dictionary<String, AnyObject>>>.self
-
-
let y = Optional<String>.Type
-
-
type is Optional<String>.Type
-
-
let x: Foo.Optional<String>
-
-
let x = case Optional<Any>.none = obj
-
-
let a = Swift.Optional<String?>.none
-
-

Triggering Examples

-
let x: ↓Array<String>
-
-
let x: ↓Dictionary<Int, String>
-
-
let x: ↓Optional<Int>
-
-
let x: ↓Swift.Array<String>
-
-
func x(a: ↓Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: ↓Swift.Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: [Int], b: Int) -> ↓Dictionary<Int, String>
-
-
let x = y as? ↓Array<[String: Any]>
-
-
let x = Box<Array<T>>()
-
-
func x() -> Box<↓Array<T>>
-
-
func x() -> ↓Dictionary<String, Any>?
-
-
typealias Document = ↓Dictionary<String, T?>
-
-
func x(_ y: inout ↓Array<T>)
-
-
let x:↓Dictionary<String, ↓Dictionary<Int, Int>>
-
-
func x() -> Any { return ↓Dictionary<Int, String>()}
-
-
let x = ↓Array<String>.array(of: object)
-
-
let x = ↓Swift.Array<String>.array(of: object)
-
-
@_specialize(where S == ↓Array<Character>)
-public init<S: Sequence>(_ elements: S)
-
-
let dict: [String: Any] = [:]
-_ = dict["key"] as? ↓Optional<String?> ?? Optional<String?>.none
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/test_case_accessibility.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/test_case_accessibility.html deleted file mode 100644 index b59ce8301..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/test_case_accessibility.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - test_case_accessibility Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Test Case Accessibility

- -

Test cases should only contain private non-test members

- -
    -
  • Identifier: test_case_accessibility
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allowed_prefixes - -[] -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
let foo: String?
-
-
let foo: String?
-
-class FooTests: XCTestCase {
-    static let allTests: [String] = []
-
-    private let foo: String {
-        let nestedMember = "hi"
-        return nestedMember
-    }
-
-    override static func setUp() {}
-
-    override func setUp() {}
-
-    override func setUpWithError() throws {}
-
-    override static func tearDown() {}
-
-    override func tearDown() {}
-
-    override func tearDownWithError() {}
-
-    override func someFutureXCTestFunction() {
-        super.someFutureXCTestFunction()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(true)
-    }
-
-    func testBar() {
-        func nestedFunc() {}
-    }
-
-    private someFunc(hasParam: Bool) {}
-}
-
-
class FooTests: XCTestCase {
-    private struct MockSomething: Something {}
-}
-
-
class FooTests: XCTestCase {
-    override init() {
-        super.init()
-        let foo = 1
-        var bar = 2
-    }
-}
-
-
//
-// allowed_prefixes: ["allowedPrefix"]
-//
-
-class FooTests: XCTestCase {
-    func allowedPrefixTestFoo() {}
-}
-
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-

Triggering Examples

-
class FooTests: XCTestCase {
-    ↓typealias Bar = Foo.Bar
-
-    ↓var foo: String?
-    ↓let bar: String?
-
-    ↓static func foo() {}
-
-    ↓func setUp(withParam: String) {}
-
-    ↓func foobar() {}
-
-    ↓func not_testBar() {}
-
-    ↓enum Nested {}
-
-    ↓static func testFoo() {}
-
-    ↓static func allTests() {}
-
-    ↓func testFoo(hasParam: Bool) {}
-}
-
-final class BarTests: XCTestCase {
-    ↓class Nested {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/todo.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/todo.html deleted file mode 100644 index 035de786e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/todo.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Todo

- -

TODOs and FIXMEs should be resolved.

- -
    -
  • Identifier: todo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only - -[TODO, FIXME] -
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
// notaFIXME:
-
-

Triggering Examples

-
// ↓TODO:
-
-
// ↓FIXME:
-
-
// ↓TODO(note)
-
-
// ↓FIXME(note)
-
-
/* ↓FIXME: */
-
-
/* ↓TODO: */
-
-
/** ↓FIXME: */
-
-
/** ↓TODO: */
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/toggle_bool.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/toggle_bool.html deleted file mode 100644 index bac1627f9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/toggle_bool.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - toggle_bool Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Toggle Bool

- -

Prefer someBool.toggle() over someBool = !someBool

- -
    -
  • Identifier: toggle_bool
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
isHidden.toggle()
-
-
view.clipsToBounds.toggle()
-
-
func foo() { abc.toggle() }
-
-
view.clipsToBounds = !clipsToBounds
-
-
disconnected = !connected
-
-
result = !result.toggle()
-
-

Triggering Examples

-
↓isHidden = !isHidden
-
-
↓view.clipsToBounds = !view.clipsToBounds
-
-
func foo() { ↓abc = !abc }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_closure.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_closure.html deleted file mode 100644 index fedfaeeb4..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_closure.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Closure

- -

Trailing closure syntax should be used whenever possible

- -
    -
  • Identifier: trailing_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only_single_muted_parameter - -false -
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
foo.bar()
-
-
foo.reduce(0) { $0 + 1 }
-
-
if let foo = bar.map({ $0 + 1 }) { }
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
offsets.sorted { $0.offset < $1.offset }
-
-
foo.something({ return 1 }())
-
-
foo.something({ return $0 }(1))
-
-
foo.something(0, { return 1 }())
-
-
for x in list.filter({ $0.isValid }) {}
-
-
if list.allSatisfy({ $0.isValid }) {}
-
-
foo(param1: 1, param2: { _ in true }, param3: 0)
-
-
foo(param1: 1, param2: { _ in true }) { $0 + 1 }
-
-
foo(param1: { _ in false }, param2: { _ in true })
-
-
foo(param1: { _ in false }, param2: { _ in true }, param3: { _ in false })
-
-
if f({ true }), g({ true }) {
-    print("Hello")
-}
-
-
for i in h({ [1,2,3] }) {
-    print(i)
-}
-
-

Triggering Examples

-
foo.map(↓{ $0 + 1 })
-
-
foo.reduce(0, combine: ↓{ $0 + 1 })
-
-
offsets.sorted(by: ↓{ $0.offset < $1.offset })
-
-
foo.something(0, ↓{ $0 + 1 })
-
-
foo.something(param1: { _ in true }, param2: 0, param3: ↓{ _ in false })
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_comma.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_comma.html deleted file mode 100644 index 8d2c64e40..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_comma.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - trailing_comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Comma

- -

Trailing commas in arrays and dictionaries should be avoided/enforced.

- -
    -
  • Identifier: trailing_comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -mandatory_comma - -false -
  • -
-

Non Triggering Examples

-
let foo = [1, 2, 3]
-
-
let foo = []
-
-
let foo = [:]
-
-
let foo = [1: 2, 2: 3]
-
-
let foo = [Void]()
-
-
let example = [ 1,
- 2
- // 3,
-]
-
-
foo([1: "\(error)"])
-
-
let foo = [Int]()
-
-

Triggering Examples

-
let foo = [1, 2, 3↓,]
-
-
let foo = [1, 2, 3↓, ]
-
-
let foo = [1, 2, 3   ↓,]
-
-
let foo = [1: 2, 2: 3↓, ]
-
-
struct Bar {
- let foo = [1: 2, 2: 3↓, ]
-}
-
-
let foo = [1, 2, 3↓,] + [4, 5, 6↓,]
-
-
let example = [ 1,
-2↓,
- // 3,
-]
-
-
let foo = ["אבג", "αβγ", "🇺🇸"↓,]
-
-
class C {
- #if true
- func f() {
- let foo = [1, 2, 3↓,]
- }
- #endif
-}
-
-
foo([1: "\(error)"↓,])
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_newline.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_newline.html deleted file mode 100644 index 0a66d1c6d..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_newline.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - trailing_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Newline

- -

Files should have a single trailing newline

- -
    -
  • Identifier: trailing_newline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let a = 0
-
-
-

Triggering Examples

-
let a = 0
-
-
let a = 0
-
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_semicolon.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_semicolon.html deleted file mode 100644 index 38ef06015..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_semicolon.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - trailing_semicolon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Semicolon

- -

Lines should not have trailing semicolons

- -
    -
  • Identifier: trailing_semicolon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let a = 0
-
-
let a = 0; let b = 0
-
-

Triggering Examples

-
let a = 0↓;
-
-
-
let a = 0↓;
-let b = 1
-
-
let a = 0↓; // a comment
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_whitespace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_whitespace.html deleted file mode 100644 index 77f100fa9..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/trailing_whitespace.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - trailing_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Whitespace

- -

Lines should not have trailing whitespace

- -
    -
  • Identifier: trailing_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignores_empty_lines - -false -
    -ignores_comments - -true -
  • -
-

Non Triggering Examples

-
let name: String
-
-
-
//
-
-
-
// 
-
-
-
let name: String //
-
-
-
let name: String // 
-
-
-

Triggering Examples

-
let name: String 
-
-
-
/* */ let name: String 
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_body_length.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_body_length.html deleted file mode 100644 index 6eb519466..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_body_length.html +++ /dev/null @@ -1,5516 +0,0 @@ - - - - type_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Body Length

- -

Type bodies should not span too many lines

- -
    -
  • Identifier: type_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -250 -
    -error - -350 -
  • -
-

Non Triggering Examples

-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
class Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
class Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
struct Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
struct Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
enum Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
enum Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-
actor Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
actor Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
actor Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
actor Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-

Triggering Examples

-
↓class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓actor Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_contents_order.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_contents_order.html deleted file mode 100644 index 10de8b7cf..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_contents_order.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - type_contents_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Contents Order

- -

Specifies the order of subtypes, properties, methods & more within a type.

- -
    -
  • Identifier: type_contents_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -order - -[[case], [type_alias, associated_type], [subtype], [type_property], [instance_property], [ib_inspectable], [ib_outlet], [initializer], [type_method], [view_life_cycle_method], [ib_action], [other_method], [subscript], [deinitializer]] -
  • -
-

Non Triggering Examples

-
class TestViewController: UIViewController {
-// Type Aliases
-typealias CompletionHandler = ((TestEnum) -> Void)
-
-// Subtypes
-class TestClass {
-    // 10 lines
-}
-
-struct TestStruct {
-    // 3 lines
-}
-
-enum TestEnum {
-    // 5 lines
-}
-
-// Type Properties
-static let cellIdentifier: String = "AmazingCell"
-
-// Instance Properties
-var shouldLayoutView1: Bool!
-weak var delegate: TestViewControllerDelegate?
-private var hasLayoutedView1: Bool = false
-private var hasLayoutedView2: Bool = false
-
-private var hasAnyLayoutedView: Bool {
-     return hasLayoutedView1 || hasLayoutedView2
-}
-
-// IBOutlets
-@IBOutlet private var view1: UIView!
-@IBOutlet private var view2: UIView!
-
-// Initializers
-override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-}
-
-required init?(coder aDecoder: NSCoder) {
-    fatalError("init(coder:) has not been implemented")
-}
-
-// Type Methods
-static func makeViewController() -> TestViewController {
-    // some code
-}
-
-// View Life-Cycle Methods
-override func viewDidLoad() {
-    super.viewDidLoad()
-
-    view1.setNeedsLayout()
-    view1.layoutIfNeeded()
-    hasLayoutedView1 = true
-}
-
-override func willMove(toParent parent: UIViewController?) {
-    super.willMove(toParent: parent)
-    if parent == nil {
-        viewModel.willMoveToParent()
-    }
-}
-
-override func viewDidLayoutSubviews() {
-    super.viewDidLayoutSubviews()
-
-    view2.setNeedsLayout()
-    view2.layoutIfNeeded()
-    hasLayoutedView2 = true
-}
-
-override func viewIsAppearing(_ animated: Bool) {
-    super.viewIsAppearing(animated)
-}
-
-// IBActions
-@IBAction func goNextButtonPressed() {
-    goToNextVc()
-    delegate?.didPressTrackedButton()
-}
-
-// Other Methods
-func goToNextVc() { /* TODO */ }
-
-func goToInfoVc() { /* TODO */ }
-
-func goToRandomVc() {
-    let viewCtrl = getRandomVc()
-    present(viewCtrl, animated: true)
-}
-
-private func getRandomVc() -> UIViewController { return UIViewController() }
-
-// Subscripts
-subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-    get {
-        return "This is just a test"
-    }
-
-    set {
-        log.warning("Just a test", newValue)
-    }
-}
-
-deinit {
-    log.debug("deinit")
-},
-}
-
-

Triggering Examples

-
class TestViewController: UIViewController {
-    // Subtypes
-    ↓class TestClass {
-        // 10 lines
-    }
-
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-}
-
-
class TestViewController: UIViewController {
-    // Stored Type Properties
-    ↓static let cellIdentifier: String = "AmazingCell"
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Stored Instance Properties
-    ↓var shouldLayoutView1: Bool!
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-}
-
-
class TestViewController: UIViewController {
-    // IBOutlets
-    @IBOutlet private ↓var view1: UIView!
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-}
-
-
class TestViewController: UIViewController {
-
-    // deinitializer
-    ↓deinit {
-        log.debug("deinit")
-    }
-
-    // Initializers
-    override ↓init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-}
-
-
class TestViewController: UIViewController {
-    // View Life-Cycle Methods
-    override ↓func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-}
-
-
class TestViewController: UIViewController {
-    // IBActions
-    @IBAction ↓func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    // View Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Other Methods
-    ↓func goToNextVc() { /* TODO */ }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Subscripts
-    ↓subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_name.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_name.html deleted file mode 100644 index 5c0a1e3ad..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/type_name.html +++ /dev/null @@ -1,576 +0,0 @@ - - - - type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Name

- -

Type name should only contain alphanumeric characters, start with an uppercase character and span between 3 and 40 characters in length. -Private types may start with an underscore.

- -
    -
  • Identifier: type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -min_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -3 -
    -error - -0 -
    -
    -max_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -40 -
    -error - -1000 -
    -
    -excluded - -[] -
    -allowed_symbols - -[] -
    -unallowed_symbols_severity - -error -
    -validates_start_with_lowercase - -error -
    -validate_protocols - -true -
  • -
-

Non Triggering Examples

-
class MyType {}
-
-
private struct _MyType {}
-
-
enum AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
typealias Foo = Void
-
-
private typealias Foo = Void
-
-
protocol Foo {
-  associatedtype Bar
-}
-
-
protocol Foo {
-  associatedtype Bar: Equatable
-}
-
-
enum MyType {
-case value
-}
-
-
//
-// validate_protocols: false
-//
-
-protocol P {}
-
-
-
struct SomeStruct {
-  enum `Type` {
-    case x, y, z
-  }
-}
-
-

Triggering Examples

-
class ↓myType {}
-
-
enum ↓_MyType {}
-
-
private struct ↓MyType_ {}
-
-
struct ↓My {}
-
-
struct ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
class ↓MyView_Previews
-
-
private struct ↓_MyView_Previews
-
-
typealias ↓X = Void
-
-
private typealias ↓Foo_Bar = Void
-
-
private typealias ↓foo = Void
-
-
typealias ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = Void
-
-
protocol Foo {
-  associatedtype ↓X
-}
-
-
protocol Foo {
-  associatedtype ↓Foo_Bar: Equatable
-}
-
-
protocol Foo {
-  associatedtype ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-}
-
-
protocol ↓X {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/typesafe_array_init.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/typesafe_array_init.html deleted file mode 100644 index 2e8bc9e9e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/typesafe_array_init.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - typesafe_array_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type-safe Array Init

- -

Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array

- -
    -
  • Identifier: typesafe_array_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum MyError: Error {}
-let myResult: Result<String, MyError> = .success("")
-let result: Result<Any, MyError> = myResult.map { $0 }
-
-
struct IntArray {
-    let elements = [1, 2, 3]
-    func map<T>(_ transformer: (Int) throws -> T) rethrows -> [T] {
-        try elements.map(transformer)
-    }
-}
-let ints = IntArray()
-let intsCopy = ints.map { $0 }
-
-

Triggering Examples

-
func f<Seq: Sequence>(s: Seq) -> [Seq.Element] {
-    s.↓map({ $0 })
-}
-
-
func f(array: [Int]) -> [Int] {
-    array.↓map { $0 }
-}
-
-
let myInts = [1, 2, 3].↓map { return $0 }
-
-
struct Generator: Sequence, IteratorProtocol {
-    func next() -> Int? { nil }
-}
-let array = Generator().↓map { i in i }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_condition.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_condition.html deleted file mode 100644 index bb260213b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_condition.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - unavailable_condition Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unavailable Condition

- -

Use #unavailable/#available instead of #available/#unavailable with an empty body.

- -
    -
  • Identifier: unavailable_condition
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.6.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if #unavailable(iOS 13) {
-  loadMainWindow()
-}
-
-
if #available(iOS 9.0, *) {
-  doSomething()
-} else {
-  legacyDoSomething()
-}
-
-
if #available(macOS 11.0, *) {
-   // Do nothing
-} else if #available(macOS 10.15, *) {
-   print("do some stuff")
-}
-
-

Triggering Examples

-
if ↓#available(iOS 14.0) {
-
-} else {
-  oldIos13TrackingLogic(isEnabled: ASIdentifierManager.shared().isAdvertisingTrackingEnabled)
-}
-
-
if ↓#available(iOS 14.0) {
-  // we don't need to do anything here
-} else {
-  oldIos13TrackingLogic(isEnabled: ASIdentifierManager.shared().isAdvertisingTrackingEnabled)
-}
-
-
if ↓#available(iOS 13, *) {} else {
-  loadMainWindow()
-}
-
-
if ↓#unavailable(iOS 13) {
-  // Do nothing
-} else if i < 2 {
-  loadMainWindow()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_function.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_function.html deleted file mode 100644 index 17c83f3a1..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unavailable_function.html +++ /dev/null @@ -1,461 +0,0 @@ - - - - unavailable_function Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unavailable Function

- -

Unimplemented functions should be marked as unavailable

- -
    -
  • Identifier: unavailable_function
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-  @available(*, unavailable)
-  public required init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
func jsonValue(_ jsonString: String) -> NSObject {
-   let data = jsonString.data(using: .utf8)!
-   let result = try! JSONSerialization.jsonObject(with: data, options: [])
-   if let dict = (result as? [String: Any])?.bridge() {
-    return dict
-   } else if let array = (result as? [Any])?.bridge() {
-    return array
-   }
-   fatalError()
-}
-
-
func resetOnboardingStateAndCrash() -> Never {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    fatalError("init(coder:) has not been implemented")
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    let reason = "init(coder:) has not been implemented"
-    fatalError(reason)
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
↓func resetOnboardingStateAndCrash() {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unhandled_throwing_task.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unhandled_throwing_task.html deleted file mode 100644 index 16421d943..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unhandled_throwing_task.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - unhandled_throwing_task Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unhandled Throwing Task

- -

Errors thrown inside this task are not handled, which may be unexpected. Handle errors inside the task, or use try await to access the Tasks value and handle errors. See this forum thread for more details: https://forums.swift.org/t/task-initializer-with-throwing-closure-swallows-error/56066

- -
    -
  • Identifier: unhandled_throwing_task
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
Task<Void, Never> {
-  try await myThrowingFunction()
-}
-
-
Task {
-  try? await myThrowingFunction()
-}
-
-
Task {
-  try! await myThrowingFunction()
-}
-
-
Task<Void, String> {
-  let text = try myThrowingFunction()
-  return text
-}
-
-
Task {
-  do {
-    try myThrowingFunction()
-  } catch let e {
-    print(e)
-  }
-}
-
-
func someFunction() throws {
-  Task {
-    anotherFunction()
-    do {
-      try myThrowingFunction()
-    } catch {
-      print(error)
-    }
-  }
-
-  try something()
-}
-
-
let task = Task {
-  try await myThrowingFunction()
-}
-
-
var task = Task {
-  try await myThrowingFunction()
-}
-
-
try await Task {
-  try await myThrowingFunction()
-}.value
-
-
executor.task = Task {
-  try await isolatedOpen(.init(executor.asUnownedSerialExecutor()))
-}
-
-
let result = await Task {
-  throw CancellationError()
-}.result
-
-
func makeTask() -> Task<String, Error> {
-  return Task {
-    try await someThrowingFunction()
-  }
-}
-
-
func makeTask() -> Task<String, Error> {
-  // Implicit return
-  Task {
-    try await someThrowingFunction()
-  }
-}
-
-
Task {
-  return Result {
-      try someThrowingFunc()
-  }
-}
-
-

Triggering Examples

-
↓Task {
-  try await myThrowingFunction()
-}
-
-
↓Task {
-  let text = try myThrowingFunction()
-  return text
-}
-
-
↓Task {
-  do {
-    try myThrowingFunction()
-  }
-}
-
-
↓Task {
-  do {
-    try myThrowingFunction()
-  } catch let e as FooError {
-    print(e)
-  }
-}
-
-
↓Task {
-  do {
-    throw FooError.bar
-  }
-}
-
-
↓Task {
-  throw FooError.bar
-}
-
-
↓Task<_, _> {
-  throw FooError.bar
-}
-
-
↓Task<Void,_> {
-  throw FooError.bar
-}
-
-
↓Task {
-  do {
-    try foo()
-  } catch {
-    try bar()
-  }
-}
-
-
↓Task {
-  do {
-    try foo()
-  } catch {
-    throw BarError()
-  }
-}
-
-
func doTask() {
-  ↓Task {
-    try await someThrowingFunction()
-  }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_break_in_switch.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_break_in_switch.html deleted file mode 100644 index b784fa637..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_break_in_switch.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - unneeded_break_in_switch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Break in Switch

- -

Avoid using unneeded break statements

- -
    -
  • Identifier: unneeded_break_in_switch
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar:
-    break
-}
-
-
switch foo {
-default:
-    break
-}
-
-
switch foo {
-case .bar:
-    for i in [0, 1, 2] { break }
-}
-
-
switch foo {
-case .bar:
-    if true { break }
-}
-
-
switch foo {
-case .bar:
-    something()
-}
-
-
let items = [Int]()
-for item in items {
-    if bar() {
-        do {
-            try foo()
-        } catch {
-            bar()
-            break
-        }
-    }
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .bar:
-    something()
-    ↓break // comment
-}
-
-
switch foo {
-default:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .foo, .foo2 where condition:
-    something()
-    ↓break
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_override.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_override.html deleted file mode 100644 index ed15d7701..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_override.html +++ /dev/null @@ -1,570 +0,0 @@ - - - - unneeded_override Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Overridden Functions

- -

Remove overridden functions that don’t do anything except call their super

- -
    -
  • Identifier: unneeded_override
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -affect_initializers - -false -
  • -
-

Non Triggering Examples

-
class Foo {
-    override func bar() {
-        super.bar()
-        print("hi")
-    }
-}
-
-
class Foo {
-    @available(*, unavailable)
-    override func bar() {
-        super.bar()
-    }
-}
-
-
class Foo {
-    @objc override func bar() {
-        super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() {
-        super.bar()
-        super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() throws {
-        // Doing a different variation of 'try' changes behavior
-        try! super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() throws {
-        // Doing a different variation of 'try' changes behavior
-        try? super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() async throws {
-        // Doing a different variation of 'try' changes behavior
-        await try! super.bar()
-    }
-}
-
-
class Foo {
-    override func bar(arg: Bool) {
-        // Flipping the argument changes behavior
-        super.bar(arg: !arg)
-    }
-}
-
-
class Foo {
-    override func bar(_ arg: Int) {
-        // Changing the argument changes behavior
-        super.bar(arg + 1)
-    }
-}
-
-
class Foo {
-    override func bar(arg: Int) {
-        // Changing the argument changes behavior
-        super.bar(arg: arg.var)
-    }
-}
-
-
class Foo {
-    override func bar(_ arg: Int) {
-        // Not passing arguments because they have default values changes behavior
-        super.bar()
-    }
-}
-
-
class Foo {
-    override func bar(arg: Int, _ arg3: Bool) {
-        // Calling a super function with different argument labels changes behavior
-        super.bar(arg2: arg, arg3: arg3)
-    }
-}
-
-
class Foo {
-    override func bar(animated: Bool, completion: () -> Void) {
-        super.bar(animated: animated) {
-            // This likely changes behavior
-        }
-    }
-}
-
-
class Foo {
-    override func bar(animated: Bool, completion: () -> Void) {
-        super.bar(animated: animated, completion: {
-            // This likely changes behavior
-        })
-    }
-}
-
-
class Baz: Foo {
-    // A default argument might be a change
-    override func bar(value: String = "Hello") {
-        super.bar(value: value)
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    ↓override func bar() {
-        super.bar()
-    }
-}
-
-
class Foo {
-    ↓override func bar() {
-        return super.bar()
-    }
-}
-
-
class Foo {
-    ↓override func bar() {
-        super.bar()
-        // comments don't affect this
-    }
-}
-
-
class Foo {
-    ↓override func bar() async {
-        await super.bar()
-    }
-}
-
-
class Foo {
-    ↓override func bar() throws {
-        try super.bar()
-        // comments don't affect this
-    }
-}
-
-
class Foo {
-    ↓override func bar(arg: Bool) throws {
-        try super.bar(arg: arg)
-    }
-}
-
-
class Foo {
-    ↓override func bar(animated: Bool, completion: () -> Void) {
-        super.bar(animated: animated, completion: completion)
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html deleted file mode 100644 index 443935158..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - unneeded_parentheses_in_closure_argument Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Parentheses in Closure Argument

- -

Parentheses are not needed when declaring closure arguments

- -
    -
  • Identifier: unneeded_parentheses_in_closure_argument
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = { (bar: Int) in }
-
-
let foo = { bar, _  in }
-
-
let foo = { bar in }
-
-
let foo = { bar -> Bool in return true }
-
-
DispatchQueue.main.async { () -> Void in
-    doSomething()
-}
-
-

Triggering Examples

-
call(arg: { ↓(bar) in })
-
-
call(arg: { ↓(bar, _) in })
-
-
let foo = { ↓(bar) -> Bool in return true }
-
-
foo.map { ($0, $0) }.forEach { ↓(x, y) in }
-
-
foo.bar { [weak self] ↓(x, y) in }
-
-
[].first { ↓(temp) in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
-
[].first { temp in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_synthesized_initializer.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_synthesized_initializer.html deleted file mode 100644 index 89ed2c737..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unneeded_synthesized_initializer.html +++ /dev/null @@ -1,742 +0,0 @@ - - - - unneeded_synthesized_initializer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Synthesized Initializer

- -

Default or memberwise initializers that will be automatically synthesized do not need to be manually defined.

- -
    -
  • Identifier: unneeded_synthesized_initializer
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct Foo {
-    let bar: String
-
-    // Synthesized initializer would not be private.
-    private init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar: String
-
-    // Synthesized initializer would not be private.
-    private init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    let bar: String
-
-    // Synthesized initializer would not be fileprivate.
-    fileprivate init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    let bar: String
-
-    // Synthesized initializer would not prepend "foo".
-    init(bar: String) {
-        self.bar = "foo" + bar
-    }
-}
-
-
internal struct Foo {
-    let bar: String
-
-    // Failable initializer
-    init?(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    let bar: String
-
-    // Initializer throws
-    init(bar: String) throws {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    let bar: String
-
-    // Different argument labels
-    init(_ bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    var bar: String = "foo"
-
-    // Different default values
-    init(bar: String = "bar") {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    private static var bar: String
-
-    // var is static
-    init(bar: String) {
-        Self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    private var bar: String
-
-    // var is private
-    init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    fileprivate var bar: String
-
-    // var is fileprivate
-    init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-    // init has no body
-    init(foo: String, bar: String) {
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-    // foo is not initialized
-    init(foo: String, bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-    // Ordering of args is different from properties.
-    init(bar: String, foo: String) {
-        self.foo = foo
-        self.bar = bar
-    }
-}
-
-
@frozen
-public struct Field {
-    @usableFromInline
-    let index: Int
-
-    @usableFromInline
-    let parent: Metadata
-
-    @inlinable // inlinable
-    init(index: Int, parent: Metadata) {
-       self.index = index
-       self.parent = parent
-    }
-}
-
-
internal struct Foo {
-    var bar: String = ""
-    var baz: Int = 0
-
-    // These initializers must be declared.
-    init() { }
-
-    init(bar: String = "", baz: Int = 0) {
-        self.bar = bar
-        self.baz = baz
-    }
-
-    // Because manually declared initializers block
-    // synthesization.
-    init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    init() {
-        print("perform side effect")
-    }
-}
-
-
struct Foo {
-    var bar: Int = 0
-
-    init(bar: Int = 0) {
-        self.bar = bar
-        print("perform side effect")
-    }
-}
-
-
struct Foo {
-    var bar: Int
-
-    init(@Clamped bar: Int) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    let bar: Int
-
-    init(bar: Int) {
-        self.bar = bar
-    }
-    init?() {
-        return nil
-    }
-}
-
-
struct Foo {
-    @available(*, unavailable)
-    init() {}
-}
-
-

Triggering Examples

-
struct Foo {
-    let bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
private struct Foo {
-    let bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
fileprivate struct Foo {
-    let bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    fileprivate var bar: String
-
-   ↓fileprivate init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    private var bar: String
-
-   ↓private init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-   ↓init(foo: String, bar: String) {
-        self.foo = foo
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    var bar: String
-
-   ↓internal init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar: String = ""
-
-   ↓init() {
-        // Empty initializer will be generated automatically
-        // when all vars have default values.
-    }
-}
-
-
struct Foo {
-    var bar: String = ""
-
-   ↓init() {
-        // Empty initializer
-    }
-
-   ↓init(bar: String = "") {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar = ""
-
-   ↓init(bar: String = "") {
-        self.bar = bar
-    }
-}
-
-
struct Outer {
-    struct Inner {
-        let prop: Int
-
-       ↓init(prop: Int) {
-            self.prop = prop
-        }
-    }
-}
-
-
class Foo {
-    struct Bar {
-        let baz: Int
-
-       ↓init(baz: Int) {
-            self.baz = baz
-        }
-    }
-}
-
-
struct Foo {
-    let i: Int
-    struct Bar {
-        let j: Int
-        ↓init(j: Int) {
-            self.j = j
-        }
-    }
-    ↓init(i: Int) {
-        self.i = i
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unowned_variable_capture.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unowned_variable_capture.html deleted file mode 100644 index 6e881403e..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unowned_variable_capture.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - unowned_variable_capture Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unowned Variable Capture

- -

Prefer capturing references as weak to avoid potential crashes

- -
    -
  • Identifier: unowned_variable_capture
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo { [weak self] in _ }
-
-
foo { [weak self] param in _ }
-
-
foo { [weak bar] in _ }
-
-
foo { [weak bar] param in _ }
-
-
foo { bar in _ }
-
-
foo { $0 }
-
-
final class First {}
-final class Second {
-    unowned var value: First
-    init(value: First) {
-        self.value = value
-    }
-}
-
-

Triggering Examples

-
foo { [↓unowned self] in _ }
-
-
foo { [↓unowned bar] in _ }
-
-
foo { [bar, ↓unowned self] in _ }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/untyped_error_in_catch.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/untyped_error_in_catch.html deleted file mode 100644 index 635db6565..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/untyped_error_in_catch.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - untyped_error_in_catch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Untyped Error in Catch

- -

Catch statements should not declare error variables without type casting

- -
    -
  • Identifier: untyped_error_in_catch
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
do {
-  try foo()
-} catch {}
-
-
do {
-  try foo()
-} catch Error.invalidOperation {
-} catch {}
-
-
do {
-  try foo()
-} catch let error as MyError {
-} catch {}
-
-
do {
-  try foo()
-} catch var error as MyError {
-} catch {}
-
-
do {
-    try something()
-} catch let e where e.code == .fileError {
-    // can be ignored
-} catch {
-    print(error)
-}
-
-

Triggering Examples

-
do {
-  try foo()
-} ↓catch var error {}
-
-
do {
-  try foo()
-} ↓catch let error {}
-
-
do {
-  try foo()
-} ↓catch let someError {}
-
-
do {
-  try foo()
-} ↓catch var someError {}
-
-
do {
-  try foo()
-} ↓catch let e {}
-
-
do {
-  try foo()
-} ↓catch(let error) {}
-
-
do {
-  try foo()
-} ↓catch (let error) {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_capture_list.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_capture_list.html deleted file mode 100644 index 70378e0e3..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_capture_list.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - unused_capture_list Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Capture List

- -

Unused reference in a capture list should be removed

- -
    -
  • Identifier: unused_capture_list
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map {
-    [ weak
-      delegate,
-      unowned
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [weak self] num in
-    self?.handle(num)
-}
-
-
let failure: Failure = { [weak self, unowned delegate = self.delegate!] foo in
-    delegate.handle(foo, self)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    handler?.handle($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) {
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [foo] _ in foo.bar() }()
-
-
sizes.max().flatMap { [(offset: offset, size: $0)] } ?? []
-
-
[1, 2].map { [self] num in
-    handle(num)
-}
-
-
[1, 2].map { [unowned self] num in
-    handle(num)
-}
-
-
[1, 2].map { [self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [unowned self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map {
-    [ weak
-      delegate,
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
rx.onViewDidAppear.subscribe(onNext: { [unowned self] in
-      doSomething()
-}).disposed(by: disposeBag)
-
-
let closure = { [weak self] in
-    guard let self else {
-        return
-    }
-    someInstanceFunction()
-}
-
-

Triggering Examples

-
[1, 2].map { [↓weak self] num in
-    print(num)
-}
-
-
let failure: Failure = { [weak self, ↓unowned delegate = self.delegate!] foo in
-    self?.handle(foo)
-}
-
-
let failure: Failure = { [↓weak self, ↓unowned delegate = self.delegate!] foo in
-    print(foo)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    print($0)
-})
-
-
numbers.forEach({
-    [self, ↓weak handler] in
-    print($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) { [↓foo] in
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [↓foo] in _ }()
-
-
let closure = { [↓weak a] in
-    // The new `a` immediately shadows the captured `a` which thus isn't needed.
-    guard let a = getOptionalValue() else {
-        return
-    }
-    someInstanceFunction()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_closure_parameter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_closure_parameter.html deleted file mode 100644 index 6814a1acd..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_closure_parameter.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - unused_closure_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Closure Parameter

- -

Unused parameter in a closure should be replaced with _

- -
    -
  • Identifier: unused_closure_parameter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
[1, 2].map({ $0 + 1 })
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
[1, 2].map { _ in
- 3 
-}
-
-
[1, 2].something { number, idx in
- return number * idx
-}
-
-
let isEmpty = [1, 2].isEmpty()
-
-
violations.sorted(by: { lhs, rhs in 
- return lhs.location > rhs.location
-})
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-    return { migration, schemaVersion in
-        rlmMigration(migration.rlmMigration, schemaVersion)
-    }
-}
-
-
genericsFunc { (a: Type, b) in
-    a + b
-}
-
-
var label: UILabel = { (lbl: UILabel) -> UILabel in
-    lbl.backgroundColor = .red
-    return lbl
-}(UILabel())
-
-
hoge(arg: num) { num in
-    return num
-}
-
-
({ (manager: FileManager) in
-  print(manager)
-})(FileManager.default)
-
-
withPostSideEffect { input in
-    if true { print("\(input)") }
-}
-
-
viewModel?.profileImage.didSet(weak: self) { (self, profileImage) in
-    self.profileImageView.image = profileImage
-}
-
-
let failure: Failure = { task, error in
-    observer.sendFailed(error, task)
-}
-
-
List($names) { $name in
-    Text(name)
-}
-
-
List($names) { $name in
-    TextField($name)
-}
-
-
_ = ["a"].filter { `class` in `class`.hasPrefix("a") }
-
-
let closure: (Int) -> Void = { `foo` in _ = foo }
-
-
let closure: (Int) -> Void = { foo in _ = `foo` }
-
-

Triggering Examples

-
[1, 2].map { ↓number in
- return 3 }
-
-
[1, 2].map { ↓number in
- return numberWithSuffix }
-
-
[1, 2].map { ↓number in
- return 3 // number }
-
-
[1, 2].map { ↓number in
- return 3 "number" }
-
-
[1, 2].something { number, ↓idx in
- return number }
-
-
genericsFunc { (↓number: TypeA, idx: TypeB) in return idx }
-
-
let c: (Int) -> Void = { foo in _ = .foo }
-
-
hoge(arg: num) { ↓num in
-}
-
-
fooFunc { ↓아 in }
-
-
func foo () {
- bar { ↓number in return 3 }
-
-
viewModel?.profileImage.didSet(weak: self) { (↓self, profileImage) in
-    profileImageView.image = profileImage
-}
-
-
let failure: Failure = { ↓task, error in
-    observer.sendFailed(error)
-}
-
-
List($names) { ↓$name in
-    Text("Foo")
-}
-
-
let class1 = "a"
-_ = ["a"].filter { ↓`class` in `class1`.hasPrefix("a") }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_control_flow_label.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_control_flow_label.html deleted file mode 100644 index b36d68587..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_control_flow_label.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - unused_control_flow_label Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Control Flow Label

- -

Unused control flow label should be removed

- -
    -
  • Identifier: unused_control_flow_label
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
loop: while true { break loop }
-
-
loop: while true { continue loop }
-
-
loop:
-    while true { break loop }
-
-
while true { break }
-
-
loop: for x in array { break loop }
-
-
label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break label
-}
-
-
loop: repeat {
-    if x == 10 {
-        break loop
-    }
-} while true
-
-

Triggering Examples

-
↓loop: while true { break }
-
-
↓loop: while true { break loop1 }
-
-
↓loop: while true { break outerLoop }
-
-
↓loop: for x in array { break }
-
-
↓label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break
-}
-
-
↓loop: repeat {
-    if x == 10 {
-        break
-    }
-} while true
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_declaration.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_declaration.html deleted file mode 100644 index 19c970e9b..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_declaration.html +++ /dev/null @@ -1,707 +0,0 @@ - - - - unused_declaration Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Declaration

- -

Declarations should be referenced at least once within all files linted

- -
    -
  • Identifier: unused_declaration
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -error -
    -include_public_and_open - -false -
    -related_usrs_to_skip - -[“s:7SwiftUI15PreviewProviderP”] -
  • -
-

Non Triggering Examples

-
let kConstant = 0
-_ = kConstant
-
-
enum Change<T> {
-  case insert(T)
-  case delete(T)
-}
-
-extension Sequence {
-  func deletes<T>() -> [T] where Element == Change<T> {
-    return compactMap { operation in
-      if case .delete(let value) = operation {
-        return value
-      } else {
-        return nil
-      }
-    }
-  }
-}
-
-let changes = [Change.insert(0), .delete(0)]
-_ = changes.deletes()
-
-
struct Item: Codable {}
-struct ResponseModel: Codable {
-    let items: [Item]
-
-    enum CodingKeys: String, CodingKey {
-        case items = "ResponseItems"
-    }
-}
-
-_ = ResponseModel(items: [Item()]).items
-
-
class ResponseModel {
-    @objc func foo() {
-    }
-}
-_ = ResponseModel()
-
-
public func foo() {}
-
-
protocol Foo {}
-
-extension Foo {
-    func bar() {}
-}
-
-struct MyStruct: Foo {}
-MyStruct().bar()
-
-
import XCTest
-class MyTests: XCTestCase {
-    func testExample() {}
-}
-
-
import XCTest
-open class BestTestCase: XCTestCase {}
-class MyTests: BestTestCase {
-    func testExample() {}
-}
-
-
    struct S {
-        var i: Int? = nil
-        func f() {
-            if let i { print(i) }
-        }
-    }
-    S().f()
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-@resultBuilder
-struct ComponentBuilder {
-  static func buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  static func buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  static func buildOptional(_ component: Component?) -> Component {
-    return .optional(component)
-  }
-
-  static func buildEither(first component: Component) -> Component {
-    return component
-  }
-
-  static func buildEither(second component: Component) -> Component {
-    return component
-  }
-
-  static func buildArray(_ components: [Component]) -> Component {
-    return .array(components)
-  }
-
-  static func buildLimitedAvailability(_ component: Component) -> Component {
-    return component
-  }
-
-  static func buildFinalResult(_ component: Component) -> Component {
-    return component
-  }
-
-  static func buildPartialBlock(first component: Component) -> Component {
-    return component
-  }
-
-  static func buildPartialBlock(accumulated component: Component, next: Component) -> Component {
-    return component
-  }
-}
-
-func acceptComponentBuilder(@ComponentBuilder _ body: () -> Component) {
-  print(body())
-}
-
-acceptComponentBuilder {
-  "hello"
-}
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBAction private func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @objc func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable private var innerPaddingWidth: Int {
-        set { self.backgroundView.innerPaddingWidth = newValue }
-        get { return self.backgroundView.innerPaddingWidth }
-    }
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet private var bar: NSObject! {
-        set { fatalError() }
-        get { fatalError() }
-    }
-
-    @IBOutlet private var baz: NSObject! {
-        willSet { print("willSet") }
-    }
-
-    @IBOutlet private var buzz: NSObject! {
-        didSet { print("didSet") }
-    }
-}
-
-

Triggering Examples

-
let ↓kConstant = 0
-
-
struct Item {}
-struct ↓ResponseModel: Codable {
-    let ↓items: [Item]
-
-    enum ↓CodingKeys: String {
-        case items = "ResponseItems"
-    }
-}
-
-
class ↓ResponseModel {
-    func ↓foo() {
-    }
-}
-
-
//
-// include_public_and_open: true
-//
-
-public func ↓foo() {}
-
-
-
protocol Foo {
-    func ↓bar1()
-}
-
-extension Foo {
-    func bar1() {}
-    func ↓bar2() {}
-}
-
-struct MyStruct: Foo {}
-_ = MyStruct()
-
-
import XCTest
-class ↓MyTests: NSObject {
-    func ↓testExample() {}
-}
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-struct ComponentBuilder {
-  func ↓buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  func ↓buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  func ↓buildIf(_ value: Component?) -> Component {
-    return .optional(value)
-  }
-
-  static func ↓buildABear(_ components: Component...) -> Component {
-    return .array(components)
-  }
-}
-
-_ = ComponentBuilder()
-
-
protocol ↓Foo {}
-extension Foo {}
-
-
class ↓C<T> {}
-extension C<Int> {}
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func ↓appWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Cocoa
-
-final class ↓AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet var ↓bar: NSObject!
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable var ↓bar: String!
-}
-
-
import Foundation
-
-final class Foo: NSObject {}
-final class ↓Bar {
-    var ↓foo = Foo()
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_enumerated.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_enumerated.html deleted file mode 100644 index 0da98bf48..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_enumerated.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - unused_enumerated Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Enumerated

- -

When the index or the item is not used, .enumerated() can be removed.

- -
    -
  • Identifier: unused_enumerated
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
for (idx, foo) in bar.enumerated() { }
-
-
for (_, foo) in bar.enumerated().something() { }
-
-
for (_, foo) in bar.something() { }
-
-
for foo in bar.enumerated() { }
-
-
for foo in bar { }
-
-
for (idx, _) in bar.enumerated().something() { }
-
-
for (idx, _) in bar.something() { }
-
-
for idx in bar.indices { }
-
-
for (section, (event, _)) in data.enumerated() {}
-
-
list.enumerated().map { idx, elem in "\(idx): \(elem)" }
-
-
list.enumerated().map { $0 + $1 }
-
-
list.enumerated().something().map { _, elem in elem }
-
-
list.enumerated().map { ($0.offset, $0.element) }
-
-
list.enumerated().map { ($0.0, $0.1) }
-
-
list.enumerated().map {
-    $1.enumerated().forEach { print($0, $1) }
-    return $0
-}
-
-

Triggering Examples

-
for (↓_, foo) in bar.enumerated() { }
-
-
for (↓_, foo) in abc.bar.enumerated() { }
-
-
for (↓_, foo) in abc.something().enumerated() { }
-
-
for (idx, ↓_) in bar.enumerated() { }
-
-
list.enumerated().map { idx, ↓_ in idx }
-
-
list.enumerated().map { ↓_, elem in elem }
-
-
list.↓enumerated().forEach { print($0) }
-
-
list.↓enumerated().map { $1 }
-
-
list.enumerated().map {
-    $1.↓enumerated().forEach { print($1) }
-    return $0
-}
-
-
list.↓enumerated().map {
-    $1.enumerated().forEach { print($0, $1) }
-    return 1
-}
-
-
list.↓enumerated().forEach {
-    let (i, _) = $0
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_import.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_import.html deleted file mode 100644 index f30b2ff19..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_import.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - unused_import Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Import

- -

All imported modules should be required to make the file compile

- -
    -
  • Identifier: unused_import
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -require_explicit_imports - -false -
    -allowed_transitive_imports - -[] -
    -always_keep_imports - -[] -
  • -
-

Non Triggering Examples

-
import Dispatch // This is used
-dispatchMain()
-
-
@testable import Dispatch
-dispatchMain()
-
-
import Foundation
-@objc
-class A {}
-
-
import UnknownModule
-func foo(error: Swift.Error) {}
-
-
@_exported import UnknownModule
-
-
import Foundation
-let 👨‍👩‍👧‍👦 = #selector(NSArray.contains(_:))
-👨‍👩‍👧‍👦 == 👨‍👩‍👧‍👦
-
-
//
-// allowed_transitive_imports: [Foundation: ["CoreFoundation"]]
-//
-
-import Foundation
-enum E {
-    static let min: CGFloat = 44
-}
-
-
-

Triggering Examples

-
↓import Dispatch
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-
-
↓import Foundation // This is unused
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-↓import Dispatch
-
-
-
↓import Foundation
-dispatchMain()
-
-
↓import Foundation
-// @objc
-class A {}
-
-
↓import Foundation
-import UnknownModule
-func foo(error: Swift.Error) {}
-
-
↓import Swift
-↓import SwiftShims
-func foo(error: Swift.Error) {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_optional_binding.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_optional_binding.html deleted file mode 100644 index ce54a1d28..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_optional_binding.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - unused_optional_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Optional Binding

- -

Prefer != nil over let _ =

- -
    -
  • Identifier: unused_optional_binding
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_optional_try - -false -
  • -
-

Non Triggering Examples

-
if let bar = Foo.optionalValue {}
-
-
if let (_, second) = getOptionalTuple() {}
-
-
if let (_, asd, _) = getOptionalTuple(), let bar = Foo.optionalValue {}
-
-
if foo() { let _ = bar() }
-
-
if foo() { _ = bar() }
-
-
if case .some(_) = self {}
-
-
if let point = state.find({ _ in true }) {}
-
-

Triggering Examples

-
if let ↓_ = Foo.optionalValue {}
-
-
if let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {}
-
-
guard let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {}
-
-
if let (first, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {}
-
-
if let (first, _) = getOptionalTuple(), let ↓_ = Foo.optionalValue {}
-
-
if let (_, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {}
-
-
if let ↓(_, _, _) = getOptionalTuple(), let bar = Foo.optionalValue {}
-
-
func foo() { if let ↓_ = bar {} }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_parameter.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_parameter.html deleted file mode 100644 index 93ea9dc21..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_parameter.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - unused_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Parameter

- -

Other than unused local variable declarations, unused function/initializer/subscript parameters are not marked by the Swift compiler. Since unused parameters are code smells, they should either be removed or replaced/shadowed by a wildcard ‘_’ to indicate that they are being deliberately disregarded.

- -
    -
  • Identifier: unused_parameter
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func f(a: Int) {
-    _ = a
-}
-
-
func f(case: Int) {
-    _ = `case`
-}
-
-
func f(a _: Int) {}
-
-
func f(_: Int) {}
-
-
func f(a: Int, b c: String) {
-    func g() {
-        _ = a
-        _ = c
-    }
-}
-
-
func f(a: Int, c: Int) -> Int {
-    struct S {
-        let b = 1
-        func f(a: Int, b: Int = 2) -> Int { a + b }
-    }
-    return a + c
-}
-
-
func f(a: Int?) {
-    if let a {}
-}
-
-
func f(a: Int) {
-    let a = a
-    return a
-}
-
-
func f(`operator`: Int) -> Int { `operator` }
-
-

Triggering Examples

-
func f(↓a: Int) {}
-
-
func f(↓a: Int, b ↓c: String) {}
-
-
func f(↓a: Int, b ↓c: String) {
-    func g(a: Int, ↓b: Double) {
-        _ = a
-    }
-}
-
-
struct S {
-    let a: Int
-
-    init(a: Int, ↓b: Int) {
-        func f(↓a: Int, b: Int) -> Int { b }
-        self.a = f(a: a, b: 0)
-    }
-}
-
-
struct S {
-    subscript(a: Int, ↓b: Int) {
-        func f(↓a: Int, b: Int) -> Int { b }
-        return f(a: a, b: 0)
-    }
-}
-
-
func f(↓a: Int, ↓b: Int, c: Int) -> Int {
-    struct S {
-        let b = 1
-        func f(a: Int, ↓c: Int = 2) -> Int { a + b }
-    }
-    return S().f(a: c)
-}
-
-
func f(↓a: Int, c: String) {
-    let a = 1
-    return a + c
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_setter_value.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_setter_value.html deleted file mode 100644 index dda589e9a..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/unused_setter_value.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - unused_setter_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Setter Value

- -

Setter value is not used

- -
    -
  • Identifier: unused_setter_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set {
-        Persister.shared.aValue = newValue
-    }
-}
-
-
var aValue: String {
-    set {
-        Persister.shared.aValue = newValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set(value) {
-        Persister.shared.aValue = value
-    }
-}
-
-
override var aValue: String {
- get {
-     return Persister.shared.aValue
- }
- set { }
-}
-
-

Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        let newValue = Persister.shared.aValue
-        return newValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set(value) {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
override var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/valid_ibinspectable.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/valid_ibinspectable.html deleted file mode 100644 index 660efc298..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/valid_ibinspectable.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - valid_ibinspectable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Valid IBInspectable

- -

@IBInspectable should be applied to variables only, have its type explicit and be of a supported type

- -
    -
  • Identifier: valid_ibinspectable
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-
class Foo {
-  @IBInspectable private var x: String?
-}
-
-
class Foo {
-  @IBInspectable private var x: String!
-}
-
-
class Foo {
-  @IBInspectable private var count: Int = 0
-}
-
-
class Foo {
-  private var notInspectable = 0
-}
-
-
class Foo {
-  private let notInspectable: Int
-}
-
-
class Foo {
-  private let notInspectable: UInt8
-}
-
-
extension Foo {
-    @IBInspectable var color: UIColor {
-        set {
-            self.bar.textColor = newValue
-        }
-
-        get {
-            return self.bar.textColor
-        }
-    }
-}
-
-
class Foo {
-    @IBInspectable var borderColor: UIColor? = nil {
-        didSet {
-            updateAppearance()
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-  @IBInspectable private ↓let count: Int
-}
-
-
class Foo {
-  @IBInspectable private ↓var insets: UIEdgeInsets
-}
-
-
class Foo {
-  @IBInspectable private ↓var count = 0
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int?
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int!
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Optional<Int>
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: Optional<String>
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment.html deleted file mode 100644 index fa24d6594..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - vertical_parameter_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment

- -

Function parameters should be aligned vertically if they’re in multiple lines in a declaration

- -
    -
  • Identifier: vertical_parameter_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func foo(bar: Int)
-
-
func foo(bar: Int) -> String
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary)
-                      -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary
-) -> [StyleViolation]
-
-
func regex(_ pattern: String,
-           options: NSRegularExpression.Options = [.anchorsMatchLines,
-                                                   .dotMatchesLineSeparators]) -> NSRegularExpression
-
-
func foo(a: Void,
-         b: [String: String] =
-         [:]) {
-}
-
-
func foo(data: (size: CGSize,
-                identifier: String)) {}
-
-
func foo(data: Data,
-         @ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
-
class A {
-    init(bar: Int)
-}
-
-
class A {
-    init(foo: Int,
-         bar: String)
-}
-
-

Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                       ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile,
-                  ↓kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func foo(data: Data,
-            ↓@ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
-
class A {
-    init(data: Data,
-                ↓@ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html deleted file mode 100644 index 8596f7c34..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html +++ /dev/null @@ -1,500 +0,0 @@ - - - - vertical_parameter_alignment_on_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment on Call

- -

Function parameters should be aligned vertically if they’re in multiple lines in a method call

- -
    -
  • Identifier: vertical_parameter_alignment_on_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo(param1: 1, param2: bar
-    param3: false, param4: true)
-
-
foo(param1: 1, param2: bar)
-
-
foo(param1: 1, param2: bar
-    param3: false,
-    param4: true)
-
-
foo(
-   param1: 1
-) { _ in }
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-}, completion: { _ in
-    self.hideLoading()
-})
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-},
-completion: { _ in
-    self.hideLoading()
-})
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-} { _ in
-    self.hideLoading()
-}
-
-
foo(param1: 1, param2: { _ in },
-    param3: false, param4: true)
-
-
foo({ _ in
-       bar()
-   },
-   completion: { _ in
-       baz()
-   }
-)
-
-
foo(param1: 1, param2: [
-   0,
-   1
-], param3: 0)
-
-
myFunc(foo: 0,
-       bar: baz == 0)
-
-
UIViewPropertyAnimator.runningPropertyAnimator(
-    withDuration: 2.0,
-    delay: 0.0,
-    options: [.curveEaseIn]
-) {
-    // animations
-} completion: { _ in
-    // completion
-}
-
-

Triggering Examples

-
foo(param1: 1, param2: bar,
-                ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar,
- ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar,
-       ↓param3: false,
-       ↓param4: true)
-
-
foo(param1: 1,
-       ↓param2: { _ in })
-
-
foo(param1: 1,
-    param2: { _ in
-}, param3: 2,
- ↓param4: 0)
-
-
foo(param1: 1, param2: { _ in },
-       ↓param3: false, param4: true)
-
-
myFunc(foo: 0,
-        ↓bar: baz == 0)
-
-
myFunc(foo: 0, bar:
-        baz == 0, ↓baz: true)
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace.html deleted file mode 100644 index 523808c1f..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - vertical_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace

- -

Limit vertical whitespace to a single empty line.

- -
    -
  • Identifier: vertical_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -max_empty_lines - -1 -
  • -
-

Non Triggering Examples

-
let abc = 0
-
-
-
let abc = 0
-
-
-
-
/* bcs 
-
-
-
-*/
-
-
// bca 
-
-
-
-

Triggering Examples

-
let aaaa = 0
-
-
-
-
-
struct AAAA {}
-
-
-
-
-
-
class BBBB {}
-
-
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html deleted file mode 100644 index 343dc9ce3..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - vertical_whitespace_between_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace Between Cases

- -

Include a single empty line between switch cases

- -
    -
  • Identifier: vertical_whitespace_between_cases
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch x {
-
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-
-}
-
-
switch x {
-case .valid:
-    print("multiple ...")
-    print("... lines")
-
-case .invalid:
-    print("multiple ...")
-    print("... lines")
-}
-
-
switch x {
-case .valid:
-    print("x is valid")
-
-case .invalid:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    print("x is valid")
-
-default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    return "x is valid"
-
-default:
-    return "x is invalid"
-}
-
-
switch x {
-case 0..<5: print("x is low")
-case 5..<10: print("x is high")
-default: print("x is invalid")
-}
-
-
switch x {    
-case 1:    
-    print("one")    
-
-default:    
-    print("not one")    
-}    
-
-

Triggering Examples

-
switch x {
-case .valid:
-    print("multiple ...")
-    print("... lines")
-↓case .invalid:
-    print("multiple ...")
-    print("... lines")
-}
-
-
switch x {
-case .valid:
-    print("x is valid")
-↓case .invalid:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    print("x is valid")
-↓default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    return "x is valid"
-↓default:
-    return "x is invalid"
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html deleted file mode 100644 index 763cfb123..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html +++ /dev/null @@ -1,550 +0,0 @@ - - - - vertical_whitespace_closing_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace before Closing Braces

- -

Don’t include vertical whitespace (empty line) before closing braces

- -
    -
  • Identifier: vertical_whitespace_closing_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only_enforce_before_trivial_lines - -false -
  • -
-

Non Triggering Examples

-
[
-1,
-2,
-3
-]
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
foo(
-    x: 5,
-    y:6
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([
-  1
-])
-
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([foo {
-  var sum = 0
-  for i in 1...5 { sum += i }
-  return sum
-
-}, foo {
-  var mul = 1
-  for i in 1...5 { mul *= i }
-  return mul
-}])
-
-
-
[1, 2].map { $0 }.filter { true }
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-

Triggering Examples

-
[
-1,
-2,
-3
-↓
-]
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-}
-
-
foo(
-    x: 5,
-    y:6
-↓
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-↓
-}
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([
-  1
-↓
-])
-
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([foo {
-  var sum = 0
-  for i in 1...5 { sum += i }
-  return sum
-
-}, foo {
-  var mul = 1
-  for i in 1...5 { mul *= i }
-  return mul
-↓
-}])
-
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html deleted file mode 100644 index 22e333d33..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html +++ /dev/null @@ -1,526 +0,0 @@ - - - - vertical_whitespace_opening_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace after Opening Braces

- -

Don’t include vertical whitespace (empty line) after opening braces

- -
    -
  • Identifier: vertical_whitespace_opening_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-
// [1, 2].map { $0 }.filter { num in true }
-
-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-    guard let img = image else { return }
-}
-
-
[
-1,
-2,
-3
-]
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
[1, 2].map { $0 }.foo()
-
-
class X {
-  struct Y {
-    class Z {
-    }
-  }
-}
-
-
foo(
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
struct MyStruct {
-  let x = 5
-}
-
-

Triggering Examples

-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-↓
-    guard let img = image else { return }
-}
-
-
[
-↓
-1,
-2,
-3
-]
-
-
class X {
-  struct Y {
-↓
-    class Z {
-    }
-  }
-}
-
-
foo(
-↓
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-↓
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-↓
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-↓
-
-  print("x is 5")
-}
-
-
if x == 5 {
-↓
-  print("x is 5")
-}
-
-
struct MyStruct {
-↓
-  let x = 5
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_function_in_ternary.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_function_in_ternary.html deleted file mode 100644 index 3ccfb2541..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_function_in_ternary.html +++ /dev/null @@ -1,491 +0,0 @@ - - - - void_function_in_ternary Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Void Function in Ternary

- -

Using ternary to call Void functions should be avoided

- -
    -
  • Identifier: void_function_in_ternary
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let result = success ? foo() : bar()
-
-
if success {
-    askQuestion()
-} else {
-    exit()
-}
-
-
var price: Double {
-    return hasDiscount ? calculatePriceWithDiscount() : calculateRegularPrice()
-}
-
-
foo(x == 2 ? a() : b())
-
-
chevronView.image = collapsed ? .icon(.mediumChevronDown) : .icon(.mediumChevronUp)
-
-
array.map { elem in
-    elem.isEmpty() ? .emptyValue() : .number(elem)
-}
-
-
func compute(data: [Int]) -> Int {
-    data.isEmpty ? 0 : expensiveComputation(data)
-}
-
-
var value: Int {
-    mode == .fast ? fastComputation() : expensiveComputation()
-}
-
-
var value: Int {
-    get {
-        mode == .fast ? fastComputation() : expensiveComputation()
-    }
-}
-
-
subscript(index: Int) -> Int {
-    get {
-        index == 0 ? defaultValue() : compute(index)
-    }
-
-
subscript(index: Int) -> Int {
-    index == 0 ? defaultValue() : compute(index)
-
-

Triggering Examples

-
success ↓? askQuestion() : exit()
-
-
perform { elem in
-    elem.isEmpty() ↓? .emptyValue() : .number(elem)
-    return 1
-}
-
-
DispatchQueue.main.async {
-    self.sectionViewModels[section].collapsed.toggle()
-    self.sectionViewModels[section].collapsed
-        ↓? self.tableView.deleteRows(at: [IndexPath(row: 0, section: section)], with: .automatic)
-        : self.tableView.insertRows(at: [IndexPath(row: 0, section: section)], with: .automatic)
-    self.tableView.scrollToRow(at: IndexPath(row: NSNotFound, section: section), at: .top, animated: true)
-}
-
-
subscript(index: Int) -> Int {
-    index == 0 ↓? something() : somethingElse(index)
-    return index
-
-
var value: Int {
-    mode == .fast ↓? something() : somethingElse()
-    return 0
-}
-
-
var value: Int {
-    get {
-        mode == .fast ↓? something() : somethingElse()
-        return 0
-    }
-}
-
-
subscript(index: Int) -> Int {
-    get {
-        index == 0 ↓? something() : somethingElse(index)
-        return index
-    }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_return.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_return.html deleted file mode 100644 index b900f03da..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/void_return.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Void Return

- -

Prefer -> Void over -> ()

- -
    -
  • Identifier: void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
let abc: () -> (VoidVoid) = {}
-
-
func foo(completion: () -> Void)
-
-
let foo: (ConfigurationTests) -> () throws -> Void
-
-
let foo: (ConfigurationTests) ->   () throws -> Void
-
-
let foo: (ConfigurationTests) ->() throws -> Void
-
-
let foo: (ConfigurationTests) -> () -> Void
-
-
let foo: () -> () async -> Void
-
-
let foo: () -> () async throws -> Void
-
-
let foo: () -> () async -> Void
-
-
func foo() -> () async throws -> Void {}
-
-
func foo() async throws -> () async -> Void { return {} }
-
-
func foo() -> () async -> Int { 1 }
-
-

Triggering Examples

-
let abc: () -> ↓() = {}
-
-
let abc: () -> ↓(Void) = {}
-
-
let abc: () -> ↓(   Void ) = {}
-
-
func foo(completion: () -> ↓())
-
-
func foo(completion: () -> ↓(   ))
-
-
func foo(completion: () -> ↓(Void))
-
-
let foo: (ConfigurationTests) -> () throws -> ↓()
-
-
func foo() async -> ↓()
-
-
func foo() async throws -> ↓()
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/weak_delegate.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/weak_delegate.html deleted file mode 100644 index 4c85f6e06..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/weak_delegate.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - weak_delegate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Weak Delegate

- -

Delegates should be weak to avoid reference cycles

- -
    -
  • Identifier: weak_delegate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-  weak var delegate: SomeProtocol?
-}
-
-
class Foo {
-  weak var someDelegate: SomeDelegateProtocol?
-}
-
-
class Foo {
-  weak var delegateScroll: ScrollDelegate?
-}
-
-
class Foo {
-  var scrollHandler: ScrollDelegate?
-}
-
-
func foo() {
-  var delegate: SomeDelegate
-}
-
-
class Foo {
-  var delegateNotified: Bool?
-}
-
-
protocol P {
- var delegate: AnyObject? { get set }
-}
-
-
class Foo {
- protocol P {
- var delegate: AnyObject? { get set }
-}
-}
-
-
class Foo {
- var computedDelegate: ComputedDelegate {
- return bar() 
-} 
-}
-
-
class Foo {
-    var computedDelegate: ComputedDelegate {
-        get {
-            return bar()
-        }
-   }
-
-
struct Foo {
- @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 
-}
-
-
struct Foo {
- @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 
-}
-
-
struct Foo {
- @WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate 
-}
-
-
class Foo {
-    func makeDelegate() -> SomeDelegate {
-        let delegate = SomeDelegate()
-        return delegate
-    }
-}
-
-

Triggering Examples

-
class Foo {
-  ↓var delegate: SomeProtocol?
-}
-
-
class Foo {
-  ↓var scrollDelegate: ScrollDelegate?
-}
-
-
class Foo {
-    ↓var delegate: SomeProtocol? {
-        didSet {
-            print("Updated delegate")
-        }
-   }
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/xct_specific_matcher.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/xct_specific_matcher.html deleted file mode 100644 index 2dbffe992..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/xct_specific_matcher.html +++ /dev/null @@ -1,600 +0,0 @@ - - - - xct_specific_matcher Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTest Specific Matcher

- -

Prefer specific XCTest matchers over XCTAssertEqual and XCTAssertNotEqual.

- -
    -
  • Identifier: xct_specific_matcher
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -matchers - -[one-argument-asserts, two-argument-asserts] -
  • -
-

Non Triggering Examples

-
XCTAssert(foo
-
-
XCTAssertFalse(foo)
-
-
XCTAssertTrue(foo)
-
-
XCTAssertNil(foo)
-
-
XCTAssertNotNil(foo)
-
-
XCTAssertEqual(foo, 2)
-
-
XCTAssertNotEqual(foo, "false")
-
-
XCTAssertEqual(foo, [1, 2, 3, true])
-
-
XCTAssertEqual(foo, [1, 2, 3, false])
-
-
XCTAssertEqual(foo, [1, 2, 3, nil])
-
-
XCTAssertEqual(foo, [true, nil, true, nil])
-
-
XCTAssertEqual([1, 2, 3, true], foo)
-
-
XCTAssertEqual([1, 2, 3, false], foo)
-
-
XCTAssertEqual([1, 2, 3, nil], foo)
-
-
XCTAssertEqual([true, nil, true, nil], foo)
-
-
XCTAssertEqual(2, foo)
-
-
XCTAssertNotEqual("false"), foo)
-
-
XCTAssertEqual(false, foo?.bar)
-
-
XCTAssertEqual(true, foo?.bar)
-
-
XCTAssert(    foo  )
-
-
XCTAssertFalse(  foo  )
-
-
XCTAssertTrue(  foo  )
-
-
XCTAssertNil(  foo  )
-
-
XCTAssertNotNil(  foo  )
-
-
XCTAssertEqual(  foo  , 2  )
-
-
XCTAssertNotEqual(  foo, "false")
-
-
XCTAssertEqual(foo?.bar, false)
-
-
XCTAssertEqual(foo?.bar, true)
-
-
XCTAssertNil(foo?.bar)
-
-
XCTAssertNotNil(foo?.bar)
-
-
XCTAssertEqual(foo?.bar, 2)
-
-
XCTAssertNotEqual(foo?.bar, "false")
-
-
XCTAssertEqual(foo?.bar, toto())
-
-
XCTAssertEqual(foo?.bar, .toto(.zoo))
-
-
XCTAssertEqual(toto(), foo?.bar)
-
-
XCTAssertEqual(.toto(.zoo), foo?.bar)
-
-
XCTAssert(foo.self == bar)
-
-
XCTAssertTrue(type(of: foo) != Int.self)
-
-
XCTAssertTrue(a == (1, 3, 5)
-
-

Triggering Examples

-
↓XCTAssertEqual(foo, true)
-
-
↓XCTAssertEqual(foo, false)
-
-
↓XCTAssertEqual(foo, nil)
-
-
↓XCTAssertNotEqual(foo, true)
-
-
↓XCTAssertNotEqual(foo, false)
-
-
↓XCTAssertNotEqual(foo, nil)
-
-
↓XCTAssertEqual(true, foo)
-
-
↓XCTAssertEqual(false, foo)
-
-
↓XCTAssertEqual(nil, foo)
-
-
↓XCTAssertNotEqual(true, foo)
-
-
↓XCTAssertNotEqual(false, foo)
-
-
↓XCTAssertNotEqual(nil, foo)
-
-
↓XCTAssertEqual(foo, true, "toto")
-
-
↓XCTAssertEqual(foo, false, "toto")
-
-
↓XCTAssertEqual(foo, nil, "toto")
-
-
↓XCTAssertNotEqual(foo, true, "toto")
-
-
↓XCTAssertNotEqual(foo, false, "toto")
-
-
↓XCTAssertNotEqual(foo, nil, "toto")
-
-
↓XCTAssertEqual(true, foo, "toto")
-
-
↓XCTAssertEqual(false, foo, "toto")
-
-
↓XCTAssertEqual(nil, foo, "toto")
-
-
↓XCTAssertNotEqual(true, foo, "toto")
-
-
↓XCTAssertNotEqual(false, foo, "toto")
-
-
↓XCTAssertNotEqual(nil, foo, "toto")
-
-
↓XCTAssertEqual(foo,true)
-
-
↓XCTAssertEqual( foo , false )
-
-
↓XCTAssertEqual(  foo  ,  nil  )
-
-
↓XCTAssertEqual(true, [1, 2, 3, true].hasNumbers())
-
-
↓XCTAssertEqual([1, 2, 3, true].hasNumbers(), true)
-
-
↓XCTAssertEqual(foo?.bar, nil)
-
-
↓XCTAssertNotEqual(foo?.bar, nil)
-
-
↓XCTAssertEqual(nil, true)
-
-
↓XCTAssertEqual(nil, false)
-
-
↓XCTAssertEqual(true, nil)
-
-
↓XCTAssertEqual(false, nil)
-
-
↓XCTAssertEqual(nil, nil)
-
-
↓XCTAssertEqual(true, true)
-
-
↓XCTAssertEqual(false, false)
-
-
↓XCTAssert(foo == bar)
-
-
↓XCTAssertTrue(   foo  ==   bar  )
-
-
↓XCTAssertFalse(1 == foo)
-
-
↓XCTAssert(foo == bar, "toto")
-
-
↓XCTAssert(foo != bar)
-
-
↓XCTAssertTrue(   foo  !=   bar  )
-
-
↓XCTAssertFalse(1 != foo)
-
-
↓XCTAssert(foo != bar, "toto")
-
-
↓XCTAssert(  foo   ==  nil)
-
-
↓XCTAssert(nil == foo
-
-
↓XCTAssertTrue(  foo   !=  nil)
-
-
↓XCTAssertFalse(nil != foo
-
-
↓XCTAssert(foo == nil, "toto")
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/xctfail_message.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/xctfail_message.html deleted file mode 100644 index d77f50e09..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/xctfail_message.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - xctfail_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTFail Message

- -

An XCTFail call should include a description of the assertion

- -
    -
  • Identifier: xctfail_message
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func testFoo() {
-  XCTFail("bar")
-}
-
-
func testFoo() {
-  XCTFail(bar)
-}
-
-

Triggering Examples

-
func testFoo() {
-  ↓XCTFail()
-}
-
-
func testFoo() {
-  ↓XCTFail("")
-}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/yoda_condition.html b/docsets/SwiftLintCore.docset/Contents/Resources/Documents/yoda_condition.html deleted file mode 100644 index a2b0187fa..000000000 --- a/docsets/SwiftLintCore.docset/Contents/Resources/Documents/yoda_condition.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - yoda_condition Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Yoda Condition

- -

The constant literal should be placed on the right-hand side of the comparison operator

- -
    -
  • Identifier: yoda_condition
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if foo == 42 {}
-
-
if foo <= 42.42 {}
-
-
guard foo >= 42 else { return }
-
-
guard foo != "str str" else { return }
-
-
while foo < 10 { }
-
-
while foo > 1 { }
-
-
while foo + 1 == 2 {}
-
-
if optionalValue?.property ?? 0 == 2 {}
-
-
if foo == nil {}
-
-
if flags & 1 == 1 {}
-
-

Triggering Examples

-
if ↓42 == foo {}
-
-
if ↓42.42 >= foo {}
-
-
guard ↓42 <= foo else { return }
-
-
guard ↓"str str" != foo else { return }
-
-
while ↓10 > foo { }
-
-
while ↓1 < foo { }
-
-
if ↓nil == foo {}
-
-
while ↓1 > i + 5 {}
-
-
if ↓200 <= i && i <= 299 || ↓600 <= i {}
-
- -
-
- - -
-
- - - diff --git a/docsets/SwiftLintCore.docset/Contents/Resources/docSet.dsidx b/docsets/SwiftLintCore.docset/Contents/Resources/docSet.dsidx deleted file mode 100644 index 199686fc7643f88c643eef1eb41081324120e3ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176128 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 V63_);@8HI(O^4}8)K-dV{y!o5sn`Gj diff --git a/docsets/SwiftLintCore.tgz b/docsets/SwiftLintCore.tgz deleted file mode 100644 index 82b81db677d0f817a6ff41d6001209ca2f161340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693574 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ɉ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

))%sp4(xXD40ni128T@Fgx;FF-Qm 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 diff --git a/docsets/SwiftLintCore.xml b/docsets/SwiftLintCore.xml deleted file mode 100644 index b47029782..000000000 --- a/docsets/SwiftLintCore.xml +++ /dev/null @@ -1 +0,0 @@ -0.57.0https://realm.github.io/SwiftLint/docsets/SwiftLintCore.tgz diff --git a/duplicate_conditions.html b/duplicate_conditions.html deleted file mode 100644 index 6330888eb..000000000 --- a/duplicate_conditions.html +++ /dev/null @@ -1,534 +0,0 @@ - - - - duplicate_conditions Reference - - - - - - - - - - - - - - - -

-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Conditions

- -

Duplicate sets of conditions in the same branch instruction should be avoided

- -
    -
  • Identifier: duplicate_conditions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
if x < 5 {
-    foo()
-} else if y == "s" {
-    bar()
-}
-
-
if x < 5 {
-    foo()
-}
-if x < 5 {
-    bar()
-}
-
-
if x < 5, y == "s" {
-    foo()
-} else if x < 5 {
-    bar()
-}
-
-
switch x {
-case "a":
-    foo()
-    bar()
-}
-
-
switch x {
-case "a" where y == "s":
-    foo()
-case "a" where y == "t":
-    bar()
-}
-
-
if let x = maybeAbc {
-    foo()
-} else if let x = maybePqr {
-    bar()
-}
-
-
if let x = maybeAbc, let z = x.maybeY {
-    foo()
-} else if let x = maybePqr, let z = x.maybeY {
-    bar()
-}
-
-
if case .p = x {
-    foo()
-} else if case .q = x {
-    bar()
-}
-
-
if true {
-    if true { foo() }
-}
-
-

Triggering Examples

-
if ↓x < 5 {
-    foo()
-} else if y == "s" {
-    bar()
-} else if ↓x < 5 {
-    baz()
-}
-
-
if z {
-    if ↓x < 5 {
-        foo()
-    } else if y == "s" {
-        bar()
-    } else if ↓x < 5 {
-        baz()
-    }
-}
-
-
if ↓x < 5, y == "s" {
-    foo()
-} else if x < 10 {
-    bar()
-} else if ↓y == "s", x < 5 {
-    baz()
-}
-
-
switch x {
-case ↓"a", "b":
-    foo()
-case "c", ↓"a":
-    bar()
-}
-
-
switch x {
-case ↓"a" where y == "s":
-    foo()
-case ↓"a" where y == "s":
-    bar()
-}
-
-
if ↓let xyz = maybeXyz {
-    foo()
-} else if ↓let xyz = maybeXyz {
-    bar()
-}
-
-
if ↓let x = maybeAbc, let z = x.maybeY {
-    foo()
-} else if ↓let x = maybeAbc, let z = x.maybeY {
-    bar()
-}
-
-
if ↓#available(macOS 10.15, *) {
-    foo()
-} else if ↓#available(macOS 10.15, *) {
-    bar()
-}
-
-
if ↓case .p = x {
-    foo()
-} else if ↓case .p = x {
-    bar()
-}
-
-
if ↓x < 5 {}
-else if ↓x < 5 {}
-else if ↓x < 5 {}
-
- -
-
- - -
-
- - - diff --git a/duplicate_enum_cases.html b/duplicate_enum_cases.html deleted file mode 100644 index ffff370c1..000000000 --- a/duplicate_enum_cases.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - duplicate_enum_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Enum Cases

- -

Enum shouldn’t contain multiple cases with the same name

- -
    -
  • Identifier: duplicate_enum_cases
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
enum PictureImport {
-    case addImage(image: UIImage)
-    case addData(data: Data)
-}
-
-
enum A {
-    case add(image: UIImage)
-}
-enum B {
-    case add(image: UIImage)
-}
-
-
enum Tag: String {
-#if CONFIG_A
-    case value = "CONFIG_A"
-#elseif CONFIG_B
-    case value = "CONFIG_B"
-#else
-    case value = "CONFIG_DEFAULT"
-#endif
-}
-
-
enum Target {
-#if os(iOS)
-  case file
-#else
-  case file(URL)
-#endif
-}
-
-

Triggering Examples

-
enum PictureImport {
-    case ↓add(image: UIImage)
-    case addURL(url: URL)
-    case ↓add(data: Data)
-}
-
- -
-
- - -
-
- - - diff --git a/duplicate_imports.html b/duplicate_imports.html deleted file mode 100644 index f6d3be305..000000000 --- a/duplicate_imports.html +++ /dev/null @@ -1,519 +0,0 @@ - - - - duplicate_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicate Imports

- -

Imports should be unique

- -
    -
  • Identifier: duplicate_imports
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
import A
-import B
-import C
-
-
import A.B
-import A.C
-
-
@_implementationOnly import A
-@_implementationOnly import B
-
-
@testable import A
-@testable import B
-
-
#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-
-
import A // module
-import B // module
-
-
#if TEST
-func test() {
-}
-
-
import Foo
-@testable import struct Foo.Bar
-
-

Triggering Examples

-
@_implementationOnly import A
-↓@_implementationOnly import A
-
-
-
@testable import A
-↓@testable import A
-
-
-
@testable import Foo
-import struct Foo.Bar
-
-
import A
-#if DEBUG
-    @testable import KsApi
-#else
-    import KsApi
-#endif
-↓import A
-
-
-
import A
-↓import class A.Foo
-
-
-
import A
-↓import enum A.Foo
-
-
-
import A
-↓import func A.Foo
-
-
-
import A
-↓import let A.Foo
-
-
-
import A
-↓import protocol A.Foo
-
-
-
import A
-↓import struct A.Foo
-
-
-
import A
-↓import typealias A.Foo
-
-
-
import A
-↓import var A.Foo
-
-
-
import A.B
-↓import A.B.C
-
-
-
import Foundation
-import Dispatch
-↓import Foundation
-
-
-
import Foundation
-↓import Foundation
-↓import Foundation
-
-
-
import Foundation
-↓import Foundation.NSString
-
-
-
↓import A.B.C
-import A.B
-
-
-
↓import Foundation.NSString
-import Foundation
-
-
- -
-
- - -
-
- - - diff --git a/duplicated_key_in_dictionary_literal.html b/duplicated_key_in_dictionary_literal.html deleted file mode 100644 index 07540bf3f..000000000 --- a/duplicated_key_in_dictionary_literal.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - duplicated_key_in_dictionary_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Duplicated Key in Dictionary Literal

- -

Dictionary literals with duplicated keys will crash at runtime

- -
    -
  • Identifier: duplicated_key_in_dictionary_literal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[
-    1: "1",
-    2: "2"
-]
-
-
[
-    "1": 1,
-    "2": 2
-]
-
-
[
-    foo: "1",
-    bar: "2"
-]
-
-
[
-    UUID(): "1",
-    UUID(): "2"
-]
-
-
[
-    #line: "1",
-    #line: "2"
-]
-
-

Triggering Examples

-
[
-    1: "1",
-    2: "2",
-    ↓1: "one"
-]
-
-
[
-    "1": 1,
-    "2": 2,
-    ↓"2": 2
-]
-
-
[
-    foo: "1",
-    bar: "2",
-    baz: "3",
-    ↓foo: "4",
-    zaz: "5"
-]
-
-
[
-    .one: "1",
-    .two: "2",
-    .three: "3",
-    ↓.one: "1",
-    .four: "4",
-    .five: "5"
-]
-
- -
-
- - -
-
- - - diff --git a/dynamic_inline.html b/dynamic_inline.html deleted file mode 100644 index 202f8845e..000000000 --- a/dynamic_inline.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - dynamic_inline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Dynamic Inline

- -

Avoid using ‘dynamic’ and ‘@inline(__always)’ together

- -
    -
  • Identifier: dynamic_inline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
class C {
-dynamic func f() {}}
-
-
class C {
-@inline(__always) func f() {}}
-
-
class C {
-@inline(never) dynamic func f() {}}
-
-

Triggering Examples

-
class C {
-@inline(__always) dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) public dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always) dynamic internal ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic ↓func f() {}
-}
-
-
class C {
-@inline(__always)
-dynamic
-↓func f() {}
-}
-
- -
-
- - -
-
- - - diff --git a/empty_collection_literal.html b/empty_collection_literal.html deleted file mode 100644 index 7f43bcecb..000000000 --- a/empty_collection_literal.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - empty_collection_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Collection Literal

- -

Prefer checking isEmpty over comparing collection to an empty array or dictionary literal

- -
    -
  • Identifier: empty_collection_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
myArray = []
-
-
myArray.isEmpty
-
-
!myArray.isEmpty
-
-
myDict = [:]
-
-

Triggering Examples

-
myArray↓ == []
-
-
myArray↓ != []
-
-
myArray↓ == [ ]
-
-
myDict↓ == [:]
-
-
myDict↓ != [:]
-
-
myDict↓ == [: ]
-
-
myDict↓ == [ :]
-
-
myDict↓ == [ : ]
-
- -
-
- - -
-
- - - diff --git a/empty_count.html b/empty_count.html deleted file mode 100644 index 86a145cc6..000000000 --- a/empty_count.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - empty_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Count

- -

Prefer checking isEmpty over comparing count to zero

- -
    -
  • Identifier: empty_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -error -
    -only_after_dot - -false -
  • -
-

Non Triggering Examples

-
var count = 0
-
-
[Int]().isEmpty
-
-
[Int]().count > 1
-
-
[Int]().count == 1
-
-
[Int]().count == 0xff
-
-
[Int]().count == 0b01
-
-
[Int]().count == 0o07
-
-
discount == 0
-
-
order.discount == 0
-
-

Triggering Examples

-
[Int]().↓count == 0
-
-
0 == [Int]().↓count
-
-
[Int]().↓count==0
-
-
[Int]().↓count > 0
-
-
[Int]().↓count != 0
-
-
[Int]().↓count == 0x0
-
-
[Int]().↓count == 0x00_00
-
-
[Int]().↓count == 0b00
-
-
[Int]().↓count == 0o00
-
-
↓count == 0
-
- -
-
- - -
-
- - - diff --git a/empty_enum_arguments.html b/empty_enum_arguments.html deleted file mode 100644 index 6bdf9226d..000000000 --- a/empty_enum_arguments.html +++ /dev/null @@ -1,527 +0,0 @@ - - - - empty_enum_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Enum Arguments

- -

Arguments can be omitted when matching enums with associated values if they are not used

- -
    -
  • Identifier: empty_enum_arguments
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar: break
-}
-
-
switch foo {
-case .bar(let x): break
-}
-
-
switch foo {
-case let .bar(x): break
-}
-
-
switch (foo, bar) {
-case (_, _): break
-}
-
-
switch foo {
-case "bar".uppercased(): break
-}
-
-
switch (foo, bar) {
-case (_, _) where !something: break
-}
-
-
switch foo {
-case (let f as () -> String)?: break
-}
-
-
switch foo {
-case .bar(Baz()): break
-}
-
-
switch foo {
-case .bar(.init()): break
-}
-
-
switch foo {
-default: break
-}
-
-
if case .bar = foo {
-}
-
-
guard case .bar = foo else {
-}
-
-
if foo == .bar() {}
-
-
guard foo == .bar() else { return }
-
-
if case .appStore = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
-
let updatedUserNotificationSettings = deepLink.filter { nav in
-    guard case .settings(.notifications(_, nil)) = nav else { return false }
-    return true
-}
-
-

Triggering Examples

-
switch foo {
-case .bar↓(_): break
-}
-
-
switch foo {
-case .bar↓(): break
-}
-
-
switch foo {
-case .bar↓(_), .bar2↓(_): break
-}
-
-
switch foo {
-case .bar↓() where method() > 2: break
-}
-
-
switch foo {
-case .bar(.baz↓()): break
-}
-
-
switch foo {
-case .bar(.baz↓(_)): break
-}
-
-
func example(foo: Foo) {
-    switch foo {
-    case .bar↓(_):
-        break
-    }
-}
-
-
if case .bar↓(_) = foo {
-}
-
-
guard case .bar↓(_) = foo else {
-}
-
-
if case .bar↓() = foo {
-}
-
-
guard case .bar↓() = foo else {
-}
-
-
if case .appStore↓(_) = self.appInstaller, !UIDevice.isSimulator() {
-    viewController.present(self, animated: false)
-} else {
-    UIApplication.shared.open(self.appInstaller.url)
-}
-
-
let updatedUserNotificationSettings = deepLink.filter { nav in
-    guard case .settings(.notifications↓(_, _)) = nav else { return false }
-    return true
-}
-
- -
-
- - -
-
- - - diff --git a/empty_parameters.html b/empty_parameters.html deleted file mode 100644 index 6ed252786..000000000 --- a/empty_parameters.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - empty_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parameters

- -

Prefer () -> over Void ->

- -
    -
  • Identifier: empty_parameters
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
func foo(completion: () -> Void)
-
-
func foo(completion: () throws -> Void)
-
-
let foo: (ConfigurationTests) -> Void throws -> Void)
-
-
let foo: (ConfigurationTests) ->   Void throws -> Void)
-
-
let foo: (ConfigurationTests) ->Void throws -> Void)
-
-

Triggering Examples

-
let abc: ↓(Void) -> Void = {}
-
-
func foo(completion: ↓(Void) -> Void)
-
-
func foo(completion: ↓(Void) throws -> Void)
-
-
let foo: ↓(Void) -> () throws -> Void)
-
- -
-
- - -
-
- - - diff --git a/empty_parentheses_with_trailing_closure.html b/empty_parentheses_with_trailing_closure.html deleted file mode 100644 index 7723fbb3f..000000000 --- a/empty_parentheses_with_trailing_closure.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - empty_parentheses_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty Parentheses with Trailing Closure

- -

When using trailing closures, empty parentheses should be avoided after the method call

- -
    -
  • Identifier: empty_parentheses_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
[1, 2].map({ $0 + 1 })
-
-
[1, 2].reduce(0) { $0 + $1 }
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
let isEmpty = [1, 2].isEmpty()
-
-
UIView.animateWithDuration(0.3, animations: {
-   self.disableInteractionRightView.alpha = 0
-}, completion: { _ in
-   ()
-})
-
-

Triggering Examples

-
[1, 2].map↓() { $0 + 1 }
-
-
[1, 2].map↓( ) { $0 + 1 }
-
-
[1, 2].map↓() { number in
- number + 1 
-}
-
-
[1, 2].map↓(  ) { number in
- number + 1 
-}
-
-
func foo() -> [Int] {
-    return [1, 2].map↓() { $0 + 1 }
-}
-
- -
-
- - -
-
- - - diff --git a/empty_string.html b/empty_string.html deleted file mode 100644 index fb58cad52..000000000 --- a/empty_string.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - empty_string Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty String

- -

Prefer checking isEmpty over comparing string to an empty string literal

- -
    -
  • Identifier: empty_string
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
myString.isEmpty
-
-
!myString.isEmpty
-
-
"""
-foo==
-"""
-
-

Triggering Examples

-
myString↓ == ""
-
-
myString↓ != ""
-
-
myString↓==""
-
-
myString↓ == #""#
-
-
myString↓ == ##""##
-
- -
-
- - -
-
- - - diff --git a/empty_xctest_method.html b/empty_xctest_method.html deleted file mode 100644 index 857d821e2..000000000 --- a/empty_xctest_method.html +++ /dev/null @@ -1,559 +0,0 @@ - - - - empty_xctest_method Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Empty XCTest Method

- -

Empty XCTest method should be avoided

- -
    -
  • Identifier: empty_xctest_method
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
class TotoTests: XCTestCase {
-    var foobar: Foobar?
-
-    override func setUp() {
-        super.setUp()
-        foobar = Foobar()
-    }
-
-    override func setUpWithError() throws {
-        foobar = nil
-    }
-
-    override func tearDown() {
-        foobar = nil
-        super.tearDown()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(foobar?.foo)
-    }
-
-    func testBar() {
-        // comment...
-
-        XCTAssertFalse(foobar?.bar)
-
-        // comment...
-    }
-
-    func testBaz() {
-        _ = 4 + 4
-    }
-}
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-
class TotoTests: XCTestCase {
-    func setUp(with object: Foobar) {}
-
-    func tearDown(object: Foobar) {}
-
-    func testFoo(_ foo: Foobar) {}
-
-    func testBar(bar: (String) -> Int) {}
-}
-
-
class TotoTests: XCTestCase {
-    func testFoo() { XCTAssertTrue(foobar?.foo) }
-
-    func testBar() { XCTAssertFalse(foobar?.bar) }
-}
-
-
class TotoTests: XCTestCase {
-    override class var runsForEachTargetApplicationUIConfiguration: Bool { true }
-
-    static var allTests = [("testFoo", testFoo)]
-
-    func testFoo() { XCTAssert(true) }
-}
-
-

Triggering Examples

-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-    }
-
-    override ↓func tearDown() {
-
-    }
-
-    ↓func testFoo() {
-
-
-    }
-
-    ↓func testBar() {
-
-
-
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {}
-
-    override ↓func tearDown() {}
-
-    ↓func testFoo() {}
-
-    func helperFunction() {}
-}
-
-
class TotoTests: XCTestCase {
-    override ↓func setUp() {
-        // comment...
-    }
-
-    override ↓func tearDown() {
-        // comment...
-        // comment...
-    }
-
-    ↓func testFoo() {
-        // comment...
-
-        // comment...
-
-        // comment...
-    }
-
-    ↓func testBar() {
-        /*
-         * comment...
-         *
-         * comment...
-         *
-         * comment...
-         */
-    }
-
-    func helperFunction() {
-    }
-}
-
-
class FooTests: XCTestCase {
-    override ↓func setUp() {}
-}
-
-class BarTests: XCTestCase {
-    ↓func testFoo() {}
-}
-
- -
-
- - -
-
- - - diff --git a/enum_case_associated_values_count.html b/enum_case_associated_values_count.html deleted file mode 100644 index 736c8d536..000000000 --- a/enum_case_associated_values_count.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - enum_case_associated_values_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Enum Case Associated Values Count

- -

The number of associated values in an enum case should be low.

- -
    -
  • Identifier: enum_case_associated_values_count
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -5 -
    -error - -6 -
  • -
-

Non Triggering Examples

-
enum Employee {
-    case fullTime(name: String, retirement: Date, designation: String, contactNumber: Int)
-    case partTime(name: String, age: Int, contractEndDate: Date)
-}
-
-
enum Barcode {
-    case upc(Int, Int, Int, Int)
-}
-
-

Triggering Examples

-
enum Employee {
-    case ↓fullTime(name: String, retirement: Date, age: Int, designation: String, contactNumber: Int)
-    case ↓partTime(name: String, contractEndDate: Date, age: Int, designation: String, contactNumber: Int)
-}
-
-
enum Barcode {
-    case ↓upc(Int, Int, Int, Int, Int, Int)
-}
-
- -
-
- - -
-
- - - diff --git a/expiring_todo.html b/expiring_todo.html deleted file mode 100644 index 4328ae6c8..000000000 --- a/expiring_todo.html +++ /dev/null @@ -1,510 +0,0 @@ - - - - expiring_todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Expiring Todo

- -

TODOs and FIXMEs should be resolved prior to their expiry date.

- -
    -
  • Identifier: expiring_todo
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -approaching_expiry_severity - -warning -
    -expired_severity - -error -
    -bad_formatting_severity - -error -
    -approaching_expiry_threshold - -15 -
    -date_delimiters - - - - - - - - - - - - - - - -
    KeyValue
    -opening - -“[” -
    -closing - -“]” -
    -
    -date_format - -“MM/dd/yyyy” -
    -date_separator - -“/” -
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
// notaFIXME:
-
-
// TODO: [12/31/9999]
-
-
// TODO(note)
-
-
// FIXME(note)
-
-
/* FIXME: */
-
-
/* TODO: */
-
-
/** FIXME: */
-
-
/** TODO: */
-
-

Triggering Examples

-
// TODO: [↓10/14/2019]
-
-
// FIXME: [↓10/14/2019]
-
-
// FIXME: [↓1/14/2019]
-
-
// FIXME: [↓10/14/2019]
-
-
// TODO: [↓9999/14/10]
-
- -
-
- - -
-
- - - diff --git a/explicit_acl.html b/explicit_acl.html deleted file mode 100644 index 0d5a80126..000000000 --- a/explicit_acl.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - explicit_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit ACL

- -

All declarations should specify Access Control Level keywords explicitly

- -
    -
  • Identifier: explicit_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
public final class B {}
-
-
private struct C {}
-
-
internal enum A { internal enum B {} }
-
-
internal final class Foo {}
-
-
internal
-class Foo {
-  private let bar = 5
-}
-
-
internal func a() { let a =  }
-
-
private func a() { func innerFunction() { } }
-
-
private enum Foo { enum Bar { } }
-
-
private struct C { let d = 5 }
-
-
internal protocol A {
-  func b()
-}
-
-
internal protocol A {
-  var b: Int
-}
-
-
internal class A { deinit {} }
-
-
extension A: Equatable {}
-
-
extension A {}
-
-
extension Foo {
-    internal func bar() {}
-}
-
-
internal enum Foo {
-    case bar
-}
-
-
extension Foo {
-    public var isValid: Bool {
-        let result = true
-        return result
-    }
-}
-
-
extension Foo {
-    private var isValid: Bool {
-        get {
-            return true
-        }
-        set(newValue) {
-            print(newValue)
-        }
-    }
-}
-
-
private extension Foo {
-    var isValid: Bool { true }
-    struct S {
-        let b = 2
-    }
-}
-
-

Triggering Examples

-
↓enum A {}
-
-
final ↓class B {}
-
-
internal struct C { ↓let d = 5 }
-
-
public struct C { private(set) ↓var d = 5 }
-
-
internal struct C { static ↓let d = 5 }
-
-
public struct C { ↓let d = 5 }
-
-
public struct C { ↓init() }
-
-
static ↓func a() {}
-
-
internal let a = 0
-↓func b() {}
-
-
extension Foo {
-    ↓func bar() {}
-    static ↓func baz() {}
-}
-
-
public extension E {
-    let a = 1
-    struct S {
-        ↓let b = 2
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/explicit_enum_raw_value.html b/explicit_enum_raw_value.html deleted file mode 100644 index 155d52175..000000000 --- a/explicit_enum_raw_value.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - explicit_enum_raw_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Enum Raw Value

- -

Enums should be explicitly assigned their raw values

- -
    -
  • Identifier: explicit_enum_raw_value
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Numbers {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String {
-  case one = "one"
-  case two = "two"
-}
-
-
protocol Algebra {}
-enum Numbers: Algebra {
-  case one
-}
-
-

Triggering Examples

-
enum Numbers: Int {
-  case one = 10, ↓two, three = 30
-}
-
-
enum Numbers: NSInteger {
-  case ↓one
-}
-
-
enum Numbers: String {
-  case ↓one
-  case ↓two
-}
-
-
enum Numbers: String {
-   case ↓one, two = "two"
-}
-
-
enum Numbers: Decimal {
-  case ↓one, ↓two
-}
-
-
enum Outer {
-    enum Numbers: Decimal {
-      case ↓one, ↓two
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/explicit_init.html b/explicit_init.html deleted file mode 100644 index 9afdbe00a..000000000 --- a/explicit_init.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Init

- -

Explicitly calling .init() should be avoided

- -
    -
  • Identifier: explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -include_bare_init - -false -
  • -
-

Non Triggering Examples

-
import Foundation
-class C: NSObject {
-    override init() {
-        super.init()
-    }
-}
-
-
struct S {
-    let n: Int
-}
-extension S {
-    init() {
-        self.init(n: 1)
-    }
-}
-
-
[1].flatMap(String.init)
-
-
[String.self].map { $0.init(1) }
-
-
[String.self].map { type in type.init(1) }
-
-
Observable.zip(obs1, obs2, resultSelector: MyType.init).asMaybe()
-
-
_ = GleanMetrics.Tabs.someType.init()
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: MyType.init
-).asMaybe()
-
-

Triggering Examples

-
[1].flatMap{String↓.init($0)}
-
-
[String.self].map { Type in Type↓.init(1) }
-
-
func foo() -> [String] {
-    return [1].flatMap { String↓.init($0) }
-}
-
-
_ = GleanMetrics.Tabs.GroupedTabExtra↓.init()
-
-
_ = Set<KsApi.Category>↓.init()
-
-
Observable.zip(
-  obs1,
-  obs2,
-  resultSelector: { MyType↓.init($0, $1) }
-).asMaybe()
-
- -
-
- - -
-
- - - diff --git a/explicit_self.html b/explicit_self.html deleted file mode 100644 index 4b1ffaa4d..000000000 --- a/explicit_self.html +++ /dev/null @@ -1,483 +0,0 @@ - - - - explicit_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Self

- -

Instance variables and functions should be explicitly accessed with ‘self.’

- -
    -
  • Identifier: explicit_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        self.f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = self.p1
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        self.$p1
-        self._p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
-

Triggering Examples

-
struct A {
-    func f1() {}
-    func f2() {
-        ↓f1()
-    }
-}
-
-
struct A {
-    let p1: Int
-    func f1() {
-        _ = ↓p1
-    }
-}
-
-
struct A {
-    func f1(a b: Int) {}
-    func f2() {
-        ↓f1(a: 0)
-    }
-}
-
-
@propertyWrapper
-struct Wrapper<Value> {
-    let wrappedValue: Value
-    var projectedValue: [Value] {
-        [self.wrappedValue]
-    }
-}
-struct A {
-    @Wrapper var p1: Int
-    func f1() {
-        ↓$p1
-        ↓_p1
-    }
-}
-func f1() {
-    A(p1: 10).$p1
-}
-
- -
-
- - -
-
- - - diff --git a/explicit_top_level_acl.html b/explicit_top_level_acl.html deleted file mode 100644 index a23b64b97..000000000 --- a/explicit_top_level_acl.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - explicit_top_level_acl Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Top Level ACL

- -

Top-level declarations should specify Access Control Level keywords explicitly

- -
    -
  • Identifier: explicit_top_level_acl
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
internal enum A {}
-
-
public final class B {}
-
-
private struct S1 {
-    struct S2 {}
-}
-
-
internal enum A { enum B {} }
-
-
internal final actor Foo {}
-
-
internal typealias Foo = Bar
-
-
internal func a() {}
-
-
extension A: Equatable {}
-
-
extension A {}
-
-

Triggering Examples

-
↓enum A {}
-
-
final ↓class B {}
-
-
↓protocol P {}
-
-
↓func a() {}
-
-
internal let a = 0
-↓func b() {}
-
- -
-
- - -
-
- - - diff --git a/explicit_type_interface.html b/explicit_type_interface.html deleted file mode 100644 index db87042ae..000000000 --- a/explicit_type_interface.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - explicit_type_interface Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Explicit Type Interface

- -

Properties should have a type interface

- -
    -
  • Identifier: explicit_type_interface
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
    -allow_redundancy - -false -
  • -
-

Non Triggering Examples

-
class Foo {
-  var myVar: Int? = 0
-}
-
-
class Foo {
-  let myVar: Int? = 0, s: String = ""
-}
-
-
class Foo {
-  static var myVar: Int? = 0
-}
-
-
class Foo {
-  class var myVar: Int? = 0
-}
-
-

Triggering Examples

-
class Foo {
-  var ↓myVar = 0
-}
-
-
class Foo {
-  let ↓mylet = 0
-}
-
-
class Foo {
-  static var ↓myStaticVar = 0
-}
-
-
class Foo {
-  class var ↓myClassVar = 0
-}
-
-
class Foo {
-  let ↓myVar = Int(0), ↓s = ""
-}
-
-
class Foo {
-  let ↓myVar = Set<Int>(0)
-}
-
- -
-
- - -
-
- - - diff --git a/extension_access_modifier.html b/extension_access_modifier.html deleted file mode 100644 index 063450f6c..000000000 --- a/extension_access_modifier.html +++ /dev/null @@ -1,543 +0,0 @@ - - - - extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Extension Access Modifier

- -

Prefer to use extension access modifiers

- -
    -
  • Identifier: extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
extension Foo: SomeProtocol {
-  public var bar: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  public func baz() {}
-}
-
-
extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
extension Foo {
-  var bar: Int { return 1 }
-  internal var baz: Int { return 1 }
-}
-
-
internal extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  var bar: Int { return 1 }
-  internal var baz: Int { return 1 }
-}
-
-
extension Foo {
-  private var bar: Int { return 1 }
-  private var baz: Int { return 1 }
-}
-
-
extension Foo {
-  open var bar: Int { return 1 }
-  open var baz: Int { return 1 }
-}
-
-
extension Foo {
-    func setup() {}
-    public func update() {}
-}
-
-
private extension Foo {
-  private var bar: Int { return 1 }
-  var baz: Int { return 1 }
-}
-
-
extension Foo {
-  internal private(set) var bar: Int {
-    get { Foo.shared.bar }
-    set { Foo.shared.bar = newValue }
-  }
-}
-
-
extension Foo {
-  private(set) internal var bar: Int {
-    get { Foo.shared.bar }
-    set { Foo.shared.bar = newValue }
-  }
-}
-
-
public extension Foo {
-  private(set) var value: Int { 1 }
-}
-
-

Triggering Examples

-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public var baz: Int { return 1 }
-}
-
-
↓extension Foo {
-   public var bar: Int { return 1 }
-   public func baz() {}
-}
-
-
public extension Foo {
-  ↓public func bar() {}
-  ↓public func baz() {}
-}
-
-
↓extension Foo {
-   public var bar: Int {
-      let value = 1
-      return value
-   }
-
-   public var baz: Int { return 1 }
-}
-
-
↓extension Array where Element: Equatable {
-    public var unique: [Element] {
-        var uniqueValues = [Element]()
-        for item in self where !uniqueValues.contains(item) {
-            uniqueValues.append(item)
-        }
-        return uniqueValues
-    }
-}
-
-
↓extension Foo {
-   #if DEBUG
-   public var bar: Int {
-      let value = 1
-      return value
-   }
-   #endif
-
-   public var baz: Int { return 1 }
-}
-
-
public extension Foo {
-  ↓private func bar() {}
-  ↓private func baz() {}
-}
-
-
↓extension Foo {
-  private(set) public var value: Int { 1 }
-}
-
- -
-
- - -
-
- - - diff --git a/fallthrough.html b/fallthrough.html deleted file mode 100644 index 101754e76..000000000 --- a/fallthrough.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - fallthrough Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fallthrough

- -

Fallthrough should be avoided

- -
    -
  • Identifier: fallthrough
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar, .bar2, .bar3:
-  something()
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-  ↓fallthrough
-case .bar2:
-  something()
-}
-
- -
-
- - -
-
- - - diff --git a/fatal_error_message.html b/fatal_error_message.html deleted file mode 100644 index 4773b7ba3..000000000 --- a/fatal_error_message.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - fatal_error_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Fatal Error Message

- -

A fatalError call should have a message

- -
    -
  • Identifier: fatal_error_message
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo() {
-  fatalError("Foo")
-}
-
-
func foo() {
-  fatalError(x)
-}
-
-

Triggering Examples

-
func foo() {
-  ↓fatalError("")
-}
-
-
func foo() {
-  ↓fatalError()
-}
-
- -
-
- - -
-
- - - diff --git a/file_header.html b/file_header.html deleted file mode 100644 index 6de3e6621..000000000 --- a/file_header.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - file_header Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Header

- -

Header comments should be consistent with project patterns. The SWIFTLINT_CURRENT_FILENAME placeholder can optionally be used in the required and forbidden patterns. It will be replaced by the real file name.

- -
    -
  • Identifier: file_header
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = "Copyright"
-
-
let foo = 2 // Copyright
-
-
let foo = 2
- // Copyright
-
-

Triggering Examples

-
// ↓Copyright
-
-
//
-// ↓Copyright
-
-
//
-//  FileHeaderRule.swift
-//  SwiftLint
-//
-//  Created by Marcelo Fabri on 27/11/16.
-//  ↓Copyright © 2016 Realm. All rights reserved.
-//
-
- -
-
- - -
-
- - - diff --git a/file_length.html b/file_length.html deleted file mode 100644 index 36f8a939c..000000000 --- a/file_length.html +++ /dev/null @@ -1,2039 +0,0 @@ - - - - file_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Length

- -

Files should not span too many lines.

- -
    -
  • Identifier: file_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -400 -
    -error - -1000 -
    -ignore_comment_only_lines - -false -
  • -
-

Non Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-

Triggering Examples

-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-
-
-
print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-print("swiftlint")
-//
-
-
-
print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-print("swiftlint")
-
-
-
- -
-
- - -
-
- - - diff --git a/file_name.html b/file_name.html deleted file mode 100644 index 501940a6b..000000000 --- a/file_name.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - file_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name

- -

File name should match a type or extension declared in the file (if any)

- -
    -
  • Identifier: file_name
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[“LinuxMain.swift”, “main.swift”] -
    -prefix_pattern - -“” -
    -suffix_pattern - -“+.*” -
    -nested_type_separator - -“.” -
  • -
- -
-
- - -
-
- - - diff --git a/file_name_no_space.html b/file_name_no_space.html deleted file mode 100644 index dfc52aea1..000000000 --- a/file_name_no_space.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - file_name_no_space Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Name no Space

- -

File name should not contain any whitespace

- -
    -
  • Identifier: file_name_no_space
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
  • -
- -
-
- - -
-
- - - diff --git a/file_types_order.html b/file_types_order.html deleted file mode 100644 index 65c9097eb..000000000 --- a/file_types_order.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - file_types_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

File Types Order

- -

Specifies how the types within a file should be ordered.

- -
    -
  • Identifier: file_types_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -order - -[[supporting_type], [main_type], [extension], [preview_provider], [library_content_provider]] -
  • -
-

Non Triggering Examples

-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Main Type
-class TestViewController: UIViewController {
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-
-    struct TestStruct {
-        // 3 lines
-    }
-
-    enum TestEnum {
-        // 5 lines
-    }
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-
-    // Stored Instance Properties
-    var shouldLayoutView1: Bool!
-    weak var delegate: TestViewControllerDelegate?
-    private var hasLayoutedView1: Bool = false
-    private var hasLayoutedView2: Bool = false
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-
-    // Initializers
-    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-
-    // Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-    }
-
-    override func viewDidLayoutSubviews() {
-        super.viewDidLayoutSubviews()
-    }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    @objc
-    func goToRandomVcButtonPressed() {
-        goToRandomVc()
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-
-    func goToInfoVc() { /* TODO */ }
-
-    func goToRandomVc() {
-        let viewCtrl = getRandomVc()
-        present(viewCtrl, animated: true)
-    }
-
-    private func getRandomVc() -> UIViewController { return UIViewController() }
-
-    // Subscripts
-    subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Only extensions
-extension Foo {}
-extension Bar {
-}
-
-
// Main Type
-struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
-// Preview Provider
-struct ContentView_Previews: PreviewProvider {
-    static var previews: some View { ContentView() }
-}
-
-// Library Content Provider
-struct ContentView_LibraryContent: LibraryContentProvider {
-    var views: [LibraryItem] {
-        LibraryItem(ContentView())
-    }
-}
-
-

Triggering Examples

-
↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-↓class TestViewController: UIViewController {}
-
-// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-
// Supporting Types
-protocol TestViewControllerDelegate {
-    func didPressTrackedButton()
-}
-
-// Extensions
-↓extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-class TestViewController: UIViewController {}
-
-// Extensions
-extension TestViewController: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return 1
-    }
-}
-
-
// Preview Provider
-↓struct ContentView_Previews: PreviewProvider {
-    static var previews: some View { ContentView() }
-}
-
-// Main Type
-struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
-
// Library Content Provider
-↓struct ContentView_LibraryContent: LibraryContentProvider {
-    var views: [LibraryItem] {
-        LibraryItem(ContentView())
-    }
-}
-
-// Main Type
-struct ContentView: View {
-    var body: some View {
-        Text("Hello, World!")
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/final_test_case.html b/final_test_case.html deleted file mode 100644 index 1ad099329..000000000 --- a/final_test_case.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - final_test_case Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Final Test Case

- -

Test cases should be final

- -
    -
  • Identifier: final_test_case
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
final class Test: XCTestCase {}
-
-
open class Test: XCTestCase {}
-
-
public final class Test: QuickSpec {}
-
-
class Test: MyTestCase {}
-
-
//
-// test_parent_classes: ["MyTestCase", "QuickSpec", "XCTestCase"]
-//
-
-struct Test: MyTestCase {}
-
-
-

Triggering Examples

-
class ↓Test: XCTestCase {}
-
-
public class ↓Test: QuickSpec {}
-
-
//
-// test_parent_classes: ["MyTestCase", "QuickSpec", "XCTestCase"]
-//
-
-class ↓Test: MyTestCase {}
-
-
- -
-
- - -
-
- - - diff --git a/first_where.html b/first_where.html deleted file mode 100644 index 215c5e31e..000000000 --- a/first_where.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - first_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

First Where

- -

Prefer using .first(where:) over .filter { }.first in collections

- -
    -
  • Identifier: first_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.first == .identifier
-
-
myList.first(where: { $0 % 2 == 0 })
-
-
match(pattern: pattern).filter { $0.first == .identifier }
-
-
(myList.filter { $0 == 1 }.suffix(2)).first
-
-
collection.filter("stringCol = '3'").first
-
-
realm?.objects(User.self).filter(NSPredicate(format: "email ==[c] %@", email)).first
-
-
if let pause = timeTracker.pauses.filter("beginDate < %@", beginDate).first { print(pause) }
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.first
-
-
↓myList.filter({ $0 % 2 == 0 }).first
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).first?.something()
-
-
↓myList.filter(someFunction).first
-
-
↓myList.filter({ $0 % 2 == 0 })
-.first
-
-
(↓myList.filter { $0 == 1 }).first
-
-
↓myListOfDict.filter { dict in dict["1"] }.first
-
-
↓myListOfDict.filter { $0["someString"] }.first
-
- -
-
- - -
-
- - - diff --git a/flatmap_over_map_reduce.html b/flatmap_over_map_reduce.html deleted file mode 100644 index 421b07cce..000000000 --- a/flatmap_over_map_reduce.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - flatmap_over_map_reduce Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Flat Map over Map Reduce

- -

Prefer flatMap over map followed by reduce([], +)

- -
    -
  • Identifier: flatmap_over_map_reduce
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = bar.map { $0.count }.reduce(0, +)
-
-
let foo = bar.flatMap { $0.array }
-
-

Triggering Examples

-
let foo = ↓bar.map { $0.array }.reduce([], +)
-
- -
-
- - -
-
- - - diff --git a/for_where.html b/for_where.html deleted file mode 100644 index e7418dff6..000000000 --- a/for_where.html +++ /dev/null @@ -1,512 +0,0 @@ - - - - for_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer For-Where

- -

where clauses are preferred over a single if inside a for

- -
    -
  • Identifier: for_where
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allow_for_as_filter - -false -
  • -
-

Non Triggering Examples

-
for user in users where user.id == 1 { }
-
-
for user in users {
-  if let id = user.id { }
-}
-
-
for user in users {
-  if var id = user.id { }
-}
-
-
for user in users {
-  if user.id == 1 { } else { }
-}
-
-
for user in users {
-  if user.id == 1 {
-  } else if user.id == 2 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  print(user)
-}
-
-
for user in users {
-  let id = user.id
-  if id == 1 { }
-}
-
-
for user in users {
-  if user.id == 1 { }
-  return true
-}
-
-
for user in users {
-  if user.id == 1 && user.age > 18 { }
-}
-
-
for user in users {
-  if user.id == 1, user.age > 18 { }
-}
-
-
for (index, value) in array.enumerated() {
-  if case .valueB(_) = value {
-    return index
-  }
-}
-
-
//
-// allow_for_as_filter: true
-//
-
-for user in users {
-  if user.id == 1 { return true }
-}
-
-
-
//
-// allow_for_as_filter: true
-//
-
-for user in users {
-  if user.id == 1 {
-    let derivedValue = calculateValue(from: user)
-    return derivedValue != 0
-  }
-}
-
-
-

Triggering Examples

-
for user in users {
-  ↓if user.id == 1 { return true }
-}
-
-
for subview in subviews {
-    ↓if !(subview is UIStackView) {
-        subview.removeConstraints(subview.constraints)
-        subview.removeFromSuperview()
-    }
-}
-
-
//
-// allow_for_as_filter: true
-//
-
-for subview in subviews {
-    ↓if !(subview is UIStackView) {
-        subview.removeConstraints(subview.constraints)
-        subview.removeFromSuperview()
-    }
-}
-
-
- -
-
- - -
-
- - - diff --git a/force_cast.html b/force_cast.html deleted file mode 100644 index c97b40abc..000000000 --- a/force_cast.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - force_cast Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Cast

- -

Force casts should be avoided

- -
    -
  • Identifier: force_cast
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
NSNumber() as? Int
-
-

Triggering Examples

-
NSNumber() ↓as! Int
-
- -
-
- - -
-
- - - diff --git a/force_try.html b/force_try.html deleted file mode 100644 index 8d28059cb..000000000 --- a/force_try.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - force_try Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Try

- -

Force tries should be avoided

- -
    -
  • Identifier: force_try
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
func a() throws {}
-do {
-  try a()
-} catch {}
-
-

Triggering Examples

-
func a() throws {}
-↓try! a()
-
- -
-
- - -
-
- - - diff --git a/force_unwrapping.html b/force_unwrapping.html deleted file mode 100644 index 873ad986a..000000000 --- a/force_unwrapping.html +++ /dev/null @@ -1,490 +0,0 @@ - - - - force_unwrapping Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Force Unwrapping

- -

Force unwrapping should be avoided

- -
    -
  • Identifier: force_unwrapping
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if let url = NSURL(string: query)
-
-
navigationController?.pushViewController(viewController, animated: true)
-
-
let s as! Test
-
-
try! canThrowErrors()
-
-
let object: Any!
-
-
@IBOutlet var constraints: [NSLayoutConstraint]!
-
-
setEditing(!editing, animated: true)
-
-
navigationController.setNavigationBarHidden(!navigationController.navigationBarHidden, animated: true)
-
-
if addedToPlaylist && (!self.selectedFilters.isEmpty || self.searchBar?.text?.isEmpty == false) {}
-
-
print("\(xVar)!")
-
-
var test = (!bar)
-
-
var a: [Int]!
-
-
private var myProperty: (Void -> Void)!
-
-
func foo(_ options: [AnyHashable: Any]!) {
-
-
func foo() -> [Int]!
-
-
func foo() -> [AnyHashable: Any]!
-
-
func foo() -> [Int]! { return [] }
-
-
return self
-
-

Triggering Examples

-
let url = NSURL(string: query)↓!
-
-
navigationController↓!.pushViewController(viewController, animated: true)
-
-
let unwrapped = optional↓!
-
-
return cell↓!
-
-
let url = NSURL(string: "http://www.google.com")↓!
-
-
let dict = ["Boooo": "👻"]
-func bla() -> String {
-    return dict["Boooo"]↓!
-}
-
-
let dict = ["Boooo": "👻"]
-func bla() -> String {
-    return dict["Boooo"]↓!.contains("B")
-}
-
-
let a = dict["abc"]↓!.contains("B")
-
-
dict["abc"]↓!.bar("B")
-
-
if dict["a"]↓!↓!↓!↓! {}
-
-
var foo: [Bool]! = dict["abc"]↓!
-
-
realm.objects(SwiftUTF8Object.self).filter("%K == %@", "柱нǢкƱаم👍", utf8TestString).first↓!
-
-
context("abc") {
-  var foo: [Bool]! = dict["abc"]↓!
-}
-
-
open var computed: String { return foo.bar↓! }
-
-
return self↓!
-
-
[1, 3, 5, 6].first { $0.isMultiple(of: 2) }↓!
-
-
map["a"]↓!↓!
-
- -
-
- - -
-
- - - diff --git a/function_body_length.html b/function_body_length.html deleted file mode 100644 index d60b67493..000000000 --- a/function_body_length.html +++ /dev/null @@ -1,418 +0,0 @@ - - - - function_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Body Length

- -

Function bodies should not span too many lines

- -
    -
  • Identifier: function_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -50 -
    -error - -100 -
  • -
- -
-
- - -
-
- - - diff --git a/function_default_parameter_at_end.html b/function_default_parameter_at_end.html deleted file mode 100644 index b1356c286..000000000 --- a/function_default_parameter_at_end.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - function_default_parameter_at_end Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Default Parameter at End

- -

Prefer to locate parameters with defaults toward the end of the parameter list

- -
    -
  • Identifier: function_default_parameter_at_end
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_first_isolation_inheritance_parameter - -true -
  • -
-

Non Triggering Examples

-
func foo(baz: String, bar: Int = 0) {}
-
-
func foo(x: String, y: Int = 0, z: CGFloat = 0) {}
-
-
func foo(bar: String, baz: Int = 0, z: () -> Void) {}
-
-
func foo(bar: String, z: () -> Void, baz: Int = 0) {}
-
-
func foo(bar: Int = 0) {}
-
-
func foo() {}
-
-
class A: B {
-  override func foo(bar: Int = 0, baz: String) {}
-
-
func foo(bar: Int = 0, completion: @escaping CompletionHandler) {}
-
-
func foo(a: Int, b: CGFloat = 0) {
-  let block = { (error: Error?) in }
-}
-
-
func foo(a: String, b: String? = nil,
-         c: String? = nil, d: @escaping AlertActionHandler = { _ in }) {}
-
-
override init?(for date: Date = Date(), coordinate: CLLocationCoordinate2D) {}
-
-
func handleNotification(_ userInfo: NSDictionary,
-                        userInteraction: Bool = false,
-                        completionHandler: ((UIBackgroundFetchResult) -> Void)?) {}
-
-
func write(withoutNotifying tokens: [NotificationToken] =  {}, _ block: (() throws -> Int)) {}
-
-
func foo(bar: Int, baz: Int = 0, z: () -> Void) {}
-
-
func foo(bar: Int, baz: Int = 0, z: () -> Void, x: Int = 0) {}
-
-
func foo(isolation: isolated (any Actor)? = #isolation, bar: String) {}
-
-

Triggering Examples

-
func foo(↓bar: Int = 0, baz: String) {}
-
-
private func foo(↓bar: Int = 0, baz: String) {}
-
-
public init?(↓for date: Date = Date(), coordinate: CLLocationCoordinate2D) {}
-
-
func foo(bar: Int, ↓baz: Int = 0, z: () -> Void, x: Int) {}
-
-
//
-// ignore_first_isolation_inheritance_parameter: false
-//
-
-func foo(isolation: isolated (any Actor)? = #isolation, bar: String) {}
-
-
- -
-
- - -
-
- - - diff --git a/function_parameter_count.html b/function_parameter_count.html deleted file mode 100644 index e70161685..000000000 --- a/function_parameter_count.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - function_parameter_count Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Function Parameter Count

- -

Number of function parameters should be low.

- -
    -
  • Identifier: function_parameter_count
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -5 -
    -error - -8 -
    -ignores_default_parameters - -true -
  • -
-

Non Triggering Examples

-
init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
`init`(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
init?<T: String>(a: T, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
func f2(p1: Int, p2: Int) { }
-
-
func f(a: Int, b: Int, c: Int, d: Int, x: Int = 42) {}
-
-
func f(a: [Int], b: Int, c: Int, d: Int, f: Int) -> [Int] {
-    let s = a.flatMap { $0 as? [String: Int] } ?? []}}
-
-
override func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-

Triggering Examples

-
↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
↓func initialValue(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-
-
private ↓func f(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int = 2, g: Int) {}
-
-
struct Foo {
-    init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}
-    ↓func bar(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {}}
-
- -
-
- - -
-
- - - diff --git a/generic_type_name.html b/generic_type_name.html deleted file mode 100644 index 713e8f084..000000000 --- a/generic_type_name.html +++ /dev/null @@ -1,568 +0,0 @@ - - - - generic_type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Generic Type Name

- -

Generic type name should only contain alphanumeric characters, start with an uppercase character and span between 1 and 20 characters in length.

- -
    -
  • Identifier: generic_type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -min_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -1 -
    -error - -0 -
    -
    -max_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -20 -
    -error - -1000 -
    -
    -excluded - -[] -
    -allowed_symbols - -[] -
    -unallowed_symbols_severity - -error -
    -validates_start_with_lowercase - -error -
  • -
-

Non Triggering Examples

-
func foo<T>() {}
-
-
func foo<T>() -> T {}
-
-
func foo<T, U>(param: U) -> T {}
-
-
func foo<T: Hashable, U: Rule>(param: U) -> T {}
-
-
struct Foo<T> {}
-
-
class Foo<T> {}
-
-
enum Foo<T> {}
-
-
func run(_ options: NoOptions<CommandantError<()>>) {}
-
-
func foo(_ options: Set<type>) {}
-
-
func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool
-
-
func configureWith(data: Either<MessageThread, (project: Project, backing: Backing)>)
-
-
typealias StringDictionary<T> = Dictionary<String, T>
-
-
typealias BackwardTriple<T1, T2, T3> = (T3, T2, T1)
-
-
typealias DictionaryOfStrings<T : Hashable> = Dictionary<T, String>
-
-

Triggering Examples

-
func foo<↓T_Foo>() {}
-
-
func foo<T, ↓U_Foo>(param: U_Foo) -> T {}
-
-
func foo<↓TTTTTTTTTTTTTTTTTTTTT>() {}
-
-
func foo<↓type>() {}
-
-
typealias StringDictionary<↓T_Foo> = Dictionary<String, T_Foo>
-
-
typealias BackwardTriple<T1, ↓T2_Bar, T3> = (T3, T2_Bar, T1)
-
-
typealias DictionaryOfStrings<↓T_Foo: Hashable> = Dictionary<T_Foo, String>
-
-
class Foo<↓T_Foo> {}
-
-
class Foo<T, ↓U_Foo> {}
-
-
class Foo<↓T_Foo, ↓U_Foo> {}
-
-
class Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
class Foo<↓type> {}
-
-
struct Foo<↓T_Foo> {}
-
-
struct Foo<T, ↓U_Foo> {}
-
-
struct Foo<↓T_Foo, ↓U_Foo> {}
-
-
struct Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
struct Foo<↓type> {}
-
-
enum Foo<↓T_Foo> {}
-
-
enum Foo<T, ↓U_Foo> {}
-
-
enum Foo<↓T_Foo, ↓U_Foo> {}
-
-
enum Foo<↓TTTTTTTTTTTTTTTTTTTTT> {}
-
-
enum Foo<↓type> {}
-
- -
-
- - -
-
- - - diff --git a/ibinspectable_in_extension.html b/ibinspectable_in_extension.html deleted file mode 100644 index cbb7ef683..000000000 --- a/ibinspectable_in_extension.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - ibinspectable_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

IBInspectable in Extension

- -

Extensions shouldn’t add @IBInspectable properties

- -
    -
  • Identifier: ibinspectable_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-

Triggering Examples

-
extension Foo {
-  ↓@IBInspectable private var x: Int
-}
-
- -
-
- - -
-
- - - diff --git a/identical_operands.html b/identical_operands.html deleted file mode 100644 index ac49bc599..000000000 --- a/identical_operands.html +++ /dev/null @@ -1,898 +0,0 @@ - - - - identical_operands Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identical Operands

- -

Comparing two identical operands is likely a mistake

- -
    -
  • Identifier: identical_operands
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
1 == 2
-
-
foo == bar
-
-
prefixedFoo == foo
-
-
foo.aProperty == foo.anotherProperty
-
-
self.aProperty == self.anotherProperty
-
-
"1 == 1"
-
-
self.aProperty == aProperty
-
-
lhs.aProperty == rhs.aProperty
-
-
lhs.identifier == rhs.identifier
-
-
i == index
-
-
$0 == 0
-
-
keyValues?.count ?? 0 == 0
-
-
string == string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num == num?.byteSwapped
-
-
num == num!.byteSwapped
-
-
1    + 1 ==   1     +    2
-
-
f(  i :   2) ==   f (i: 3 )
-
-
1 != 2
-
-
foo != bar
-
-
prefixedFoo != foo
-
-
foo.aProperty != foo.anotherProperty
-
-
self.aProperty != self.anotherProperty
-
-
"1 != 1"
-
-
self.aProperty != aProperty
-
-
lhs.aProperty != rhs.aProperty
-
-
lhs.identifier != rhs.identifier
-
-
i != index
-
-
$0 != 0
-
-
keyValues?.count ?? 0 != 0
-
-
string != string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num != num?.byteSwapped
-
-
num != num!.byteSwapped
-
-
1    + 1 !=   1     +    2
-
-
f(  i :   2) !=   f (i: 3 )
-
-
1 === 2
-
-
foo === bar
-
-
prefixedFoo === foo
-
-
foo.aProperty === foo.anotherProperty
-
-
self.aProperty === self.anotherProperty
-
-
"1 === 1"
-
-
self.aProperty === aProperty
-
-
lhs.aProperty === rhs.aProperty
-
-
lhs.identifier === rhs.identifier
-
-
i === index
-
-
$0 === 0
-
-
keyValues?.count ?? 0 === 0
-
-
string === string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num === num?.byteSwapped
-
-
num === num!.byteSwapped
-
-
1    + 1 ===   1     +    2
-
-
f(  i :   2) ===   f (i: 3 )
-
-
1 !== 2
-
-
foo !== bar
-
-
prefixedFoo !== foo
-
-
foo.aProperty !== foo.anotherProperty
-
-
self.aProperty !== self.anotherProperty
-
-
"1 !== 1"
-
-
self.aProperty !== aProperty
-
-
lhs.aProperty !== rhs.aProperty
-
-
lhs.identifier !== rhs.identifier
-
-
i !== index
-
-
$0 !== 0
-
-
keyValues?.count ?? 0 !== 0
-
-
string !== string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num !== num?.byteSwapped
-
-
num !== num!.byteSwapped
-
-
1    + 1 !==   1     +    2
-
-
f(  i :   2) !==   f (i: 3 )
-
-
1 > 2
-
-
foo > bar
-
-
prefixedFoo > foo
-
-
foo.aProperty > foo.anotherProperty
-
-
self.aProperty > self.anotherProperty
-
-
"1 > 1"
-
-
self.aProperty > aProperty
-
-
lhs.aProperty > rhs.aProperty
-
-
lhs.identifier > rhs.identifier
-
-
i > index
-
-
$0 > 0
-
-
keyValues?.count ?? 0 > 0
-
-
string > string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num > num?.byteSwapped
-
-
num > num!.byteSwapped
-
-
1    + 1 >   1     +    2
-
-
f(  i :   2) >   f (i: 3 )
-
-
1 >= 2
-
-
foo >= bar
-
-
prefixedFoo >= foo
-
-
foo.aProperty >= foo.anotherProperty
-
-
self.aProperty >= self.anotherProperty
-
-
"1 >= 1"
-
-
self.aProperty >= aProperty
-
-
lhs.aProperty >= rhs.aProperty
-
-
lhs.identifier >= rhs.identifier
-
-
i >= index
-
-
$0 >= 0
-
-
keyValues?.count ?? 0 >= 0
-
-
string >= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num >= num?.byteSwapped
-
-
num >= num!.byteSwapped
-
-
1    + 1 >=   1     +    2
-
-
f(  i :   2) >=   f (i: 3 )
-
-
1 < 2
-
-
foo < bar
-
-
prefixedFoo < foo
-
-
foo.aProperty < foo.anotherProperty
-
-
self.aProperty < self.anotherProperty
-
-
"1 < 1"
-
-
self.aProperty < aProperty
-
-
lhs.aProperty < rhs.aProperty
-
-
lhs.identifier < rhs.identifier
-
-
i < index
-
-
$0 < 0
-
-
keyValues?.count ?? 0 < 0
-
-
string < string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num < num?.byteSwapped
-
-
num < num!.byteSwapped
-
-
1    + 1 <   1     +    2
-
-
f(  i :   2) <   f (i: 3 )
-
-
1 <= 2
-
-
foo <= bar
-
-
prefixedFoo <= foo
-
-
foo.aProperty <= foo.anotherProperty
-
-
self.aProperty <= self.anotherProperty
-
-
"1 <= 1"
-
-
self.aProperty <= aProperty
-
-
lhs.aProperty <= rhs.aProperty
-
-
lhs.identifier <= rhs.identifier
-
-
i <= index
-
-
$0 <= 0
-
-
keyValues?.count ?? 0 <= 0
-
-
string <= string.lowercased()
-
-
let num: Int? = 0
-_ = num != nil && num <= num?.byteSwapped
-
-
num <= num!.byteSwapped
-
-
1    + 1 <=   1     +    2
-
-
f(  i :   2) <=   f (i: 3 )
-
-
func evaluate(_ mode: CommandMode) -> Result<Options, CommandantError<CommandantError<()>>>
-
-
let array = Array<Array<Int>>()
-
-
guard Set(identifiers).count != identifiers.count else { return }
-
-
expect("foo") == "foo"
-
-
type(of: model).cachePrefix == cachePrefix
-
-
histogram[156].0 == 0x003B8D96 && histogram[156].1 == 1
-
-
[Wrapper(type: .three), Wrapper(type: .one)].sorted { "\($0.type)" > "\($1.type)"}
-
-
array.sorted { "\($0)" < "\($1)" }
-
-

Triggering Examples

-
↓1 == 1
-
-
↓foo == foo
-
-
↓foo.aProperty == foo.aProperty
-
-
↓self.aProperty == self.aProperty
-
-
↓$0 == $0
-
-
↓a?.b == a?.b
-
-
if (↓elem == elem) {}
-
-
XCTAssertTrue(↓s3 == s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView == tab.webView
-
-
↓1    + 1 ==   1     +    1
-
-
 ↓f(  i :   2) ==   f (i: 
- 2 )
-
-
↓1 != 1
-
-
↓foo != foo
-
-
↓foo.aProperty != foo.aProperty
-
-
↓self.aProperty != self.aProperty
-
-
↓$0 != $0
-
-
↓a?.b != a?.b
-
-
if (↓elem != elem) {}
-
-
XCTAssertTrue(↓s3 != s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView != tab.webView
-
-
↓1    + 1 !=   1     +    1
-
-
 ↓f(  i :   2) !=   f (i: 
- 2 )
-
-
↓1 === 1
-
-
↓foo === foo
-
-
↓foo.aProperty === foo.aProperty
-
-
↓self.aProperty === self.aProperty
-
-
↓$0 === $0
-
-
↓a?.b === a?.b
-
-
if (↓elem === elem) {}
-
-
XCTAssertTrue(↓s3 === s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView === tab.webView
-
-
↓1    + 1 ===   1     +    1
-
-
 ↓f(  i :   2) ===   f (i: 
- 2 )
-
-
↓1 !== 1
-
-
↓foo !== foo
-
-
↓foo.aProperty !== foo.aProperty
-
-
↓self.aProperty !== self.aProperty
-
-
↓$0 !== $0
-
-
↓a?.b !== a?.b
-
-
if (↓elem !== elem) {}
-
-
XCTAssertTrue(↓s3 !== s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView !== tab.webView
-
-
↓1    + 1 !==   1     +    1
-
-
 ↓f(  i :   2) !==   f (i: 
- 2 )
-
-
↓1 > 1
-
-
↓foo > foo
-
-
↓foo.aProperty > foo.aProperty
-
-
↓self.aProperty > self.aProperty
-
-
↓$0 > $0
-
-
↓a?.b > a?.b
-
-
if (↓elem > elem) {}
-
-
XCTAssertTrue(↓s3 > s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView > tab.webView
-
-
↓1    + 1 >   1     +    1
-
-
 ↓f(  i :   2) >   f (i: 
- 2 )
-
-
↓1 >= 1
-
-
↓foo >= foo
-
-
↓foo.aProperty >= foo.aProperty
-
-
↓self.aProperty >= self.aProperty
-
-
↓$0 >= $0
-
-
↓a?.b >= a?.b
-
-
if (↓elem >= elem) {}
-
-
XCTAssertTrue(↓s3 >= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView >= tab.webView
-
-
↓1    + 1 >=   1     +    1
-
-
 ↓f(  i :   2) >=   f (i: 
- 2 )
-
-
↓1 < 1
-
-
↓foo < foo
-
-
↓foo.aProperty < foo.aProperty
-
-
↓self.aProperty < self.aProperty
-
-
↓$0 < $0
-
-
↓a?.b < a?.b
-
-
if (↓elem < elem) {}
-
-
XCTAssertTrue(↓s3 < s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView < tab.webView
-
-
↓1    + 1 <   1     +    1
-
-
 ↓f(  i :   2) <   f (i: 
- 2 )
-
-
↓1 <= 1
-
-
↓foo <= foo
-
-
↓foo.aProperty <= foo.aProperty
-
-
↓self.aProperty <= self.aProperty
-
-
↓$0 <= $0
-
-
↓a?.b <= a?.b
-
-
if (↓elem <= elem) {}
-
-
XCTAssertTrue(↓s3 <= s3)
-
-
if let tab = tabManager.selectedTab, ↓tab.webView <= tab.webView
-
-
↓1    + 1 <=   1     +    1
-
-
 ↓f(  i :   2) <=   f (i: 
- 2 )
-
-
    return ↓lhs.foo == lhs.foo &&
-           lhs.bar == rhs.bar
-
-
    return lhs.foo == rhs.foo &&
-           ↓lhs.bar == lhs.bar
-
- -
-
- - -
-
- - - diff --git a/identifier_name.html b/identifier_name.html deleted file mode 100644 index ded1921a9..000000000 --- a/identifier_name.html +++ /dev/null @@ -1,622 +0,0 @@ - - - - identifier_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Identifier Name

- -

Identifier names should only contain alphanumeric characters and start with a lowercase character or should only contain capital letters. In an exception to the above, variable names may start with a capital letter when they are declared as static. Variable names should not be too long or too short.

- -
    -
  • Identifier: identifier_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -min_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -3 -
    -error - -2 -
    -
    -max_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -40 -
    -error - -60 -
    -
    -excluded - -[“^id$”] -
    -allowed_symbols - -[] -
    -unallowed_symbols_severity - -error -
    -validates_start_with_lowercase - -error -
    -additional_operators - -[“!”, “%”, “&”, “*”, “+”, “-”, “.”, “/”, “<”, “=”, “>”, “?”, “^”, “|”, “~”] -
  • -
-

Non Triggering Examples

-
let myLet = 0
-
-
var myVar = 0
-
-
private let _myLet = 0
-
-
private func _myFunc() {}
-
-
fileprivate let _myLet = 0
-
-
fileprivate func _myFunc() {}
-
-
fileprivate func _myFunc() {}
-
-
class Abc { static let MyLet = 0 }
-
-
let URL: NSURL? = nil
-
-
let XMLString: String? = nil
-
-
override var i = 0
-
-
enum Foo { case myEnum }
-
-
func isOperator(name: String) -> Bool
-
-
func typeForKind(_ kind: SwiftDeclarationKind) -> String
-
-
func == (lhs: SyntaxToken, rhs: SyntaxToken) -> Bool
-
-
override func IsOperator(name: String) -> Bool
-
-
enum Foo { case `private` }
-
-
enum Foo { case value(String) }
-
-
f { $abc in }
-
-
class Foo {
-   static let Bar = 0
-}
-
-
class Foo {
-   static var Bar = 0
-}
-
-
//
-// additional_operators: ["!", "%", "&", "*", "+", "-", ".", "/", "<", "=", ">", "?", "^", "|", "~", "√"]
-//
-
-func √ (arg: Double) -> Double { arg }
-
-
-

Triggering Examples

-
class C { static let ↓_myLet = 0 }
-
-
class C { class let ↓MyLet = 0 }
-
-
class C { static func ↓MyFunc() {} }
-
-
class C { class func ↓MyFunc() {} }
-
-
private let ↓myLet_ = 0
-
-
let ↓myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
var ↓myExtremelyVeryVeryVeryVeryVeryVeryLongVar = 0
-
-
private let ↓_myExtremelyVeryVeryVeryVeryVeryVeryLongLet = 0
-
-
let ↓i = 0
-
-
var ↓aa = 0
-
-
private let ↓_i = 0
-
-
if let ↓_x {}
-
-
guard var ↓x = x else {}
-
-
func myFunc(
-    _ ↓s: String,
-    i ↓j: Int,
-    _ goodName: Double,
-    name ↓n: String,
-    ↓x: Int,
-    abc: Double,
-    _: Double,
-    last _: Double
-) {}
-
-
let (↓a, abc) = (1, 1)
-
-
if let ↓i {}
-
-
for ↓i in [] {}
-
-
f { ↓x in }
-
-
f { ↓$x in }
-
-
f { (x abc: Int, _ ↓x: Int) in }
-
-
enum E {
-    case ↓c
-    case case1(Int)
-    case case2(↓a: Int)
-    case case3(_ ↓a: Int)
-}
-
-
class C {
-    var ↓x: Int {
-        get { 1 }
-        set(↓y) { x = y }
-    }
-}
-
-
func ↓√ (arg: Double) -> Double { arg }
-
- -
-
- - -
-
- - - diff --git a/img/carat.png b/img/carat.png deleted file mode 100755 index 29d2f7fd4955fca6bc6fb740e0373a2c358c398e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRo!3HEV4DF?Wlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqAi{-jv*Ddl5#RKJQ5NTUZgiPI4RUKGIKU?u8L&ndhX1t za+0CMVUnT(Gnb}ei=c~x==tMH^F1_tBocXwcoSWoO-SZY-o>!8%^=Bms)(~h;m_U( zXNixk28L}0LS5-jKyq@#2gyS|J&f#pGCLkTc<@2s1dqeyqJ*Rc0tSIETAgmODY;(s z2y|Mcp&2}7rpBprBBB~1qM1`N+}4SoxYVPqsXi&l`rxZp{(w0iSy$Nv5*Vy!RapG^ S^0y4=eg;ohKbLh*2~7a!Pg}VF diff --git a/img/dash.png b/img/dash.png deleted file mode 100755 index 6f694c7a012b417908da3687a0a39aa182e91c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1338 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 diff --git a/implicit_getter.html b/implicit_getter.html deleted file mode 100644 index 6dbc95c8f..000000000 --- a/implicit_getter.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - implicit_getter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Getter

- -

Computed read-only properties and subscripts should avoid using the get keyword.

- -
    -
  • Identifier: implicit_getter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-    var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        return 20
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        get { _foo }
-        _modify { yield &_foo }
-    }
-}
-
-
class Foo {
-    var _foo: Int
-    var foo: Int {
-        @storageRestrictions(initializes: _foo)
-        init { _foo = newValue }
-        get { _foo }
-    }
-}
-
-
class Foo {
-    var foo: Int
-}
-
-
class Foo {
-    var foo: Int {
-        return getValueFromDisk()
-    }
-}
-
-
class Foo {
-    var foo: String {
-        return "get"
-    }
-}
-
-
protocol Foo {
-    var foo: Int { get }
-}
-
-
protocol Foo {
-    var foo: Int { get set }
-}
-
-
class Foo {
-    var foo: Int {
-        struct Bar {
-            var bar: Int {
-                get { return 1 }
-                set { _ = newValue }
-            }
-        }
-
-        return Bar().bar
-    }
-}
-
-
var _objCTaggedPointerBits: UInt {
-    @inline(__always) get { return 0 }
-}
-
-
var next: Int? {
-    mutating get {
-        defer { self.count += 1 }
-        return self.count
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set { self._bar = newValue }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        get { _bar }
-        set(newValue) { self._bar = newValue }
-    }
-}
-
-
extension Float {
-    var clamped: Float {
-        set {
-            self = min(1, max(0, newValue))
-        }
-        get {
-            min(1, max(0, self))
-        }
-    }
-}
-
-
extension Reactive where Base: UITapGestureRecognizer {
-    var tapped: CocoaAction<Base>? {
-        get {
-            return associatedAction.withValue { $0.flatMap { $0.action } }
-        }
-        nonmutating set {
-            setAction(newValue)
-        }
-    }
-}
-
-
extension Test {
-    var foo: Bool {
-        get {
-            bar?.boolValue ?? true // Comment mentioning word set which triggers violation
-        }
-        set {
-            bar = NSNumber(value: newValue as Bool)
-        }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        return 20
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        get { return 3 }
-        set { _abc = newValue }
-    }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get }
-}
-
-
protocol Foo {
-    subscript(i: Int) -> Int { get set }
-}
-
-
class DatabaseEntity {
-    var isSynced: Bool {
-        get async {
-            await database.isEntitySynced(self)
-        }
-    }
-}
-
-
struct Test {
-    subscript(value: Int) -> Int {
-        get throws {
-            if value == 0 {
-                throw NSError()
-            } else {
-                return value
-            }
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
class Foo {
-    var foo: Int {
-        ↓get{ return 20 }
-    }
-}
-
-
class Foo {
-    static var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
var foo: Int {
-    ↓get { return 20 }
-}
-
-
class Foo {
-    @objc func bar() {}
-    var foo: Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
-
extension Foo {
-    var bar: Bool {
-        ↓get { _bar }
-    }
-}
-
-
class Foo {
-    subscript(i: Int) -> Int {
-        ↓get {
-            return 20
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/implicit_return.html b/implicit_return.html deleted file mode 100644 index d4e215afe..000000000 --- a/implicit_return.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - implicit_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicit Return

- -

Prefer implicit returns in closures, functions and getters

- -
    -
  • Identifier: implicit_return
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -included - -[closure, function, getter, initializer, subscript] -
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
foo.map({ $0 + 1 })
-
-
foo.map { value in value + 1 }
-
-
[1, 2].first(where: {
-    true
-})
-
-
func foo() -> Int {
-    0
-}
-
-
class Foo {
-    func foo() -> Int { 0 }
-}
-
-
func fetch() -> Data? {
-    do {
-        return try loadData()
-    } catch {
-        return nil
-    }
-}
-
-
func f() -> Int {
-    let i = 4
-    return i
-}
-
-
func f() -> Int {
-    return 3
-    let i = 2
-}
-
-
func f() -> Int {
-    return g()
-    func g() -> Int { 4 }
-}
-
-
var foo: Bool { true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        0
-    }
-}
-
-
class C {
-    let i: Int
-    init(i: Int) {
-        if i < 3 {
-            self.i = 1
-            return
-        }
-        self.i = 2
-    }
-}
-
-
class C {
-    init?() {
-        let i = 1
-        return nil
-    }
-}
-
-
class C {
-    subscript(i: Int) -> Int {
-        let res = i
-        return res
-    }
-}
-
-

Triggering Examples

-
foo.map { value in
-    ↓return value + 1
-}
-
-
foo.map {
-    ↓return $0 + 1
-}
-
-
foo.map({ ↓return $0 + 1})
-
-
[1, 2].first(where: {
-    ↓return true
-})
-
-
func foo() -> Int {
-    ↓return 0
-}
-
-
class Foo {
-    func foo() -> Int { ↓return 0 }
-}
-
-
func f() { ↓return }
-
-
var foo: Bool { ↓return true }
-
-
class Foo {
-    var bar: Int {
-        get {
-            ↓return 0
-        }
-    }
-}
-
-
class Foo {
-    static var bar: Int {
-        ↓return 0
-    }
-}
-
-
class C {
-    init() {
-        ↓return
-    }
-}
-
-
class C {
-    init?() {
-        ↓return nil
-    }
-}
-
-
class C {
-    subscript(i: Int) -> Int {
-        ↓return i
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/implicitly_unwrapped_optional.html b/implicitly_unwrapped_optional.html deleted file mode 100644 index 3654c40a1..000000000 --- a/implicitly_unwrapped_optional.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - implicitly_unwrapped_optional Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Implicitly Unwrapped Optional

- -

Implicitly unwrapped optionals should be avoided when possible

- -
    -
  • Identifier: implicitly_unwrapped_optional
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -mode - -all_except_iboutlets -
  • -
-

Non Triggering Examples

-
@IBOutlet private var label: UILabel!
-
-
@IBOutlet var label: UILabel!
-
-
@IBOutlet var label: [UILabel!]
-
-
if !boolean {}
-
-
let int: Int? = 42
-
-
let int: Int? = nil
-
-

Triggering Examples

-
let label: ↓UILabel!
-
-
let IBOutlet: ↓UILabel!
-
-
let labels: [↓UILabel!]
-
-
var ints: [↓Int!] = [42, nil, 42]
-
-
let label: ↓IBOutlet!
-
-
let int: ↓Int! = 42
-
-
let int: ↓Int! = nil
-
-
var int: ↓Int! = 42
-
-
let collection: AnyCollection<↓Int!>
-
-
func foo(int: ↓Int!) {}
-
-
class MyClass {
-    weak var bar: ↓SomeObject!
-}
-
- -
-
- - -
-
- - - diff --git a/inclusive_language.html b/inclusive_language.html deleted file mode 100644 index b72742d0f..000000000 --- a/inclusive_language.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - inclusive_language Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inclusive Language

- -

Identifiers should use inclusive language that avoids discrimination against groups of people based on race, gender, or socioeconomic status.

- -
    -
  • Identifier: inclusive_language
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = "abc"
-
-
enum AllowList {
-    case foo, bar
-}
-
-
func updateAllowList(add: String) {}
-
-
enum WalletItemType {
-    case visa
-    case mastercard
-}
-
-
func chargeMasterCard(_ card: Card) {}
-
-

Triggering Examples

-
let ↓slave = "abc"
-
-
enum ↓BlackList {
-    case foo, bar
-}
-
-
func ↓updateWhiteList(add: String) {}
-
-
enum ListType {
-    case ↓whitelist
-    case ↓blacklist
-}
-
-
init(↓master: String, ↓slave: String) {}
-
-
final class FooBar {
-    func register<↓Master, ↓Slave>(one: Master, two: Slave) {}
-}
-
- -
-
- - -
-
- - - diff --git a/indentation_width.html b/indentation_width.html deleted file mode 100644 index 0d99de1bd..000000000 --- a/indentation_width.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - indentation_width Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Indentation Width

- -

Indent code using either one tab or the configured amount of spaces, unindent to match previous indentations. Don’t indent the first line.

- -
    -
  • Identifier: indentation_width
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -indentation_width - -4 -
    -include_comments - -true -
    -include_compiler_directives - -true -
    -include_multiline_strings - -true -
  • -
-

Non Triggering Examples

-
firstLine
-secondLine
-
-
firstLine
-    secondLine
-
-
firstLine
-    secondLine
-        thirdLine
-
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-    //test
-        fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-fourthLine
-
-

Triggering Examples

-
↓    firstLine
-
-
firstLine
-        secondLine
-
-
firstLine
-    secondLine
-
-↓         fourthLine
-
-
firstLine
-    secondLine
-        thirdLine
-↓ fourthLine
-
- -
-
- - -
-
- - - diff --git a/index.html b/index.html deleted file mode 100644 index bf9c73589..000000000 --- a/index.html +++ /dev/null @@ -1,1345 +0,0 @@ - - - - SwiftLintCore Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

SwiftLint

- -

A tool to enforce Swift style and conventions, loosely based on the now -archived GitHub Swift Style Guide. -SwiftLint enforces the style guide rules that are generally accepted by the -Swift community. These rules are well described in popular style guides like -Kodeco’s Swift Style Guide.

- -

SwiftLint hooks into Clang and -SourceKit to use the -AST representation -of your source files for more accurate results.

- -

Azure Build Status -Buildkite Build Status

- -

- -

This project adheres to the -Contributor Covenant Code of Conduct. -By participating, you are expected to uphold this code. Please report -unacceptable behavior to info@realm.io.

- -
-

Switch Language: -中文 -한국어

-
-

Video Introduction

- -

To get a high-level overview of SwiftLint, we encourage you to watch this -presentation recorded January 9th, 2017 by JP Simard (transcript provided):

- -

Presentation

-

Installation

-

Swift Package Manager

- -

SwiftLint can be used as a command plugin -or a build tool plugin.

- -

Add

-
.package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "<version>")
-
- -

to your Package.swift file to consume the latest release of SwiftLint -automatically or pin the dependency to a specific version:

-
.package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", exact: "<version>")
-
- -

Therein, replace <version> with the desired minimum or exact version.

- -
-

[!NOTE] -Consuming the plugins directly from the SwiftLint repository comes -with several drawbacks. To avoid them and reduce the overhead imposed, it’s -highly recommended to consume the plugins from the dedicated -SwiftLintPlugins repository, -even though plugins from the SwiftLint repository are also absolutely -functional. If the plugins from SwiftLint are preferred, just use the URL -https://github.com/realm/SwiftLint in the package declarations above.

- -

However, SwiftLintPlugins -facilitates plugin adoption massively. It lists some of the reasons that -drive the plugins as provided by SwiftLint itself very troublesome. Since -the plugin code and the releases are kept in sync, there is no difference -in functionality between the two, but you spare yourself a lot of time and -trouble using the dedicated plugins repository.

- -

This document assumes you’re relying on SwiftLintPlugins.

-
-

Xcode Package Dependency

- -

Use the following link to add SwiftLint as a Package Dependency to an Xcode -project:

-
https://github.com/SimplyDanny/SwiftLintPlugins
-
-

Homebrew

-
brew install swiftlint
-
-

CocoaPods

- -

Add the following to your Podfile:

-
pod 'SwiftLint'
-
- -

This will download the SwiftLint binaries and dependencies in Pods/ during -your next pod install execution and will allow you to invoke it via -${PODS_ROOT}/SwiftLint/swiftlint in your Script Build Phases.

- -

Installing via Cocoapods also enables pinning to a specific version of -SwiftLint rather than simply the latest (which is the case with -Homebrew).

- -

Note that this will add the SwiftLint binaries, its dependencies’ binaries, and -the Swift binary library distribution to the Pods/ directory, so checking in -this directory to SCM such as Git is discouraged.

-

Mint

-
mint install realm/SwiftLint
-
-

Bazel

- -

Put this in your MODULE.bazel:

-
bazel_dep(name = "swiftlint", version = "0.52.4", repo_name = "SwiftLint")
-
- -

Or put this in your WORKSPACE:

- -
- -WORKSPACE - -“`bzl -load(”@bazel_tools//tools/build_defs/repo:http.bzl", “http_archive”) - -http_archive( - name = “build_bazel_rules_apple”, - sha256 = “390841dd5f8a85fc25776684f4793d56e21b098dfd7243cd145b9831e6ef8be6”, - url = “https://github.com/bazelbuild/rules_apple/releases/download/2.4.1/rules_apple.2.4.1.tar.gz”, -) - -load( - “@build_bazel_rules_apple//apple:repositories.bzl”, - “apple_rules_dependencies”, -) - -apple_rules_dependencies() - -load( - “@build_bazel_rules_swift//swift:repositories.bzl”, - “swift_rules_dependencies”, -) - -swift_rules_dependencies() - -load( - “@build_bazel_rules_swift//swift:extras.bzl”, - “swift_rules_extra_dependencies”, -) - -swift_rules_extra_dependencies() - -http_archive( - name = “SwiftLint”, - sha256 = “c6ea58b9c72082cdc1ada4a2d48273ecc355896ed72204cedcc586b6ccb8aca6”, - url = “https://github.com/realm/SwiftLint/releases/download/0.52.4/bazel.tar.gz”, -) - -load(“@SwiftLint//bazel:repos.bzl”, “swiftlint_repos”) - -swiftlint_repos() - -load(“@SwiftLint//bazel:deps.bzl”, “swiftlint_deps”) - -swiftlint_deps() -“` - -
- -

Then you can run SwiftLint in the current directory with this command:

-
bazel run -c opt @SwiftLint//:swiftlint
-
-

Pre-Built Package

- -

Download SwiftLint.pkg from the -latest GitHub release and -run it.

-

From Source

- -

Make sure the build tool Bazel and a -recent Swift toolchain are -installed and all tools are discoverable in your PATH.

- -

To build SwiftLint, clone this repository and run make install.

-

Setup

- -
-

[!IMPORTANT] -While it may seem intuitive to run SwiftLint before compiling Swift source -files to exit a build early when there are lint violations, it is important -to understand that SwiftLint is designed to analyze valid source code that -is compilable. Non-compiling code can very easily lead to unexpected and -confusing results, especially when executing with --fix/--autocorrect -command line arguments.

-
-

Build Tool Plugins

- -

SwiftLint can be used as a build tool plugin for both -Swift Package projects -and Xcode projects.

- -

The build tool plugin determines the SwiftLint working directory by locating -the topmost config file within the package/project directory. If a config file -is not found therein, the package/project directory is used as the working -directory.

- -

The plugin throws an error when it is unable to resolve the SwiftLint working -directory. For example, this will occur in Xcode projects where the target’s -Swift files are not located within the project directory.

- -

To maximize compatibility with the plugin, avoid project structures that require -the use of the --config option.

-

Swift Package Projects

- -
-

[!NOTE] -Requires installing via Swift Package Manager.

-
- -

Build tool plugins run when building each target. When a project has multiple -targets, the plugin must be added to the desired targets individually.

- -

To do this, add the plugin to the target(s) to be linted as follows:

-
.target(
-    ...
-    plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")]
-),
-
-

Swift Package Command Plugin

- -
-

[!NOTE] -Requires installing via Swift Package Manager.

-
- -

The command plugin enables running SwiftLint from the command line as follows:

-
swift package plugin swiftlint
-
-

Xcode Projects

- -
-

[!NOTE] -Requires installing via Xcode Package Dependency.

-
- -

Build tool plugins run as a build phase of each target. When a project has -multiple targets, the plugin must be added to the desired targets individually.

- -

To do this, add the SwiftLintBuildToolPlugin to the Run Build Tool Plug-ins -phase of the Build Phases for the target(s) to be linted.

- -
-

[!TIP] -When using the plugin for the first time, be sure to trust and enable -it when prompted. If a macros build warning exists, select it to trust -and enable the macros as well.

-
- -

For unattended use (e.g. on CI), package plugin and macro -validations can be disabled with either of the following:

- -
    -
  • Using xcodebuild options:
  • -
-
  -skipPackagePluginValidation
-  -skipMacroValidation
-
- -
    -
  • Setting Xcode defaults:
  • -
-
  defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES
-  defaults write com.apple.dt.Xcode IDESkipMacroFingerprintValidation -bool YES
-
- -
-

[!IMPORTANT] -The unattended use options bypass Xcode’s validation dialogs -and implicitly trust all plugins and macros, which has security implications.

-
-

Unexpected Xcode Project Structures

- -

Project structures where SwiftLint’s configuration file is located -outside of the package/project directory are not directly supported -by the build tool plugin. This is because it isn’t possible to pass -arguments to build tool plugins (e.g., passing the config file path).

- -

If your project structure doesn’t work directly with the build tool -plugin, please consider one of the following options:

- -
    -
  • To use a config file located outside the package/project directory, a config -file may be added to that directory specifying a parent config path to the -other config file, e.g., parent_config: path/to/.swiftlint.yml.
  • -
  • You can also consider the use of a -Run Script Build Phase in place of the build -tool plugin.
  • -
-

Xcode Run Script Build Phase

- -
-

[!NOTE] -Based upon the installation method used, the shell command syntax in the -Run Script Build Phase may be different or additional configuration could -be required. Refer to the installation instructions for -more information.

-
- -

If the build tool plugin does not work for your project setup or when -additional custom setup is required, SwiftLint can be added as a Run Script -Build Phase. This is useful when a project setup relies on the --config -SwiftLint option; or to lint all targets together in a single swiftlint -invocation. File inclusions and exclusions can be configured in the -.swiftlint.yml configuration.

- -

To do this, add a custom script to a Run Script phase of the Build Phases -of the primary app target, after the Compile Sources phase. Use the -following script implementation:

-
if command -v swiftlint >/dev/null 2>&1
-then
-    swiftlint
-else
-    echo "warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions."
-fi
-
- -

If you’re using the SwiftLintPlugin in a Swift package, -you may refer to the swiftlint executable in the -following way:

-
SWIFT_PACKAGE_DIR="${BUILD_DIR%Build/*}SourcePackages/artifacts"
-SWIFTLINT_CMD=$(ls "$SWIFT_PACKAGE_DIR"/swiftlintplugins/SwiftLintBinary/SwiftLintBinary.artifactbundle/swiftlint-*/bin/swiftlint | head -n 1)
-
-if test -f "$SWIFTLINT_CMD" 2>&1
-then
-    "$SWIFTLINT_CMD"
-else
-    echo "warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions."
-fi
-
- -
-

[!NOTE] -The SWIFTLINT_CMD path uses the default Xcode configuration and has been -tested on Xcode 15/16. In case of another configuration (e.g. a custom -Swift package path), please adapt the values accordingly.

- -

[!TIP] -Uncheck Based on dependency analysis to run swiftlint on all incremental -builds, suppressing the unspecified outputs warning.

-
-

Consideration for Xcode 15.0

- -

Xcode 15 made a significant change by setting the default value of the -ENABLE_USER_SCRIPT_SANDBOXING build setting from NO to YES. -As a result, SwiftLint encounters an error related to missing file permissions, -which typically manifests as -error: Sandbox: swiftlint(19427) deny(1) file-read-data.

- -

To resolve this issue, it is necessary to manually set the -ENABLE_USER_SCRIPT_SANDBOXING setting to NO for the specific target that -SwiftLint is being configured for.

-

Consideration for Apple Silicon

- -

If you installed SwiftLint via Homebrew on Apple Silicon, you might experience -this warning:

-
warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint
-
- -

That is because Homebrew on Apple Silicon installs the binaries into the -/opt/homebrew/bin folder by default. To instruct Xcode where to find -SwiftLint, you can either add /opt/homebrew/bin to the PATH environment -variable in your build phase:

-
if [[ "$(uname -m)" == arm64 ]]
-then
-    export PATH="/opt/homebrew/bin:$PATH"
-fi
-
-if command -v swiftlint >/dev/null 2>&1
-then
-    swiftlint
-else
-    echo "warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions."
-fi
-
- -

or you can create a symbolic link in /usr/local/bin pointing to the actual -binary:

-
ln -s /opt/homebrew/bin/swiftlint /usr/local/bin/swiftlint
-
-

Additional Considerations

- -

If you wish to fix violations as well, your script could run -swiftlint --fix && swiftlint instead of just swiftlint. This will mean -that all correctable violations are fixed while ensuring warnings show up in -your project for remaining violations.

- -

If you’ve installed SwiftLint via CocoaPods the script should look like this:

-
"${PODS_ROOT}/SwiftLint/swiftlint"
-
-

Visual Studio Code

- -

To integrate SwiftLint with Visual Studio Code, install the -vscode-swiftlint -extension from the marketplace.

-

Fastlane

- -

You can use the official -swiftlint fastlane action -to run SwiftLint as part of your fastlane process.

-
swiftlint(
-    mode: :lint,                            # SwiftLint mode: :lint (default) or :autocorrect
-    executable: "Pods/SwiftLint/swiftlint", # The SwiftLint binary path (optional). Important if you've installed it via CocoaPods
-    path: "/path/to/lint",                  # Specify path to lint (optional)
-    output_file: "swiftlint.result.json",   # The path of the output file (optional)
-    reporter: "json",                       # The custom reporter to use (optional)
-    config_file: ".swiftlint-ci.yml",       # The path of the configuration file (optional)
-    files: [                                # List of files to process (optional)
-        "AppDelegate.swift",
-        "path/to/project/Model.swift"
-    ],
-    ignore_exit_status: true,               # Allow fastlane to continue even if SwiftLint returns a non-zero exit status (Default: false)
-    quiet: true,                            # Don't print status logs like 'Linting ' & 'Done linting' (Default: false)
-    strict: true                            # Fail on warnings? (Default: false)
-)
-
-

Docker

- -

SwiftLint is also available as a Docker image using -Ubuntu. So just the first time you need to pull the docker image using the -next command:

-
docker pull ghcr.io/realm/swiftlint:latest
-
- -

Then following times, you just run swiftlint inside of the docker like:

-
docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-
- -

This will execute swiftlint in the folder where you are right now (pwd), -showing an output like:

-
$ docker run -it -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest
-Linting Swift files in current working directory
-Linting 'RuleDocumentation.swift' (1/490)
-...
-Linting 'YamlSwiftLintTests.swift' (490/490)
-Done linting! Found 0 violations, 0 serious in 490 files.
-
- -

Here you have more documentation about the usage of -Docker Images.

-

Command Line Usage

-
$ swiftlint help
-OVERVIEW: A tool to enforce Swift style and conventions.
-
-USAGE: swiftlint <subcommand>
-
-OPTIONS:
-  --version               Show the version.
-  -h, --help              Show help information.
-
-SUBCOMMANDS:
-  analyze                 Run analysis rules
-  docs                    Open SwiftLint documentation website in the default web browser
-  generate-docs           Generates markdown documentation for selected group of rules
-  lint (default)          Print lint warnings and errors
-  baseline                Operations on existing baselines
-  reporters               Display the list of reporters and their identifiers
-  rules                   Display the list of rules and their identifiers
-  version                 Display the current version of SwiftLint
-
-  See 'swiftlint help <subcommand>' for detailed help.
-
- -

Run swiftlint in the directory containing the Swift files to lint. Directories -will be searched recursively.

- -

To specify a list of files when using lint or analyze -(like the list of files modified by Xcode specified by the -ExtraBuildPhase Xcode -plugin, or modified files in the working tree based on git ls-files -m), you -can do so by passing the option --use-script-input-files and setting the -following instance variables: SCRIPT_INPUT_FILE_COUNT -and SCRIPT_INPUT_FILE_0, SCRIPT_INPUT_FILE_1, …, -SCRIPT_INPUT_FILE_{SCRIPT_INPUT_FILE_COUNT - 1}. -Similarly, files can be read from file lists by passing -the option --use-script-input-file-lists and setting the -following instance variables: SCRIPT_INPUT_FILE_LIST_COUNT -and SCRIPT_INPUT_FILE_LIST_0, SCRIPT_INPUT_FILE_LIST_1, …, -SCRIPT_INPUT_FILE_LIST_{SCRIPT_INPUT_FILE_LIST_COUNT - 1}.

- -

These are same environment variables set for input files to -custom Xcode script phases.

-

Working With Multiple Swift Versions

- -

SwiftLint hooks into SourceKit so it continues working even as Swift evolves!

- -

This also keeps SwiftLint lean, as it doesn’t need to ship with a full Swift -compiler, it just communicates with the official one you already have installed -on your machine.

- -

You should always run SwiftLint with the same toolchain you use to compile your -code.

- -

You may want to override SwiftLint’s default Swift toolchain if you have -multiple toolchains or Xcodes installed.

- -

Here’s the order in which SwiftLint determines which Swift toolchain to use:

- -
    -
  • $XCODE_DEFAULT_TOOLCHAIN_OVERRIDE
  • -
  • $TOOLCHAIN_DIR or $TOOLCHAINS
  • -
  • xcrun -find swift
  • -
  • /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
  • ~/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain
  • -
- -

sourcekitd.framework is expected to be found in the usr/lib/ subdirectory of -the value passed in the paths above.

- -

You may also set the TOOLCHAINS environment variable to the reverse-DNS -notation that identifies a Swift toolchain version:

-
TOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 swiftlint --fix
-
- -

On Linux, SourceKit is expected to be located in -/usr/lib/libsourcekitdInProc.so or specified by the LINUX_SOURCEKIT_LIB_PATH -environment variable.

-

Git pre-commit Hook

- -

SwiftLint can be run as a pre-commit hook. -Once installed, add this to the -.pre-commit-config.yaml in the root of your repository:

-
repos:
-  - repo: https://github.com/realm/SwiftLint
-    rev: 0.50.3
-    hooks:
-      - id: swiftlint
-
- -

Adjust rev to the SwiftLint version of your choice. pre-commit autoupdate -can be used to update to the current version.

- -

SwiftLint can be configured using entry to apply fixes and fail on errors:

-
-   repo: https://github.com/realm/SwiftLint
-    rev: 0.50.3
-    hooks:
-    -   id: swiftlint
-        entry: swiftlint --fix --strict
-
-

Rules

- -

Over 200 rules are included in SwiftLint and the Swift community (that’s you!) -continues to contribute more over time. -Pull requests -are encouraged.

- -

You can find an updated list of rules and more information about them -here.

- -

You can also check the -Source/SwiftLintBuiltInRules/Rules -directory to see their implementation.

-

Opt-In Rules

- -

opt_in_rules are disabled by default (i.e., you have to explicitly enable them -in your configuration file).

- -

Guidelines on when to mark a rule as opt-in:

- -
    -
  • A rule that can have many false positives (e.g. empty_count)
  • -
  • A rule that is too slow
  • -
  • A rule that is not general consensus or is only useful in some cases -(e.g. force_unwrapping)
  • -
-

Disable rules in code

- -

Rules can be disabled with a comment inside a source file with the following -format:

- -

// swiftlint:disable <rule1> [<rule2> <rule3>...]

- -

The rules will be disabled until the end of the file or until the linter sees a -matching enable comment:

- -

// swiftlint:enable <rule1> [<rule2> <rule3>...]

- -

For example:

-
// swiftlint:disable colon
-let noWarning :String = "" // No warning about colons immediately after variable names!
-// swiftlint:enable colon
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-
- -

Including the all keyword will disable all rules until the linter sees a -matching enable comment:

- -

// swiftlint:disable all -// swiftlint:enable all

- -

For example:

-
// swiftlint:disable all
-let noWarning :String = "" // No warning about colons immediately after variable names!
-let i = "" // Also no warning about short identifier names
-// swiftlint:enable all
-let hasWarning :String = "" // Warning generated about colons immediately after variable names
-let y = "" // Warning generated about short identifier names
-
- -

It’s also possible to modify a disable or enable command by appending -:previous, :this or :next for only applying the command to the previous, -this (current) or next line respectively.

- -

For example:

-
// swiftlint:disable:next force_cast
-let noWarning = NSNumber() as! Int
-let hasWarning = NSNumber() as! Int
-let noWarning2 = NSNumber() as! Int // swiftlint:disable:this force_cast
-let noWarning3 = NSNumber() as! Int
-// swiftlint:disable:previous force_cast
-
- -

Run swiftlint rules to print a list of all available rules and their -identifiers.

-

Configuration

- -

Configure SwiftLint by adding a .swiftlint.yml file from the directory you’ll -run SwiftLint from. The following parameters can be configured:

- -

Rule inclusion:

- -
    -
  • disabled_rules: Disable rules from the default enabled set.
  • -
  • opt_in_rules: Enable rules that are not part of the default set. The -special all identifier will enable all opt in linter rules, except the ones -listed in disabled_rules.
  • -
  • only_rules: Only the rules specified in this list will be enabled. -Cannot be specified alongside disabled_rules or opt_in_rules.
  • -
  • analyzer_rules: This is an entirely separate list of rules that are only -run by the analyze command. All analyzer rules are opt-in, so this is the -only configurable rule list, there are no equivalents for disabled_rules -and only_rules. The special all identifier can also be used here to enable -all analyzer rules, except the ones listed in disabled_rules.
  • -
-
# By default, SwiftLint uses a set of sensible default rules you can adjust:
-disabled_rules: # rule identifiers turned on by default to exclude from running
-  - colon
-  - comma
-  - control_statement
-opt_in_rules: # some rules are turned off by default, so you need to opt-in
-  - empty_count # find all the available rules by running: `swiftlint rules`
-
-# Alternatively, specify all rules explicitly by uncommenting this option:
-# only_rules: # delete `disabled_rules` & `opt_in_rules` if using this
-#   - empty_parameters
-#   - vertical_whitespace
-
-analyzer_rules: # rules run by `swiftlint analyze`
-  - explicit_self
-
-# Case-sensitive paths to include during linting. Directory paths supplied on the
-# command line will be ignored.
-included: 
-  - Sources
-excluded: # case-sensitive paths to ignore during linting. Takes precedence over `included`
-  - Carthage
-  - Pods
-  - Sources/ExcludedFolder
-  - Sources/ExcludedFile.swift
-  - Sources/*/ExcludedFile.swift # exclude files with a wildcard
-
-# If true, SwiftLint will not fail if no lintable files are found.
-allow_zero_lintable_files: false
-
-# If true, SwiftLint will treat all warnings as errors.
-strict: false
-
-# If true, SwiftLint will treat all errors as warnings.
-lenient: false
-
-# The path to a baseline file, which will be used to filter out detected violations.
-baseline: Baseline.json
-
-# The path to save detected violations to as a new baseline.
-write_baseline: Baseline.json
-
-# If true, SwiftLint will check for updates after linting or analyzing.
-check_for_updates: true
-
-# configurable rules can be customized from this configuration file
-# binary rules can set their severity level
-force_cast: warning # implicitly
-force_try:
-  severity: warning # explicitly
-# rules that have both warning and error levels, can set just the warning level
-# implicitly
-line_length: 110
-# they can set both implicitly with an array
-type_body_length:
-  - 300 # warning
-  - 400 # error
-# or they can set both explicitly
-file_length:
-  warning: 500
-  error: 1200
-# naming rules can set warnings/errors for min_length and max_length
-# additionally they can set excluded names
-type_name:
-  min_length: 4 # only warning
-  max_length: # warning and error
-    warning: 40
-    error: 50
-  excluded: iPhone # excluded via string
-  allowed_symbols: ["_"] # these are allowed in type names
-identifier_name:
-  min_length: # only min_length
-    error: 4 # only error
-  excluded: # excluded via string array
-    - id
-    - URL
-    - GlobalAPIKey
-reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, codeclimate, junit, html, emoji, sonarqube, markdown, github-actions-logging, summary)
-
- -

You can also use environment variables in your configuration file, -by using ${SOME_VARIABLE} in a string.

-

Defining Custom Rules

- -

In addition to the rules that the main SwiftLint project ships with, SwiftLint -can also run two types of custom rules that you can define yourself in your own -projects:

-

1. Swift Custom Rules

- -

These rules are written the same way as the Swift-based rules that ship with -SwiftLint so they’re fast, accurate, can leverage SwiftSyntax, can be unit -tested, and more.

- -

Using these requires building SwiftLint with Bazel as described in -this video or its associated code in -github.com/jpsim/swiftlint-bazel-example.

-

2. Regex Custom Rules

- -

You can define custom regex-based rules in your configuration file using the -following syntax:

-
custom_rules:
-  pirates_beat_ninjas: # rule identifier
-    included:
-      - ".*\\.swift" # regex that defines paths to include during linting. optional.
-    excluded:
-      - ".*Test\\.swift" # regex that defines paths to exclude during linting. optional
-    name: "Pirates Beat Ninjas" # rule name. optional.
-    regex: "([nN]inja)" # matching pattern
-    capture_group: 0 # number of regex capture group to highlight the rule violation at. optional.
-    match_kinds: # SyntaxKinds to match. optional.
-      - comment
-      - identifier
-    message: "Pirates are better than ninjas." # violation message. optional.
-    severity: error # violation severity. optional.
-  no_hiding_in_strings:
-    regex: "([nN]inja)"
-    match_kinds: string
-
- -

This is what the output would look like:

- -

- -

It is important to note that the regular expression pattern is used with the -flags s and m enabled, that is . -matches newlines -and ^/$ -match the start and end of lines, -respectively. If you do not want to have . match newlines, for example, the -regex can be prepended by (?-s).

- -

You can filter the matches by providing one or more match_kinds, which will -reject matches that include syntax kinds that are not present in this list. Here -are all the possible syntax kinds:

- -
    -
  • argument
  • -
  • attribute.builtin
  • -
  • attribute.id
  • -
  • buildconfig.id
  • -
  • buildconfig.keyword
  • -
  • comment
  • -
  • comment.mark
  • -
  • comment.url
  • -
  • doccomment
  • -
  • doccomment.field
  • -
  • identifier
  • -
  • keyword
  • -
  • number
  • -
  • objectliteral
  • -
  • parameter
  • -
  • placeholder
  • -
  • string
  • -
  • string_interpolation_anchor
  • -
  • typeidentifier
  • -
- -

All syntax kinds used in a snippet of Swift code can be extracted asking -SourceKitten. For example, -sourcekitten syntax --text "struct S {}" delivers

- -
    -
  • source.lang.swift.syntaxtype.keyword for the struct keyword and
  • -
  • source.lang.swift.syntaxtype.identifier for its name S
  • -
- -

which match to keyword and identifier in the above list.

- -

If using custom rules in combination with only_rules, you must include the -literal string custom_rules in the only_rules list:

-
only_rules:
-  - custom_rules
-
-custom_rules:
-  no_hiding_in_strings:
-    regex: "([nN]inja)"
-    match_kinds: string
-
- -

Unlike Swift custom rules, you can use official SwiftLint builds -(e.g. from Homebrew) to run regex custom rules.

-

Auto-correct

- -

SwiftLint can automatically correct certain violations. Files on disk are -overwritten with a corrected version.

- -

Please make sure to have backups of these files before running -swiftlint --fix, otherwise important data may be lost.

- -

Standard linting is disabled while correcting because of the high likelihood of -violations (or their offsets) being incorrect after modifying a file while -applying corrections.

-

Analyze

- -

The swiftlint analyze command can lint Swift files using the -full type-checked AST. The compiler log path containing the clean swiftc build -command invocation (incremental builds will fail) must be passed to analyze -via the --compiler-log-path flag. -e.g. --compiler-log-path /path/to/xcodebuild.log

- -

This can be obtained by

- -
    -
  1. Cleaning DerivedData (incremental builds won’t work with analyze)
  2. -
  3. Running xcodebuild -workspace {WORKSPACE}.xcworkspace -scheme {SCHEME} > xcodebuild.log
  4. -
  5. Running swiftlint analyze --compiler-log-path xcodebuild.log
  6. -
- -

Analyzer rules tend to be considerably slower than lint rules.

-

Using Multiple Configuration Files

- -

SwiftLint offers a variety of ways to include multiple configuration files. -Multiple configuration files get merged into one single configuration that is -then applied just as a single configuration file would get applied.

- -

There are quite a lot of use cases where using multiple configuration files -could be helpful:

- -

For instance, one could use a team-wide shared SwiftLint configuration while -allowing overrides in each project via a child configuration file.

- -

Team-Wide Configuration:

-
disabled_rules:
-- force_cast
-
- -

Project-Specific Configuration:

-
opt_in_rules:
-- force_cast
-
-

Child/Parent Configs (Locally)

- -

You can specify a child_config and/or a parent_config reference within a -configuration file. These references should be local paths relative to the -folder of the configuration file they are specified in. This even works -recursively, as long as there are no cycles and no ambiguities.

- -

A child config is treated as a refinement and thus has a higher priority, -while a parent config is considered a base with lower priority in case of -conflicts.

- -

Here’s an example, assuming you have the following file structure:

-
ProjectRoot
-    |_ .swiftlint.yml
-    |_ .swiftlint_refinement.yml
-    |_ Base
-        |_ .swiftlint_base.yml
-
- -

To include both the refinement and the base file, your .swiftlint.yml should -look like this:

-
child_config: .swiftlint_refinement.yml
-parent_config: Base/.swiftlint_base.yml
-
- -

When merging parent and child configs, included and excluded configurations -are processed carefully to account for differences in the directory location -of the containing configuration files.

-

Child/Parent Configs (Remote)

- -

Just as you can provide local child_config/parent_config references, -instead of referencing local paths, you can just put urls that lead to -configuration files. In order for SwiftLint to detect these remote references, -they must start with http:// or https://.

- -

The referenced remote configuration files may even recursively reference other -remote configuration files, but aren’t allowed to include local references.

- -

Using a remote reference, your .swiftlint.yml could look like this:

-
parent_config: https://myteamserver.com/our-base-swiftlint-config.yml
-
- -

Every time you run SwiftLint and have an Internet connection, SwiftLint tries -to get a new version of every remote configuration that is referenced. If this -request times out, a cached version is used if available. If there is no cached -version available, SwiftLint fails – but no worries, a cached version should be -there once SwiftLint has run successfully at least once.

- -

If needed, the timeouts for the remote configuration fetching can be specified -manually via the configuration file(s) using the -remote_timeout/remote_timeout_if_cached specifiers. These values default -to 2 seconds or 1 second, respectively.

-

Command Line

- -

Instead of just providing one configuration file when running SwiftLint via the -command line, you can also pass a hierarchy, where the first configuration is -treated as a parent, while the last one is treated as the highest-priority -child.

- -

A simple example including just two configuration files looks like this:

- -

swiftlint --config .swiftlint.yml --config .swiftlint_child.yml

-

Nested Configurations

- -

In addition to a main configuration (the .swiftlint.yml file in the root -folder), you can put other configuration files named .swiftlint.yml into the -directory structure that then get merged as a child config, but only with an -effect for those files that are within the same directory as the config or in a -deeper directory where there isn’t another configuration file. In other words: -Nested configurations don’t work recursively – there’s a maximum number of one -nested configuration per file that may be applied in addition to the main -configuration.

- -

.swiftlint.yml files are only considered as a nested configuration if they -have not been used to build the main configuration already (e. g. by having -been referenced via something like child_config: Folder/.swiftlint.yml). -Also, parent_config/child_config specifications of nested configurations -are getting ignored because there’s no sense to that.

- -

If one (or more) SwiftLint file(s) are explicitly specified via the --config -parameter, that configuration will be treated as an override, no matter whether -there exist other .swiftlint.yml files somewhere within the directory. -So if you want to use nested configurations, you can’t use the --config -parameter.

-

License

- -

MIT licensed.

-

About

- -

- -

SwiftLint is maintained and funded by Realm Inc. The names and logos for -Realm are trademarks of Realm Inc.

- -

We :heart: open source software! -See our other open source projects, -read our blog, or say hi on twitter -(@realm).

- -

- -

Our thanks to MacStadium for providing a Mac Mini to run our performance -tests.

- -
-
- - -
-
- - - diff --git a/inert_defer.html b/inert_defer.html deleted file mode 100644 index da760b6b7..000000000 --- a/inert_defer.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - inert_defer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Inert Defer

- -

If defer is at the end of its parent scope, it will be executed right where it is anyway

- -
    -
  • Identifier: inert_defer
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func example3() {
-    defer { /* deferred code */ }
-
-    print("other code")
-}
-
-
func example4() {
-    if condition {
-        defer { /* deferred code */ }
-        print("other code")
-    }
-}
-
-

Triggering Examples

-
func example0() {
-    ↓defer { /* deferred code */ }
-}
-
-
func example1() {
-    ↓defer { /* deferred code */ }
-    // comment
-}
-
-
func example2() {
-    if condition {
-        ↓defer { /* deferred code */ }
-        // comment
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/invalid_swiftlint_command.html b/invalid_swiftlint_command.html deleted file mode 100644 index 067788ad4..000000000 --- a/invalid_swiftlint_command.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - invalid_swiftlint_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Invalid SwiftLint Command

- -

swiftlint command is invalid

- -
    -
  • Identifier: invalid_swiftlint_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
// swiftlint:disable unused_import
-
-
// swiftlint:enable unused_import
-
-
// swiftlint:disable:next unused_import
-
-
// swiftlint:disable:previous unused_import
-
-
// swiftlint:disable:this unused_import
-
-
//swiftlint:disable:this unused_import
-
-

Triggering Examples

-
// ↓swiftlint:
-
-
// ↓swiftlint: 
-
-
// ↓swiftlint::
-
-
// ↓swiftlint:: 
-
-
// ↓swiftlint:disable
-
-
// ↓swiftlint:dissable unused_import
-
-
// ↓swiftlint:enaaaable unused_import
-
-
// ↓swiftlint:disable:nxt unused_import
-
-
// ↓swiftlint:enable:prevus unused_import
-
-
// ↓swiftlint:enable:ths unused_import
-
-
// ↓swiftlint:enable
-
-
// ↓swiftlint:enable:
-
-
// ↓swiftlint:enable: 
-
-
// ↓swiftlint:disable: unused_import
-
-
// s↓swiftlint:disable unused_import
-
- -
-
- - -
-
- - - diff --git a/is_disjoint.html b/is_disjoint.html deleted file mode 100644 index 58fc9f08e..000000000 --- a/is_disjoint.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - is_disjoint Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Is Disjoint

- -

Prefer using Set.isDisjoint(with:) over Set.intersection(_:).isEmpty

- -
    -
  • Identifier: is_disjoint
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
_ = Set(syntaxKinds).isDisjoint(with: commentAndStringKindsSet)
-
-
let isObjc = !objcAttributes.isDisjoint(with: dictionary.enclosedSwiftAttributes)
-
-
_ = Set(syntaxKinds).intersection(commentAndStringKindsSet)
-
-
_ = !objcAttributes.intersection(dictionary.enclosedSwiftAttributes)
-
-

Triggering Examples

-
_ = Set(syntaxKinds).↓intersection(commentAndStringKindsSet).isEmpty
-
-
let isObjc = !objcAttributes.↓intersection(dictionary.enclosedSwiftAttributes).isEmpty
-
- -
-
- - -
-
- - - diff --git a/joined_default_parameter.html b/joined_default_parameter.html deleted file mode 100644 index bed42a3f8..000000000 --- a/joined_default_parameter.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - joined_default_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Joined Default Parameter

- -

Discouraged explicit usage of the default separator

- -
    -
  • Identifier: joined_default_parameter
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = bar.joined()
-
-
let foo = bar.joined(separator: ",")
-
-
let foo = bar.joined(separator: toto)
-
-

Triggering Examples

-
let foo = bar.joined(↓separator: "")
-
-
let foo = bar.filter(toto)
-             .joined(↓separator: ""),
-
-
func foo() -> String {
-  return ["1", "2"].joined(↓separator: "")
-}
-
- -
-
- - -
-
- - - diff --git a/js/jazzy.js b/js/jazzy.js deleted file mode 100755 index 198441660..000000000 --- a/js/jazzy.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -window.jazzy = {'docset': false} -if (typeof window.dash != 'undefined') { - document.documentElement.className += ' dash' - window.jazzy.docset = true -} -if (navigator.userAgent.match(/xcode/i)) { - document.documentElement.className += ' xcode' - window.jazzy.docset = true -} - -function toggleItem($link, $content) { - var animationDuration = 300; - $link.toggleClass('token-open'); - $content.slideToggle(animationDuration); -} - -function itemLinkToContent($link) { - return $link.parent().parent().next(); -} - -// On doc load + hash-change, open any targetted item -function openCurrentItemIfClosed() { - if (window.jazzy.docset) { - return; - } - var $link = $(`a[name="${location.hash.substring(1)}"]`).nextAll('.token'); - $content = itemLinkToContent($link); - if ($content.is(':hidden')) { - toggleItem($link, $content); - } -} - -$(openCurrentItemIfClosed); -$(window).on('hashchange', openCurrentItemIfClosed); - -// On item link ('token') click, toggle its discussion -$('.token').on('click', function(event) { - if (window.jazzy.docset) { - return; - } - var $link = $(this); - toggleItem($link, itemLinkToContent($link)); - - // Keeps the document from jumping to the hash. - var href = $link.attr('href'); - if (history.pushState) { - history.pushState({}, '', href); - } else { - location.hash = href; - } - event.preventDefault(); -}); - -// Clicks on links to the current, closed, item need to open the item -$("a:not('.token')").on('click', function() { - if (location == this.href) { - openCurrentItemIfClosed(); - } -}); - -// KaTeX rendering -if ("katex" in window) { - $($('.math').each( (_, element) => { - katex.render(element.textContent, element, { - displayMode: $(element).hasClass('m-block'), - throwOnError: false, - trust: true - }); - })) -} diff --git a/js/jazzy.search.js b/js/jazzy.search.js deleted file mode 100644 index 359cdbb8b..000000000 --- a/js/jazzy.search.js +++ /dev/null @@ -1,74 +0,0 @@ -// Jazzy - https://github.com/realm/jazzy -// Copyright Realm Inc. -// SPDX-License-Identifier: MIT - -$(function(){ - var $typeahead = $('[data-typeahead]'); - var $form = $typeahead.parents('form'); - var searchURL = $form.attr('action'); - - function displayTemplate(result) { - return result.name; - } - - function suggestionTemplate(result) { - var t = '
'; - t += '' + result.name + ''; - if (result.parent_name) { - t += '' + result.parent_name + ''; - } - t += '
'; - return t; - } - - $typeahead.one('focus', function() { - $form.addClass('loading'); - - $.getJSON(searchURL).then(function(searchData) { - const searchIndex = lunr(function() { - this.ref('url'); - this.field('name'); - this.field('abstract'); - for (const [url, doc] of Object.entries(searchData)) { - this.add({url: url, name: doc.name, abstract: doc.abstract}); - } - }); - - $typeahead.typeahead( - { - highlight: true, - minLength: 3, - autoselect: true - }, - { - limit: 10, - display: displayTemplate, - templates: { suggestion: suggestionTemplate }, - source: function(query, sync) { - const lcSearch = query.toLowerCase(); - const results = searchIndex.query(function(q) { - q.term(lcSearch, { boost: 100 }); - q.term(lcSearch, { - boost: 10, - wildcard: lunr.Query.wildcard.TRAILING - }); - }).map(function(result) { - var doc = searchData[result.ref]; - doc.url = result.ref; - return doc; - }); - sync(results); - } - } - ); - $form.removeClass('loading'); - $typeahead.trigger('focus'); - }); - }); - - var baseURL = searchURL.slice(0, -"search.json".length); - - $typeahead.on('typeahead:select', function(e, result) { - window.location = baseURL + result.url; - }); -}); diff --git a/js/jquery.min.js b/js/jquery.min.js deleted file mode 100644 index 7f37b5d99..000000000 --- a/js/jquery.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/js/typeahead.jquery.js b/js/typeahead.jquery.js deleted file mode 100644 index bcb734bef..000000000 --- a/js/typeahead.jquery.js +++ /dev/null @@ -1,1695 +0,0 @@ -/*! - * typeahead.js 1.3.3 - * https://github.com/corejavascript/typeahead.js - * Copyright 2013-2024 Twitter, Inc. and other contributors; Licensed MIT - */ - - -(function(root, factory) { - if (typeof define === "function" && define.amd) { - define([ "jquery" ], function(a0) { - return factory(a0); - }); - } else if (typeof module === "object" && module.exports) { - module.exports = factory(require("jquery")); - } else { - factory(root["jQuery"]); - } -})(this, function($) { - var _ = function() { - "use strict"; - return { - isMsie: function() { - return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false; - }, - isBlankString: function(str) { - return !str || /^\s*$/.test(str); - }, - escapeRegExChars: function(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - isString: function(obj) { - return typeof obj === "string"; - }, - isNumber: function(obj) { - return typeof obj === "number"; - }, - isArray: $.isArray, - isFunction: $.isFunction, - isObject: $.isPlainObject, - isUndefined: function(obj) { - return typeof obj === "undefined"; - }, - isElement: function(obj) { - return !!(obj && obj.nodeType === 1); - }, - isJQuery: function(obj) { - return obj instanceof $; - }, - toStr: function toStr(s) { - return _.isUndefined(s) || s === null ? "" : s + ""; - }, - bind: $.proxy, - each: function(collection, cb) { - $.each(collection, reverseArgs); - function reverseArgs(index, value) { - return cb(value, index); - } - }, - map: $.map, - filter: $.grep, - every: function(obj, test) { - var result = true; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (!(result = test.call(null, val, key, obj))) { - return false; - } - }); - return !!result; - }, - some: function(obj, test) { - var result = false; - if (!obj) { - return result; - } - $.each(obj, function(key, val) { - if (result = test.call(null, val, key, obj)) { - return false; - } - }); - return !!result; - }, - mixin: $.extend, - identity: function(x) { - return x; - }, - clone: function(obj) { - return $.extend(true, {}, obj); - }, - getIdGenerator: function() { - var counter = 0; - return function() { - return counter++; - }; - }, - templatify: function templatify(obj) { - return $.isFunction(obj) ? obj : template; - function template() { - return String(obj); - } - }, - defer: function(fn) { - setTimeout(fn, 0); - }, - debounce: function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments, later, callNow; - later = function() { - timeout = null; - if (!immediate) { - result = func.apply(context, args); - } - }; - callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) { - result = func.apply(context, args); - } - return result; - }; - }, - throttle: function(func, wait) { - var context, args, timeout, result, previous, later; - previous = 0; - later = function() { - previous = new Date(); - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date(), remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }, - stringify: function(val) { - return _.isString(val) ? val : JSON.stringify(val); - }, - guid: function() { - function _p8(s) { - var p = (Math.random().toString(16) + "000000000").substr(2, 8); - return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p; - } - return "tt-" + _p8() + _p8(true) + _p8(true) + _p8(); - }, - noop: function() {} - }; - }(); - var WWW = function() { - "use strict"; - var defaultClassNames = { - wrapper: "twitter-typeahead", - input: "tt-input", - hint: "tt-hint", - menu: "tt-menu", - dataset: "tt-dataset", - suggestion: "tt-suggestion", - selectable: "tt-selectable", - empty: "tt-empty", - open: "tt-open", - cursor: "tt-cursor", - highlight: "tt-highlight" - }; - return build; - function build(o) { - var www, classes; - classes = _.mixin({}, defaultClassNames, o); - www = { - css: buildCss(), - classes: classes, - html: buildHtml(classes), - selectors: buildSelectors(classes) - }; - return { - css: www.css, - html: www.html, - classes: www.classes, - selectors: www.selectors, - mixin: function(o) { - _.mixin(o, www); - } - }; - } - function buildHtml(c) { - return { - wrapper: '', - menu: '
' - }; - } - function buildSelectors(classes) { - var selectors = {}; - _.each(classes, function(v, k) { - selectors[k] = "." + v; - }); - return selectors; - } - function buildCss() { - var css = { - wrapper: { - position: "relative", - display: "inline-block" - }, - hint: { - position: "absolute", - top: "0", - left: "0", - borderColor: "transparent", - boxShadow: "none", - opacity: "1" - }, - input: { - position: "relative", - verticalAlign: "top", - backgroundColor: "transparent" - }, - inputWithNoHint: { - position: "relative", - verticalAlign: "top" - }, - menu: { - position: "absolute", - top: "100%", - left: "0", - zIndex: "100", - display: "none" - }, - ltr: { - left: "0", - right: "auto" - }, - rtl: { - left: "auto", - right: " 0" - } - }; - if (_.isMsie()) { - _.mixin(css.input, { - backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)" - }); - } - return css; - } - }(); - var EventBus = function() { - "use strict"; - var namespace, deprecationMap; - namespace = "typeahead:"; - deprecationMap = { - render: "rendered", - cursorchange: "cursorchanged", - select: "selected", - autocomplete: "autocompleted" - }; - function EventBus(o) { - if (!o || !o.el) { - $.error("EventBus initialized without el"); - } - this.$el = $(o.el); - } - _.mixin(EventBus.prototype, { - _trigger: function(type, args) { - var $e = $.Event(namespace + type); - this.$el.trigger.call(this.$el, $e, args || []); - return $e; - }, - before: function(type) { - var args, $e; - args = [].slice.call(arguments, 1); - $e = this._trigger("before" + type, args); - return $e.isDefaultPrevented(); - }, - trigger: function(type) { - var deprecatedType; - this._trigger(type, [].slice.call(arguments, 1)); - if (deprecatedType = deprecationMap[type]) { - this._trigger(deprecatedType, [].slice.call(arguments, 1)); - } - } - }); - return EventBus; - }(); - var EventEmitter = function() { - "use strict"; - var splitter = /\s+/, nextTick = getNextTick(); - return { - onSync: onSync, - onAsync: onAsync, - off: off, - trigger: trigger - }; - function on(method, types, cb, context) { - var type; - if (!cb) { - return this; - } - types = types.split(splitter); - cb = context ? bindContext(cb, context) : cb; - this._callbacks = this._callbacks || {}; - while (type = types.shift()) { - this._callbacks[type] = this._callbacks[type] || { - sync: [], - async: [] - }; - this._callbacks[type][method].push(cb); - } - return this; - } - function onAsync(types, cb, context) { - return on.call(this, "async", types, cb, context); - } - function onSync(types, cb, context) { - return on.call(this, "sync", types, cb, context); - } - function off(types) { - var type; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - while (type = types.shift()) { - delete this._callbacks[type]; - } - return this; - } - function trigger(types) { - var type, callbacks, args, syncFlush, asyncFlush; - if (!this._callbacks) { - return this; - } - types = types.split(splitter); - args = [].slice.call(arguments, 1); - while ((type = types.shift()) && (callbacks = this._callbacks[type])) { - syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args)); - asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args)); - syncFlush() && nextTick(asyncFlush); - } - return this; - } - function getFlush(callbacks, context, args) { - return flush; - function flush() { - var cancelled; - for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) { - cancelled = callbacks[i].apply(context, args) === false; - } - return !cancelled; - } - } - function getNextTick() { - var nextTickFn; - if (window.setImmediate) { - nextTickFn = function nextTickSetImmediate(fn) { - setImmediate(function() { - fn(); - }); - }; - } else { - nextTickFn = function nextTickSetTimeout(fn) { - setTimeout(function() { - fn(); - }, 0); - }; - } - return nextTickFn; - } - function bindContext(fn, context) { - return fn.bind ? fn.bind(context) : function() { - fn.apply(context, [].slice.call(arguments, 0)); - }; - } - }(); - var highlight = function(doc) { - "use strict"; - var defaults = { - node: null, - pattern: null, - tagName: "strong", - className: null, - wordsOnly: false, - caseSensitive: false, - diacriticInsensitive: false - }; - var accented = { - A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]", - B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]", - C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]", - D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]", - E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]", - F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]", - G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]", - H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]", - I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]", - J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]", - K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]", - L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]", - M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]", - N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]", - O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]", - P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]", - Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]", - R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]", - S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]", - T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]", - U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]", - V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]", - W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]", - X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]", - Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]", - Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]" - }; - return function hightlight(o) { - var regex; - o = _.mixin({}, defaults, o); - if (!o.node || !o.pattern) { - return; - } - o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ]; - regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive); - traverse(o.node, hightlightTextNode); - function hightlightTextNode(textNode) { - var match, patternNode, wrapperNode; - if (match = regex.exec(textNode.data)) { - wrapperNode = doc.createElement(o.tagName); - o.className && (wrapperNode.className = o.className); - patternNode = textNode.splitText(match.index); - patternNode.splitText(match[0].length); - wrapperNode.appendChild(patternNode.cloneNode(true)); - textNode.parentNode.replaceChild(wrapperNode, patternNode); - } - return !!match; - } - function traverse(el, hightlightTextNode) { - var childNode, TEXT_NODE_TYPE = 3; - for (var i = 0; i < el.childNodes.length; i++) { - childNode = el.childNodes[i]; - if (childNode.nodeType === TEXT_NODE_TYPE) { - i += hightlightTextNode(childNode) ? 1 : 0; - } else { - traverse(childNode, hightlightTextNode); - } - } - } - }; - function accent_replacer(chr) { - return accented[chr.toUpperCase()] || chr; - } - function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) { - var escapedPatterns = [], regexStr; - for (var i = 0, len = patterns.length; i < len; i++) { - var escapedWord = _.escapeRegExChars(patterns[i]); - if (diacriticInsensitive) { - escapedWord = escapedWord.replace(/\S/g, accent_replacer); - } - escapedPatterns.push(escapedWord); - } - regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")"; - return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i"); - } - }(window.document); - var Input = function() { - "use strict"; - var specialKeyCodeMap; - specialKeyCodeMap = { - 9: "tab", - 27: "esc", - 37: "left", - 39: "right", - 13: "enter", - 38: "up", - 40: "down" - }; - function Input(o, www) { - var id; - o = o || {}; - if (!o.input) { - $.error("input is missing"); - } - www.mixin(this); - this.$hint = $(o.hint); - this.$input = $(o.input); - this.$menu = $(o.menu); - id = this.$input.attr("id") || _.guid(); - this.$menu.attr("id", id + "_listbox"); - this.$hint.attr({ - "aria-hidden": true - }); - this.$input.attr({ - "aria-owns": id + "_listbox", - "aria-controls": id + "_listbox", - role: "combobox", - "aria-autocomplete": "list", - "aria-expanded": false - }); - this.query = this.$input.val(); - this.queryWhenFocused = this.hasFocus() ? this.query : null; - this.$overflowHelper = buildOverflowHelper(this.$input); - this._checkLanguageDirection(); - if (this.$hint.length === 0) { - this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop; - } - this.onSync("cursorchange", this._updateDescendent); - } - Input.normalizeQuery = function(str) { - return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " "); - }; - _.mixin(Input.prototype, EventEmitter, { - _onBlur: function onBlur() { - this.resetInputValue(); - this.trigger("blurred"); - }, - _onFocus: function onFocus() { - this.queryWhenFocused = this.query; - this.trigger("focused"); - }, - _onKeydown: function onKeydown($e) { - var keyName = specialKeyCodeMap[$e.which || $e.keyCode]; - this._managePreventDefault(keyName, $e); - if (keyName && this._shouldTrigger(keyName, $e)) { - this.trigger(keyName + "Keyed", $e); - } - }, - _onInput: function onInput() { - this._setQuery(this.getInputValue()); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - _managePreventDefault: function managePreventDefault(keyName, $e) { - var preventDefault; - switch (keyName) { - case "up": - case "down": - preventDefault = !withModifier($e); - break; - - default: - preventDefault = false; - } - preventDefault && $e.preventDefault(); - }, - _shouldTrigger: function shouldTrigger(keyName, $e) { - var trigger; - switch (keyName) { - case "tab": - trigger = !withModifier($e); - break; - - default: - trigger = true; - } - return trigger; - }, - _checkLanguageDirection: function checkLanguageDirection() { - var dir = (this.$input.css("direction") || "ltr").toLowerCase(); - if (this.dir !== dir) { - this.dir = dir; - this.$hint.attr("dir", dir); - this.trigger("langDirChanged", dir); - } - }, - _setQuery: function setQuery(val, silent) { - var areEquivalent, hasDifferentWhitespace; - areEquivalent = areQueriesEquivalent(val, this.query); - hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false; - this.query = val; - if (!silent && !areEquivalent) { - this.trigger("queryChanged", this.query); - } else if (!silent && hasDifferentWhitespace) { - this.trigger("whitespaceChanged", this.query); - } - }, - _updateDescendent: function updateDescendent(event, id) { - this.$input.attr("aria-activedescendant", id); - }, - bind: function() { - var that = this, onBlur, onFocus, onKeydown, onInput; - onBlur = _.bind(this._onBlur, this); - onFocus = _.bind(this._onFocus, this); - onKeydown = _.bind(this._onKeydown, this); - onInput = _.bind(this._onInput, this); - this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown); - if (!_.isMsie() || _.isMsie() > 9) { - this.$input.on("input.tt", onInput); - } else { - this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) { - if (specialKeyCodeMap[$e.which || $e.keyCode]) { - return; - } - _.defer(_.bind(that._onInput, that, $e)); - }); - } - return this; - }, - focus: function focus() { - this.$input.focus(); - }, - blur: function blur() { - this.$input.blur(); - }, - getLangDir: function getLangDir() { - return this.dir; - }, - getQuery: function getQuery() { - return this.query || ""; - }, - setQuery: function setQuery(val, silent) { - this.setInputValue(val); - this._setQuery(val, silent); - }, - hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() { - return this.query !== this.queryWhenFocused; - }, - getInputValue: function getInputValue() { - return this.$input.val(); - }, - setInputValue: function setInputValue(value) { - this.$input.val(value); - this.clearHintIfInvalid(); - this._checkLanguageDirection(); - }, - resetInputValue: function resetInputValue() { - this.setInputValue(this.query); - }, - getHint: function getHint() { - return this.$hint.val(); - }, - setHint: function setHint(value) { - this.$hint.val(value); - }, - clearHint: function clearHint() { - this.setHint(""); - }, - clearHintIfInvalid: function clearHintIfInvalid() { - var val, hint, valIsPrefixOfHint, isValid; - val = this.getInputValue(); - hint = this.getHint(); - valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0; - isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow(); - !isValid && this.clearHint(); - }, - hasFocus: function hasFocus() { - return this.$input.is(":focus"); - }, - hasOverflow: function hasOverflow() { - var constraint = this.$input.width() - 2; - this.$overflowHelper.text(this.getInputValue()); - return this.$overflowHelper.width() >= constraint; - }, - isCursorAtEnd: function() { - var valueLength, selectionStart, range; - valueLength = this.$input.val().length; - selectionStart = this.$input[0].selectionStart; - if (_.isNumber(selectionStart)) { - return selectionStart === valueLength; - } else if (document.selection) { - range = document.selection.createRange(); - range.moveStart("character", -valueLength); - return valueLength === range.text.length; - } - return true; - }, - destroy: function destroy() { - this.$hint.off(".tt"); - this.$input.off(".tt"); - this.$overflowHelper.remove(); - this.$hint = this.$input = this.$overflowHelper = $("
"); - }, - setAriaExpanded: function setAriaExpanded(value) { - this.$input.attr("aria-expanded", value); - } - }); - return Input; - function buildOverflowHelper($input) { - return $('').css({ - position: "absolute", - visibility: "hidden", - whiteSpace: "pre", - fontFamily: $input.css("font-family"), - fontSize: $input.css("font-size"), - fontStyle: $input.css("font-style"), - fontVariant: $input.css("font-variant"), - fontWeight: $input.css("font-weight"), - wordSpacing: $input.css("word-spacing"), - letterSpacing: $input.css("letter-spacing"), - textIndent: $input.css("text-indent"), - textRendering: $input.css("text-rendering"), - textTransform: $input.css("text-transform") - }).insertAfter($input); - } - function areQueriesEquivalent(a, b) { - return Input.normalizeQuery(a) === Input.normalizeQuery(b); - } - function withModifier($e) { - return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey; - } - }(); - var Dataset = function() { - "use strict"; - var keys, nameGenerator; - keys = { - dataset: "tt-selectable-dataset", - val: "tt-selectable-display", - obj: "tt-selectable-object" - }; - nameGenerator = _.getIdGenerator(); - function Dataset(o, www) { - o = o || {}; - o.templates = o.templates || {}; - o.templates.notFound = o.templates.notFound || o.templates.empty; - if (!o.source) { - $.error("missing source"); - } - if (!o.node) { - $.error("missing node"); - } - if (o.name && !isValidName(o.name)) { - $.error("invalid dataset name: " + o.name); - } - www.mixin(this); - this.highlight = !!o.highlight; - this.name = _.toStr(o.name || nameGenerator()); - this.limit = o.limit || 5; - this.displayFn = getDisplayFn(o.display || o.displayKey); - this.templates = getTemplates(o.templates, this.displayFn); - this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source; - this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async; - this._resetLastSuggestion(); - this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name); - } - Dataset.extractData = function extractData(el) { - var $el = $(el); - if ($el.data(keys.obj)) { - return { - dataset: $el.data(keys.dataset) || "", - val: $el.data(keys.val) || "", - obj: $el.data(keys.obj) || null - }; - } - return null; - }; - _.mixin(Dataset.prototype, EventEmitter, { - _overwrite: function overwrite(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (this.async && this.templates.pending) { - this._renderPending(query); - } else if (!this.async && this.templates.notFound) { - this._renderNotFound(query); - } else { - this._empty(); - } - this.trigger("rendered", suggestions, false, this.name); - }, - _append: function append(query, suggestions) { - suggestions = suggestions || []; - if (suggestions.length && this.$lastSuggestion.length) { - this._appendSuggestions(query, suggestions); - } else if (suggestions.length) { - this._renderSuggestions(query, suggestions); - } else if (!this.$lastSuggestion.length && this.templates.notFound) { - this._renderNotFound(query); - } - this.trigger("rendered", suggestions, true, this.name); - }, - _renderSuggestions: function renderSuggestions(query, suggestions) { - var $fragment; - $fragment = this._getSuggestionsFragment(query, suggestions); - this.$lastSuggestion = $fragment.children().last(); - this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions)); - }, - _appendSuggestions: function appendSuggestions(query, suggestions) { - var $fragment, $lastSuggestion; - $fragment = this._getSuggestionsFragment(query, suggestions); - $lastSuggestion = $fragment.children().last(); - this.$lastSuggestion.after($fragment); - this.$lastSuggestion = $lastSuggestion; - }, - _renderPending: function renderPending(query) { - var template = this.templates.pending; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _renderNotFound: function renderNotFound(query) { - var template = this.templates.notFound; - this._resetLastSuggestion(); - template && this.$el.html(template({ - query: query, - dataset: this.name - })); - }, - _empty: function empty() { - this.$el.empty(); - this._resetLastSuggestion(); - }, - _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) { - var that = this, fragment; - fragment = document.createDocumentFragment(); - _.each(suggestions, function getSuggestionNode(suggestion) { - var $el, context; - context = that._injectQuery(query, suggestion); - $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable); - fragment.appendChild($el[0]); - }); - this.highlight && highlight({ - className: this.classes.highlight, - node: fragment, - pattern: query - }); - return $(fragment); - }, - _getFooter: function getFooter(query, suggestions) { - return this.templates.footer ? this.templates.footer({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _getHeader: function getHeader(query, suggestions) { - return this.templates.header ? this.templates.header({ - query: query, - suggestions: suggestions, - dataset: this.name - }) : null; - }, - _resetLastSuggestion: function resetLastSuggestion() { - this.$lastSuggestion = $(); - }, - _injectQuery: function injectQuery(query, obj) { - return _.isObject(obj) ? _.mixin({ - _query: query - }, obj) : obj; - }, - update: function update(query) { - var that = this, canceled = false, syncCalled = false, rendered = 0; - this.cancel(); - this.cancel = function cancel() { - canceled = true; - that.cancel = $.noop; - that.async && that.trigger("asyncCanceled", query, that.name); - }; - this.source(query, sync, async); - !syncCalled && sync([]); - function sync(suggestions) { - if (syncCalled) { - return; - } - syncCalled = true; - suggestions = (suggestions || []).slice(0, that.limit); - rendered = suggestions.length; - that._overwrite(query, suggestions); - if (rendered < that.limit && that.async) { - that.trigger("asyncRequested", query, that.name); - } - } - function async(suggestions) { - suggestions = suggestions || []; - if (!canceled && rendered < that.limit) { - that.cancel = $.noop; - var idx = Math.abs(rendered - that.limit); - rendered += idx; - that._append(query, suggestions.slice(0, idx)); - that.async && that.trigger("asyncReceived", query, that.name); - } - } - }, - cancel: $.noop, - clear: function clear() { - this._empty(); - this.cancel(); - this.trigger("cleared"); - }, - isEmpty: function isEmpty() { - return this.$el.is(":empty"); - }, - destroy: function destroy() { - this.$el = $("
"); - } - }); - return Dataset; - function getDisplayFn(display) { - display = display || _.stringify; - return _.isFunction(display) ? display : displayFn; - function displayFn(obj) { - return obj[display]; - } - } - function getTemplates(templates, displayFn) { - return { - notFound: templates.notFound && _.templatify(templates.notFound), - pending: templates.pending && _.templatify(templates.pending), - header: templates.header && _.templatify(templates.header), - footer: templates.footer && _.templatify(templates.footer), - suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate - }; - function userSuggestionTemplate(context) { - var template = templates.suggestion; - return $(template(context)).attr("id", _.guid()); - } - function suggestionTemplate(context) { - return $('
').attr("id", _.guid()).text(displayFn(context)); - } - } - function isValidName(str) { - return /^[_a-zA-Z0-9-]+$/.test(str); - } - }(); - var Menu = function() { - "use strict"; - function Menu(o, www) { - var that = this; - o = o || {}; - if (!o.node) { - $.error("node is required"); - } - www.mixin(this); - this.$node = $(o.node); - this.query = null; - this.datasets = _.map(o.datasets, initializeDataset); - function initializeDataset(oDataset) { - var node = that.$node.find(oDataset.node).first(); - oDataset.node = node.length ? node : $("
").appendTo(that.$node); - return new Dataset(oDataset, www); - } - } - _.mixin(Menu.prototype, EventEmitter, { - _onSelectableClick: function onSelectableClick($e) { - this.trigger("selectableClicked", $($e.currentTarget)); - }, - _onRendered: function onRendered(type, dataset, suggestions, async) { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetRendered", dataset, suggestions, async); - }, - _onCleared: function onCleared() { - this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty()); - this.trigger("datasetCleared"); - }, - _propagate: function propagate() { - this.trigger.apply(this, arguments); - }, - _allDatasetsEmpty: function allDatasetsEmpty() { - return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) { - var isEmpty = dataset.isEmpty(); - this.$node.attr("aria-expanded", !isEmpty); - return isEmpty; - }, this)); - }, - _getSelectables: function getSelectables() { - return this.$node.find(this.selectors.selectable); - }, - _removeCursor: function _removeCursor() { - var $selectable = this.getActiveSelectable(); - $selectable && $selectable.removeClass(this.classes.cursor); - }, - _ensureVisible: function ensureVisible($el) { - var elTop, elBottom, nodeScrollTop, nodeHeight; - elTop = $el.position().top; - elBottom = elTop + $el.outerHeight(true); - nodeScrollTop = this.$node.scrollTop(); - nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10); - if (elTop < 0) { - this.$node.scrollTop(nodeScrollTop + elTop); - } else if (nodeHeight < elBottom) { - this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight)); - } - }, - bind: function() { - var that = this, onSelectableClick; - onSelectableClick = _.bind(this._onSelectableClick, this); - this.$node.on("click.tt", this.selectors.selectable, onSelectableClick); - this.$node.on("mouseover", this.selectors.selectable, function() { - that.setCursor($(this)); - }); - this.$node.on("mouseleave", function() { - that._removeCursor(); - }); - _.each(this.datasets, function(dataset) { - dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that); - }); - return this; - }, - isOpen: function isOpen() { - return this.$node.hasClass(this.classes.open); - }, - open: function open() { - this.$node.scrollTop(0); - this.$node.addClass(this.classes.open); - }, - close: function close() { - this.$node.attr("aria-expanded", false); - this.$node.removeClass(this.classes.open); - this._removeCursor(); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.attr("dir", dir); - }, - selectableRelativeToCursor: function selectableRelativeToCursor(delta) { - var $selectables, $oldCursor, oldIndex, newIndex; - $oldCursor = this.getActiveSelectable(); - $selectables = this._getSelectables(); - oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1; - newIndex = oldIndex + delta; - newIndex = (newIndex + 1) % ($selectables.length + 1) - 1; - newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex; - return newIndex === -1 ? null : $selectables.eq(newIndex); - }, - setCursor: function setCursor($selectable) { - this._removeCursor(); - if ($selectable = $selectable && $selectable.first()) { - $selectable.addClass(this.classes.cursor); - this._ensureVisible($selectable); - } - }, - getSelectableData: function getSelectableData($el) { - return $el && $el.length ? Dataset.extractData($el) : null; - }, - getActiveSelectable: function getActiveSelectable() { - var $selectable = this._getSelectables().filter(this.selectors.cursor).first(); - return $selectable.length ? $selectable : null; - }, - getTopSelectable: function getTopSelectable() { - var $selectable = this._getSelectables().first(); - return $selectable.length ? $selectable : null; - }, - update: function update(query) { - var isValidUpdate = query !== this.query; - if (isValidUpdate) { - this.query = query; - _.each(this.datasets, updateDataset); - } - return isValidUpdate; - function updateDataset(dataset) { - dataset.update(query); - } - }, - empty: function empty() { - _.each(this.datasets, clearDataset); - this.query = null; - this.$node.addClass(this.classes.empty); - function clearDataset(dataset) { - dataset.clear(); - } - }, - destroy: function destroy() { - this.$node.off(".tt"); - this.$node = $("
"); - _.each(this.datasets, destroyDataset); - function destroyDataset(dataset) { - dataset.destroy(); - } - } - }); - return Menu; - }(); - var Status = function() { - "use strict"; - function Status(options) { - this.$el = $("", { - role: "status", - "aria-live": "polite" - }).css({ - position: "absolute", - padding: "0", - border: "0", - height: "1px", - width: "1px", - "margin-bottom": "-1px", - "margin-right": "-1px", - overflow: "hidden", - clip: "rect(0 0 0 0)", - "white-space": "nowrap" - }); - options.$input.after(this.$el); - _.each(options.menu.datasets, _.bind(function(dataset) { - if (dataset.onSync) { - dataset.onSync("rendered", _.bind(this.update, this)); - dataset.onSync("cleared", _.bind(this.cleared, this)); - } - }, this)); - } - _.mixin(Status.prototype, { - update: function update(event, suggestions) { - var length = suggestions.length; - var words; - if (length === 1) { - words = { - result: "result", - is: "is" - }; - } else { - words = { - result: "results", - is: "are" - }; - } - this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate."); - }, - cleared: function() { - this.$el.text(""); - } - }); - return Status; - }(); - var DefaultMenu = function() { - "use strict"; - var s = Menu.prototype; - function DefaultMenu() { - Menu.apply(this, [].slice.call(arguments, 0)); - } - _.mixin(DefaultMenu.prototype, Menu.prototype, { - open: function open() { - !this._allDatasetsEmpty() && this._show(); - return s.open.apply(this, [].slice.call(arguments, 0)); - }, - close: function close() { - this._hide(); - return s.close.apply(this, [].slice.call(arguments, 0)); - }, - _onRendered: function onRendered() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onRendered.apply(this, [].slice.call(arguments, 0)); - }, - _onCleared: function onCleared() { - if (this._allDatasetsEmpty()) { - this._hide(); - } else { - this.isOpen() && this._show(); - } - return s._onCleared.apply(this, [].slice.call(arguments, 0)); - }, - setLanguageDirection: function setLanguageDirection(dir) { - this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl); - return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0)); - }, - _hide: function hide() { - this.$node.hide(); - }, - _show: function show() { - this.$node.css("display", "block"); - } - }); - return DefaultMenu; - }(); - var Typeahead = function() { - "use strict"; - function Typeahead(o, www) { - var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged; - o = o || {}; - if (!o.input) { - $.error("missing input"); - } - if (!o.menu) { - $.error("missing menu"); - } - if (!o.eventBus) { - $.error("missing event bus"); - } - www.mixin(this); - this.eventBus = o.eventBus; - this.minLength = _.isNumber(o.minLength) ? o.minLength : 1; - this.input = o.input; - this.menu = o.menu; - this.enabled = true; - this.autoselect = !!o.autoselect; - this.active = false; - this.input.hasFocus() && this.activate(); - this.dir = this.input.getLangDir(); - this._hacks(); - this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this); - onFocused = c(this, "activate", "open", "_onFocused"); - onBlurred = c(this, "deactivate", "_onBlurred"); - onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed"); - onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed"); - onEscKeyed = c(this, "isActive", "_onEscKeyed"); - onUpKeyed = c(this, "isActive", "open", "_onUpKeyed"); - onDownKeyed = c(this, "isActive", "open", "_onDownKeyed"); - onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed"); - onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed"); - onQueryChanged = c(this, "_openIfActive", "_onQueryChanged"); - onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged"); - this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this); - } - _.mixin(Typeahead.prototype, { - _hacks: function hacks() { - var $input, $menu; - $input = this.input.$input || $("
"); - $menu = this.menu.$node || $("
"); - $input.on("blur.tt", function($e) { - var active, isActive, hasActive; - active = document.activeElement; - isActive = $menu.is(active); - hasActive = $menu.has(active).length > 0; - if (_.isMsie() && (isActive || hasActive)) { - $e.preventDefault(); - $e.stopImmediatePropagation(); - _.defer(function() { - $input.focus(); - }); - } - }); - $menu.on("mousedown.tt", function($e) { - $e.preventDefault(); - }); - }, - _onSelectableClicked: function onSelectableClicked(type, $el) { - this.select($el); - }, - _onDatasetCleared: function onDatasetCleared() { - this._updateHint(); - }, - _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) { - this._updateHint(); - if (this.autoselect) { - var cursorClass = this.selectors.cursor.substr(1); - this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass); - } - this.eventBus.trigger("render", suggestions, async, dataset); - }, - _onAsyncRequested: function onAsyncRequested(type, dataset, query) { - this.eventBus.trigger("asyncrequest", query, dataset); - }, - _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) { - this.eventBus.trigger("asynccancel", query, dataset); - }, - _onAsyncReceived: function onAsyncReceived(type, dataset, query) { - this.eventBus.trigger("asyncreceive", query, dataset); - }, - _onFocused: function onFocused() { - this._minLengthMet() && this.menu.update(this.input.getQuery()); - }, - _onBlurred: function onBlurred() { - if (this.input.hasQueryChangedSinceLastFocus()) { - this.eventBus.trigger("change", this.input.getQuery()); - } - }, - _onEnterKeyed: function onEnterKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - if (this.select($selectable)) { - $e.preventDefault(); - $e.stopPropagation(); - } - } else if (this.autoselect) { - if (this.select(this.menu.getTopSelectable())) { - $e.preventDefault(); - $e.stopPropagation(); - } - } - }, - _onTabKeyed: function onTabKeyed(type, $e) { - var $selectable; - if ($selectable = this.menu.getActiveSelectable()) { - this.select($selectable) && $e.preventDefault(); - } else if (this.autoselect) { - if ($selectable = this.menu.getTopSelectable()) { - this.autocomplete($selectable) && $e.preventDefault(); - } - } - }, - _onEscKeyed: function onEscKeyed() { - this.close(); - }, - _onUpKeyed: function onUpKeyed() { - this.moveCursor(-1); - }, - _onDownKeyed: function onDownKeyed() { - this.moveCursor(+1); - }, - _onLeftKeyed: function onLeftKeyed() { - if (this.dir === "rtl" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onRightKeyed: function onRightKeyed() { - if (this.dir === "ltr" && this.input.isCursorAtEnd()) { - this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable()); - } - }, - _onQueryChanged: function onQueryChanged(e, query) { - this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty(); - }, - _onWhitespaceChanged: function onWhitespaceChanged() { - this._updateHint(); - }, - _onLangDirChanged: function onLangDirChanged(e, dir) { - if (this.dir !== dir) { - this.dir = dir; - this.menu.setLanguageDirection(dir); - } - }, - _openIfActive: function openIfActive() { - this.isActive() && this.open(); - }, - _minLengthMet: function minLengthMet(query) { - query = _.isString(query) ? query : this.input.getQuery() || ""; - return query.length >= this.minLength; - }, - _updateHint: function updateHint() { - var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match; - $selectable = this.menu.getTopSelectable(); - data = this.menu.getSelectableData($selectable); - val = this.input.getInputValue(); - if (data && !_.isBlankString(val) && !this.input.hasOverflow()) { - query = Input.normalizeQuery(val); - escapedQuery = _.escapeRegExChars(query); - frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i"); - match = frontMatchRegEx.exec(data.val); - match && this.input.setHint(val + match[1]); - } else { - this.input.clearHint(); - } - }, - isEnabled: function isEnabled() { - return this.enabled; - }, - enable: function enable() { - this.enabled = true; - }, - disable: function disable() { - this.enabled = false; - }, - isActive: function isActive() { - return this.active; - }, - activate: function activate() { - if (this.isActive()) { - return true; - } else if (!this.isEnabled() || this.eventBus.before("active")) { - return false; - } else { - this.active = true; - this.eventBus.trigger("active"); - return true; - } - }, - deactivate: function deactivate() { - if (!this.isActive()) { - return true; - } else if (this.eventBus.before("idle")) { - return false; - } else { - this.active = false; - this.close(); - this.eventBus.trigger("idle"); - return true; - } - }, - isOpen: function isOpen() { - return this.menu.isOpen(); - }, - open: function open() { - if (!this.isOpen() && !this.eventBus.before("open")) { - this.input.setAriaExpanded(true); - this.menu.open(); - this._updateHint(); - this.eventBus.trigger("open"); - } - return this.isOpen(); - }, - close: function close() { - if (this.isOpen() && !this.eventBus.before("close")) { - this.input.setAriaExpanded(false); - this.menu.close(); - this.input.clearHint(); - this.input.resetInputValue(); - this.eventBus.trigger("close"); - } - return !this.isOpen(); - }, - setVal: function setVal(val) { - this.input.setQuery(_.toStr(val)); - }, - getVal: function getVal() { - return this.input.getQuery(); - }, - select: function select($selectable) { - var data = this.menu.getSelectableData($selectable); - if (data && !this.eventBus.before("select", data.obj, data.dataset)) { - this.input.setQuery(data.val, true); - this.eventBus.trigger("select", data.obj, data.dataset); - this.close(); - return true; - } - return false; - }, - autocomplete: function autocomplete($selectable) { - var query, data, isValid; - query = this.input.getQuery(); - data = this.menu.getSelectableData($selectable); - isValid = data && query !== data.val; - if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) { - this.input.setQuery(data.val); - this.eventBus.trigger("autocomplete", data.obj, data.dataset); - return true; - } - return false; - }, - moveCursor: function moveCursor(delta) { - var query, $candidate, data, suggestion, datasetName, cancelMove, id; - query = this.input.getQuery(); - $candidate = this.menu.selectableRelativeToCursor(delta); - data = this.menu.getSelectableData($candidate); - suggestion = data ? data.obj : null; - datasetName = data ? data.dataset : null; - id = $candidate ? $candidate.attr("id") : null; - this.input.trigger("cursorchange", id); - cancelMove = this._minLengthMet() && this.menu.update(query); - if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) { - this.menu.setCursor($candidate); - if (data) { - if (typeof data.val === "string") { - this.input.setInputValue(data.val); - } - } else { - this.input.resetInputValue(); - this._updateHint(); - } - this.eventBus.trigger("cursorchange", suggestion, datasetName); - return true; - } - return false; - }, - destroy: function destroy() { - this.input.destroy(); - this.menu.destroy(); - } - }); - return Typeahead; - function c(ctx) { - var methods = [].slice.call(arguments, 1); - return function() { - var args = [].slice.call(arguments); - _.each(methods, function(method) { - return ctx[method].apply(ctx, args); - }); - }; - } - }(); - (function() { - "use strict"; - var old, keys, methods; - old = $.fn.typeahead; - keys = { - www: "tt-www", - attrs: "tt-attrs", - typeahead: "tt-typeahead" - }; - methods = { - initialize: function initialize(o, datasets) { - var www; - datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1); - o = o || {}; - www = WWW(o.classNames); - return this.each(attach); - function attach() { - var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor; - _.each(datasets, function(d) { - d.highlight = !!o.highlight; - }); - $input = $(this); - $wrapper = $(www.html.wrapper); - $hint = $elOrNull(o.hint); - $menu = $elOrNull(o.menu); - defaultHint = o.hint !== false && !$hint; - defaultMenu = o.menu !== false && !$menu; - defaultHint && ($hint = buildHintFromInput($input, www)); - defaultMenu && ($menu = $(www.html.menu).css(www.css.menu)); - $hint && $hint.val(""); - $input = prepInput($input, www); - if (defaultHint || defaultMenu) { - $wrapper.css(www.css.wrapper); - $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint); - $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null); - } - MenuConstructor = defaultMenu ? DefaultMenu : Menu; - eventBus = new EventBus({ - el: $input - }); - input = new Input({ - hint: $hint, - input: $input, - menu: $menu - }, www); - menu = new MenuConstructor({ - node: $menu, - datasets: datasets - }, www); - status = new Status({ - $input: $input, - menu: menu - }); - typeahead = new Typeahead({ - input: input, - menu: menu, - eventBus: eventBus, - minLength: o.minLength, - autoselect: o.autoselect - }, www); - $input.data(keys.www, www); - $input.data(keys.typeahead, typeahead); - } - }, - isEnabled: function isEnabled() { - var enabled; - ttEach(this.first(), function(t) { - enabled = t.isEnabled(); - }); - return enabled; - }, - enable: function enable() { - ttEach(this, function(t) { - t.enable(); - }); - return this; - }, - disable: function disable() { - ttEach(this, function(t) { - t.disable(); - }); - return this; - }, - isActive: function isActive() { - var active; - ttEach(this.first(), function(t) { - active = t.isActive(); - }); - return active; - }, - activate: function activate() { - ttEach(this, function(t) { - t.activate(); - }); - return this; - }, - deactivate: function deactivate() { - ttEach(this, function(t) { - t.deactivate(); - }); - return this; - }, - isOpen: function isOpen() { - var open; - ttEach(this.first(), function(t) { - open = t.isOpen(); - }); - return open; - }, - open: function open() { - ttEach(this, function(t) { - t.open(); - }); - return this; - }, - close: function close() { - ttEach(this, function(t) { - t.close(); - }); - return this; - }, - select: function select(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.select($el); - }); - return success; - }, - autocomplete: function autocomplete(el) { - var success = false, $el = $(el); - ttEach(this.first(), function(t) { - success = t.autocomplete($el); - }); - return success; - }, - moveCursor: function moveCursoe(delta) { - var success = false; - ttEach(this.first(), function(t) { - success = t.moveCursor(delta); - }); - return success; - }, - val: function val(newVal) { - var query; - if (!arguments.length) { - ttEach(this.first(), function(t) { - query = t.getVal(); - }); - return query; - } else { - ttEach(this, function(t) { - t.setVal(_.toStr(newVal)); - }); - return this; - } - }, - destroy: function destroy() { - ttEach(this, function(typeahead, $input) { - revert($input); - typeahead.destroy(); - }); - return this; - } - }; - $.fn.typeahead = function(method) { - if (methods[method]) { - return methods[method].apply(this, [].slice.call(arguments, 1)); - } else { - return methods.initialize.apply(this, arguments); - } - }; - $.fn.typeahead.noConflict = function noConflict() { - $.fn.typeahead = old; - return this; - }; - function ttEach($els, fn) { - $els.each(function() { - var $input = $(this), typeahead; - (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input); - }); - } - function buildHintFromInput($input, www) { - return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({ - readonly: true, - required: false - }).removeAttr("id name placeholder").removeClass("required").attr({ - spellcheck: "false", - tabindex: -1 - }); - } - function prepInput($input, www) { - $input.data(keys.attrs, { - dir: $input.attr("dir"), - autocomplete: $input.attr("autocomplete"), - spellcheck: $input.attr("spellcheck"), - style: $input.attr("style") - }); - $input.addClass(www.classes.input).attr({ - spellcheck: false - }); - try { - !$input.attr("dir") && $input.attr("dir", "auto"); - } catch (e) {} - return $input; - } - function getBackgroundStyles($el) { - return { - backgroundAttachment: $el.css("background-attachment"), - backgroundClip: $el.css("background-clip"), - backgroundColor: $el.css("background-color"), - backgroundImage: $el.css("background-image"), - backgroundOrigin: $el.css("background-origin"), - backgroundPosition: $el.css("background-position"), - backgroundRepeat: $el.css("background-repeat"), - backgroundSize: $el.css("background-size") - }; - } - function revert($input) { - var www, $wrapper; - www = $input.data(keys.www); - $wrapper = $input.parent().filter(www.selectors.wrapper); - _.each($input.data(keys.attrs), function(val, key) { - _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val); - }); - $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input); - if ($wrapper.length) { - $input.detach().insertAfter($wrapper); - $wrapper.remove(); - } - } - function $elOrNull(obj) { - var isValid, $el; - isValid = _.isJQuery(obj) || _.isElement(obj); - $el = isValid ? $(obj).first() : []; - return $el.length ? $el : null; - } - })(); -}); \ No newline at end of file diff --git a/large_tuple.html b/large_tuple.html deleted file mode 100644 index cb98e5244..000000000 --- a/large_tuple.html +++ /dev/null @@ -1,518 +0,0 @@ - - - - large_tuple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Large Tuple

- -

Tuples shouldn’t have too many members. Create a custom type instead.

- -
    -
  • Identifier: large_tuple
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -2 -
    -error - -3 -
  • -
-

Non Triggering Examples

-
let foo: (Int, Int)
-
-
let foo: (start: Int, end: Int)
-
-
let foo: (Int, (Int, String))
-
-
func foo() -> (Int, Int)
-
-
func foo() -> (Int, Int) {}
-
-
func foo(bar: String) -> (Int, Int)
-
-
func foo(bar: String) -> (Int, Int) {}
-
-
func foo() throws -> (Int, Int)
-
-
func foo() throws -> (Int, Int) {}
-
-
let foo: (Int, Int, Int) -> Void
-
-
let foo: (Int, Int, Int) throws -> Void
-
-
func foo(bar: (Int, String, Float) -> Void)
-
-
func foo(bar: (Int, String, Float) throws -> Void)
-
-
var completionHandler: ((_ data: Data?, _ resp: URLResponse?, _ e: NSError?) -> Void)!
-
-
func getDictionaryAndInt() -> (Dictionary<Int, String>, Int)?
-
-
func getGenericTypeAndInt() -> (Type<Int, String, Float>, Int)?
-
-
func foo() async -> (Int, Int)
-
-
func foo() async -> (Int, Int) {}
-
-
func foo(bar: String) async -> (Int, Int)
-
-
func foo(bar: String) async -> (Int, Int) {}
-
-
func foo() async throws -> (Int, Int)
-
-
func foo() async throws -> (Int, Int) {}
-
-
let foo: (Int, Int, Int) async -> Void
-
-
let foo: (Int, Int, Int) async throws -> Void
-
-
func foo(bar: (Int, String, Float) async -> Void)
-
-
func foo(bar: (Int, String, Float) async throws -> Void)
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, String>, Int)?
-
-
func getGenericTypeAndInt() async -> (Type<Int, String, Float>, Int)?
-
-

Triggering Examples

-
let foo: ↓(Int, Int, Int)
-
-
let foo: ↓(start: Int, end: Int, value: String)
-
-
let foo: (Int, ↓(Int, Int, Int))
-
-
func foo(bar: ↓(Int, Int, Int))
-
-
func foo() -> ↓(Int, Int, Int)
-
-
func foo() -> ↓(Int, Int, Int) {}
-
-
func foo(bar: String) -> ↓(Int, Int, Int)
-
-
func foo(bar: String) -> ↓(Int, Int, Int) {}
-
-
func foo() throws -> ↓(Int, Int, Int)
-
-
func foo() throws -> ↓(Int, Int, Int) {}
-
-
func foo() throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
func getDictionaryAndInt() -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
-
func foo(bar: ↓(Int, Int, Int)) async
-
-
func foo() async -> ↓(Int, Int, Int)
-
-
func foo() async -> ↓(Int, Int, Int) {}
-
-
func foo(bar: String) async -> ↓(Int, Int, Int)
-
-
func foo(bar: String) async -> ↓(Int, Int, Int) {}
-
-
func foo() async throws -> ↓(Int, Int, Int)
-
-
func foo() async throws -> ↓(Int, Int, Int) {}
-
-
func foo() async throws -> ↓(Int, ↓(String, String, String), Int) {}
-
-
func getDictionaryAndInt() async -> (Dictionary<Int, ↓(String, String, String)>, Int)?
-
- -
-
- - -
-
- - - diff --git a/last_where.html b/last_where.html deleted file mode 100644 index 3ee40056d..000000000 --- a/last_where.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - last_where Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Last Where

- -

Prefer using .last(where:) over .filter { }.last in collections

- -
    -
  • Identifier: last_where
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
kinds.filter(excludingKinds.contains).isEmpty && kinds.last == .identifier
-
-
myList.last(where: { $0 % 2 == 0 })
-
-
match(pattern: pattern).filter { $0.last == .identifier }
-
-
(myList.filter { $0 == 1 }.suffix(2)).last
-
-
collection.filter("stringCol = '3'").last
-
-

Triggering Examples

-
↓myList.filter { $0 % 2 == 0 }.last
-
-
↓myList.filter({ $0 % 2 == 0 }).last
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last
-
-
↓myList.map { $0 + 1 }.filter({ $0 % 2 == 0 }).last?.something()
-
-
↓myList.filter(someFunction).last
-
-
↓myList.filter({ $0 % 2 == 0 })
-.last
-
-
(↓myList.filter { $0 == 1 }).last
-
- -
-
- - -
-
- - - diff --git a/leading_whitespace.html b/leading_whitespace.html deleted file mode 100644 index 2f48cade4..000000000 --- a/leading_whitespace.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - leading_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Leading Whitespace

- -

Files should not contain leading whitespace

- -
    -
  • Identifier: leading_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
//
-
-

Triggering Examples

-

-//
-
-
 //
-
- -
-
- - -
-
- - - diff --git a/legacy_cggeometry_functions.html b/legacy_cggeometry_functions.html deleted file mode 100644 index 27238a0c8..000000000 --- a/legacy_cggeometry_functions.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - legacy_cggeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy CGGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_cggeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isNull
-
-
rect.isEmpty
-
-
rect.isInfinite
-
-
rect.standardized
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersect(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓CGRectGetWidth(rect)
-
-
↓CGRectGetHeight(rect)
-
-
↓CGRectGetMinX(rect)
-
-
↓CGRectGetMidX(rect)
-
-
↓CGRectGetMaxX(rect)
-
-
↓CGRectGetMinY(rect)
-
-
↓CGRectGetMidY(rect)
-
-
↓CGRectGetMaxY(rect)
-
-
↓CGRectIsNull(rect)
-
-
↓CGRectIsEmpty(rect)
-
-
↓CGRectIsInfinite(rect)
-
-
↓CGRectStandardize(rect)
-
-
↓CGRectIntegral(rect)
-
-
↓CGRectInset(rect, 10, 5)
-
-
↓CGRectOffset(rect, -2, 8.3)
-
-
↓CGRectUnion(rect1, rect2)
-
-
↓CGRectIntersection(rect1, rect2)
-
-
↓CGRectContainsRect(rect1, rect2)
-
-
↓CGRectContainsPoint(rect, point)
-
-
↓CGRectIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - - diff --git a/legacy_constant.html b/legacy_constant.html deleted file mode 100644 index 1b526d62e..000000000 --- a/legacy_constant.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - legacy_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constant

- -

Struct-scoped constants are preferred over legacy global constants

- -
    -
  • Identifier: legacy_constant
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
CGRect.infinite
-
-
CGPoint.zero
-
-
CGRect.zero
-
-
CGSize.zero
-
-
NSPoint.zero
-
-
NSRect.zero
-
-
NSSize.zero
-
-
CGRect.null
-
-
CGFloat.pi
-
-
Float.pi
-
-

Triggering Examples

-
↓CGRectInfinite
-
-
↓CGPointZero
-
-
↓CGRectZero
-
-
↓CGSizeZero
-
-
↓NSZeroPoint
-
-
↓NSZeroRect
-
-
↓NSZeroSize
-
-
↓CGRectNull
-
-
↓CGFloat(M_PI)
-
-
↓Float(M_PI)
-
- -
-
- - -
-
- - - diff --git a/legacy_constructor.html b/legacy_constructor.html deleted file mode 100644 index 5ab87b324..000000000 --- a/legacy_constructor.html +++ /dev/null @@ -1,505 +0,0 @@ - - - - legacy_constructor Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Constructor

- -

Swift constructors are preferred over legacy convenience functions

- -
    -
  • Identifier: legacy_constructor
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
CGPoint(x: 10, y: 10)
-
-
CGPoint(x: xValue, y: yValue)
-
-
CGSize(width: 10, height: 10)
-
-
CGSize(width: aWidth, height: aHeight)
-
-
CGRect(x: 0, y: 0, width: 10, height: 10)
-
-
CGRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
CGVector(dx: 10, dy: 10)
-
-
CGVector(dx: deltaX, dy: deltaY)
-
-
NSPoint(x: 10, y: 10)
-
-
NSPoint(x: xValue, y: yValue)
-
-
NSSize(width: 10, height: 10)
-
-
NSSize(width: aWidth, height: aHeight)
-
-
NSRect(x: 0, y: 0, width: 10, height: 10)
-
-
NSRect(x: xVal, y: yVal, width: aWidth, height: aHeight)
-
-
NSRange(location: 10, length: 1)
-
-
NSRange(location: loc, length: len)
-
-
UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
UIEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
NSEdgeInsets(top: 0, left: 0, bottom: 10, right: 10)
-
-
NSEdgeInsets(top: aTop, left: aLeft, bottom: aBottom, right: aRight)
-
-
UIOffset(horizontal: 0, vertical: 10)
-
-
UIOffset(horizontal: horizontal, vertical: vertical)
-
-

Triggering Examples

-
↓CGPointMake(10, 10)
-
-
↓CGPointMake(xVal, yVal)
-
-
↓CGPointMake(calculateX(), 10)
-
-
↓CGSizeMake(10, 10)
-
-
↓CGSizeMake(aWidth, aHeight)
-
-
↓CGRectMake(0, 0, 10, 10)
-
-
↓CGRectMake(xVal, yVal, width, height)
-
-
↓CGVectorMake(10, 10)
-
-
↓CGVectorMake(deltaX, deltaY)
-
-
↓NSMakePoint(10, 10)
-
-
↓NSMakePoint(xVal, yVal)
-
-
↓NSMakeSize(10, 10)
-
-
↓NSMakeSize(aWidth, aHeight)
-
-
↓NSMakeRect(0, 0, 10, 10)
-
-
↓NSMakeRect(xVal, yVal, width, height)
-
-
↓NSMakeRange(10, 1)
-
-
↓NSMakeRange(loc, len)
-
-
↓UIEdgeInsetsMake(0, 0, 10, 10)
-
-
↓UIEdgeInsetsMake(top, left, bottom, right)
-
-
↓NSEdgeInsetsMake(0, 0, 10, 10)
-
-
↓NSEdgeInsetsMake(top, left, bottom, right)
-
-
↓CGVectorMake(10, 10)
-↓NSMakeRange(10, 1)
-
-
↓UIOffsetMake(0, 10)
-
-
↓UIOffsetMake(horizontal, vertical)
-
- -
-
- - -
-
- - - diff --git a/legacy_hashing.html b/legacy_hashing.html deleted file mode 100644 index 2b953e3da..000000000 --- a/legacy_hashing.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - legacy_hashing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Hashing

- -

Prefer using the hash(into:) function instead of overriding hashValue

- -
    -
  • Identifier: legacy_hashing
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
class Foo: Hashable {
-  let bar: Int = 10
-
-  func hash(into hasher: inout Hasher) {
-    hasher.combine(bar)
-  }
-}
-
-
var hashValue: Int { return 1 }
-class Foo: Hashable { 
- }
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    return bar
-  }
-}
-
-
class Foo: Hashable {
-  let bar: String = "Foo"
-
-  public var hashValue: String {
-    get { return bar }
-    set { bar = newValue }
-  }
-}
-
-

Triggering Examples

-
struct Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
-
class Foo: Hashable {
-    let bar: Int = 10
-
-    public ↓var hashValue: Int {
-        return bar
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/legacy_multiple.html b/legacy_multiple.html deleted file mode 100644 index fd4b6eb78..000000000 --- a/legacy_multiple.html +++ /dev/null @@ -1,443 +0,0 @@ - - - - legacy_multiple Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Multiple

- -

Prefer using the isMultiple(of:) function instead of using the remainder operator (%)

- -
    -
  • Identifier: legacy_multiple
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row.isMultiple(of: 2) ? .gray : .white
-
-
guard count.isMultiple(of: 2) else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes.isMultiple(of: 4), "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0.isMultiple(of: 2) }) else { return }
-
-
let constant = 56
-let isMultiple = value.isMultiple(of: constant)
-
-
let constant = 56
-let secret = value % constant == 5
-
-
let secretValue = (value % 3) + 2
-
-

Triggering Examples

-
cell.contentView.backgroundColor = indexPath.row ↓% 2 == 0 ? .gray : .white
-
-
cell.contentView.backgroundColor = 0 == indexPath.row ↓% 2 ? .gray : .white
-
-
cell.contentView.backgroundColor = indexPath.row ↓% 2 != 0 ? .gray : .white
-
-
guard count ↓% 2 == 0 else { throw DecodingError.dataCorrupted(...) }
-
-
sanityCheck(bytes > 0 && bytes ↓% 4 == 0, "capacity must be multiple of 4 bytes")
-
-
guard let i = reversedNumbers.firstIndex(where: { $0 ↓% 2 == 0 }) else { return }
-
-
let constant = 56
-let isMultiple = value ↓% constant == 0
-
- -
-
- - -
-
- - - diff --git a/legacy_nsgeometry_functions.html b/legacy_nsgeometry_functions.html deleted file mode 100644 index 1d72405f6..000000000 --- a/legacy_nsgeometry_functions.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - legacy_nsgeometry_functions Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy NSGeometry Functions

- -

Struct extension properties and methods are preferred over legacy functions

- -
    -
  • Identifier: legacy_nsgeometry_functions
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
rect.width
-
-
rect.height
-
-
rect.minX
-
-
rect.midX
-
-
rect.maxX
-
-
rect.minY
-
-
rect.midY
-
-
rect.maxY
-
-
rect.isEmpty
-
-
rect.integral
-
-
rect.insetBy(dx: 5.0, dy: -7.0)
-
-
rect.offsetBy(dx: 5.0, dy: -7.0)
-
-
rect1.union(rect2)
-
-
rect1.intersection(rect2)
-
-
rect1.contains(rect2)
-
-
rect.contains(point)
-
-
rect1.intersects(rect2)
-
-

Triggering Examples

-
↓NSWidth(rect)
-
-
↓NSHeight(rect)
-
-
↓NSMinX(rect)
-
-
↓NSMidX(rect)
-
-
↓NSMaxX(rect)
-
-
↓NSMinY(rect)
-
-
↓NSMidY(rect)
-
-
↓NSMaxY(rect)
-
-
↓NSEqualRects(rect1, rect2)
-
-
↓NSEqualSizes(size1, size2)
-
-
↓NSEqualPoints(point1, point2)
-
-
↓NSEdgeInsetsEqual(insets2, insets2)
-
-
↓NSIsEmptyRect(rect)
-
-
↓NSIntegralRect(rect)
-
-
↓NSInsetRect(rect, 10, 5)
-
-
↓NSOffsetRect(rect, -2, 8.3)
-
-
↓NSUnionRect(rect1, rect2)
-
-
↓NSIntersectionRect(rect1, rect2)
-
-
↓NSContainsRect(rect1, rect2)
-
-
↓NSPointInRect(rect, point)
-
-
↓NSIntersectsRect(rect1, rect2)
-
- -
-
- - -
-
- - - diff --git a/legacy_objc_type.html b/legacy_objc_type.html deleted file mode 100644 index f5f730d64..000000000 --- a/legacy_objc_type.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - legacy_objc_type Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Objective-C Reference Type

- -

Prefer Swift value types to bridged Objective-C reference types

- -
    -
  • Identifier: legacy_objc_type
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var array = Array<Int>()
-
-
var calendar: Calendar? = nil
-
-
var formatter: NSDataDetector
-
-
var className: String = NSStringFromClass(MyClass.self)
-
-
_ = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
-
-
_ = Notification.Name("com.apple.Music.playerInfo")
-
-

Triggering Examples

-
var array = ↓NSArray()
-
-
var calendar: ↓NSCalendar? = nil
-
-
_ = ↓NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData
-
-
_ = ↓NSNotification.Name("com.apple.Music.playerInfo")
-
-
let keyValuePair: (Int) -> (↓NSString, ↓NSString) = {
-  let n = "\($0)" as ↓NSString; return (n, n)
-}
-dictionary = [↓NSString: ↓NSString](uniqueKeysWithValues:
-  (1...10_000).lazy.map(keyValuePair))
-
-
extension Foundation.Notification.Name {
-    static var reachabilityChanged: Foundation.↓NSNotification.Name {
-        return Foundation.Notification.Name("org.wordpress.reachability.changed")
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/legacy_random.html b/legacy_random.html deleted file mode 100644 index d02eb476f..000000000 --- a/legacy_random.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - legacy_random Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Legacy Random

- -

Prefer using type.random(in:) over legacy functions

- -
    -
  • Identifier: legacy_random
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
Int.random(in: 0..<10)
-
-
Double.random(in: 8.6...111.34)
-
-
Float.random(in: 0 ..< 1)
-
-

Triggering Examples

-
↓arc4random()
-
-
↓arc4random_uniform(83)
-
-
↓drand48()
-
- -
-
- - -
-
- - - diff --git a/let_var_whitespace.html b/let_var_whitespace.html deleted file mode 100644 index 0a82dc0fe..000000000 --- a/let_var_whitespace.html +++ /dev/null @@ -1,587 +0,0 @@ - - - - let_var_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Variable Declaration Whitespace

- -

Variable declarations should be separated from other statements by a blank line

- -
    -
  • Identifier: let_var_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-let a = 0
-var x = 1
-
-var y = 2
-}
-
-
class C {
-let a = 5
-
-var x = 1
-}
-
-
class C {
-var a = 0
-}
-
-
class C {
-let a = 1 +
-    2
-let b = 5
-}
-
-
class C {
-var x: Int {
-    return 0
-}
-}
-
-
class C {
-var x: Int {
-    let a = 0
-
-    return a
-}
-}
-
-
class C {
-#if os(macOS)
-let a = 0
-
-func f() {}
-#endif
-}
-
-
class C {
-#warning("TODO: remove it")
-let a = 0
-#warning("TODO: remove it")
-let b = 0
-}
-
-
class C {
-#error("TODO: remove it")
-let a = 0
-}
-
-
class C {
-@available(swift 4)
-let a = 0
-}
-
-
class C {
-@objc
-var s: String = ""
-}
-
-
class C {
-@objc
-func a() {}
-}
-
-
class C {
-var x = 0
-lazy
-var y = 0
-}
-
-
class C {
-@available(OSX, introduced: 10.6)
-@available(*, deprecated)
-var x = 0
-}
-
-
class C {
-// swiftlint:disable superfluous_disable_command
-// swiftlint:disable force_cast
-
-let x = bar as! Bar
-}
-
-
class C {
-@available(swift 4)
-@UserDefault("param", defaultValue: true)
-var isEnabled = true
-
-@Attribute
-func f() {}
-}
-
-
class C {
-var x: Int {
-    let a = 0
-    return a
-}
-}
-
-
a = 2
-
-
a = 2
-
-var b = 3
-
-
#warning("message")
-let a = 2
-
-
#if os(macOS)
-let a = 2
-#endif
-
-
f {
-    let a = 1
-    return a
-}
-
-
func f() {
-    #if os(macOS)
-    let a = 2
-    return a
-    #else
-    return 1
-    #endif
-}
-
-

Triggering Examples

-
class C {
-let a
-↓func x() {}
-}
-
-
class C {
-var x = 0
-↓@objc func f() {}
-}
-
-
class C {
-var x = 0
-↓@objc
-func f() {}
-}
-
-
class C {
-@objc func f() {
-}
-↓var x = 0
-}
-
-
class C {
-func f() {}
-↓@Wapper
-let isNumber = false
-@Wapper
-var isEnabled = true
-↓func g() {}
-}
-
-
class C {
-#if os(macOS)
-let a = 0
-↓func f() {}
-#endif
-}
-
-
let a = 2
-↓b = 1
-
- -
-
- - -
-
- - - diff --git a/line_length.html b/line_length.html deleted file mode 100644 index f00295294..000000000 --- a/line_length.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - line_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Line Length

- -

Lines should not span too many characters.

- -
    -
  • Identifier: line_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -120 -
    -error - -200 -
    -ignores_urls - -false -
    -ignores_function_declarations - -false -
    -ignores_comments - -false -
    -ignores_interpolated_strings - -false -
    -excluded_lines_patterns - -[] -
  • -
-

Non Triggering Examples

-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
-

Triggering Examples

-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
-
- -
-
- - -
-
- - - diff --git a/literal_expression_end_indentation.html b/literal_expression_end_indentation.html deleted file mode 100644 index 79b1c128f..000000000 --- a/literal_expression_end_indentation.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - literal_expression_end_indentation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Literal Expression End Indentation

- -

Array and dictionary literal end should have the same indentation as the line that started it

- -
    -
  • Identifier: literal_expression_end_indentation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2, 3]
-
-
[1,
- 2
-]
-
-
[
-   1,
-   2
-]
-
-
[
-   1,
-   2]
-
-
   let x = [
-       1,
-       2
-   ]
-
-
[key: 2, key2: 3]
-
-
[key: 1,
- key2: 2
-]
-
-
[
-   key: 0,
-   key2: 20
-]
-
-

Triggering Examples

-
let x = [
-   1,
-   2
-   ↓]
-
-
   let x = [
-       1,
-       2
-↓]
-
-
let x = [
-   key: value
-   ↓]
-
- -
-
- - -
-
- - - diff --git a/local_doc_comment.html b/local_doc_comment.html deleted file mode 100644 index 4ede9c585..000000000 --- a/local_doc_comment.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - local_doc_comment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Local Doc Comment

- -

Prefer regular comments over doc comments in local scopes

- -
    -
  • Identifier: local_doc_comment
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo() {
-  // Local scope documentation should use normal comments.
-  print("foo")
-}
-
-
/// My great property
-var myGreatProperty: String!
-
-
/// Look here for more info: https://github.com.
-var myGreatProperty: String!
-
-
/// Look here for more info:
-/// https://github.com.
-var myGreatProperty: String!
-
-

Triggering Examples

-
func foo() {
-  ↓/// Docstring inside a function declaration
-  print("foo")
-}
-
- -
-
- - -
-
- - - diff --git a/lower_acl_than_parent.html b/lower_acl_than_parent.html deleted file mode 100644 index 20fb7dd59..000000000 --- a/lower_acl_than_parent.html +++ /dev/null @@ -1,484 +0,0 @@ - - - - lower_acl_than_parent Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Lower ACL than Parent

- -

Ensure declarations have a lower access control level than their enclosing parent

- -
    -
  • Identifier: lower_acl_than_parent
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
public struct Foo { public func bar() {} }
-
-
internal struct Foo { func bar() {} }
-
-
struct Foo { func bar() {} }
-
-
struct Foo { internal func bar() {} }
-
-
open class Foo { public func bar() {} }
-
-
open class Foo { open func bar() {} }
-
-
fileprivate struct Foo { private func bar() {} }
-
-
private struct Foo { private func bar(id: String) }
-
-
extension Foo { public func bar() {} }
-
-
private struct Foo { fileprivate func bar() {} }
-
-
private func foo(id: String) {}
-
-
private class Foo { func bar() {} }
-
-
public extension Foo { struct Bar { public func baz() {} }}
-
-
public extension Foo { struct Bar { internal func baz() {} }}
-
-
internal extension Foo { struct Bar { internal func baz() {} }}
-
-
extension Foo { struct Bar { internal func baz() {} }}
-
-

Triggering Examples

-
struct Foo { ↓public func bar() {} }
-
-
enum Foo { ↓public func bar() {} }
-
-
public class Foo { ↓open func bar() }
-
-
class Foo { ↓public private(set) var bar: String? }
-
-
private struct Foo { ↓public func bar() {} }
-
-
private class Foo { ↓public func bar() {} }
-
-
private actor Foo { ↓public func bar() {} }
-
-
fileprivate struct Foo { ↓public func bar() {} }
-
-
class Foo { ↓public func bar() {} }
-
-
actor Foo { ↓public func bar() {} }
-
-
private struct Foo { ↓internal func bar() {} }
-
-
fileprivate struct Foo { ↓internal func bar() {} }
-
-
extension Foo { struct Bar { ↓public func baz() {} }}
-
-
internal extension Foo { struct Bar { ↓public func baz() {} }}
-
-
private extension Foo { struct Bar { ↓public func baz() {} }}
-
-
fileprivate extension Foo { struct Bar { ↓public func baz() {} }}
-
-
private extension Foo { struct Bar { ↓internal func baz() {} }}
-
-
fileprivate extension Foo { struct Bar { ↓internal func baz() {} }}
-
-
public extension Foo { struct Bar { struct Baz { ↓public func qux() {} }}}
-
-
final class Foo { ↓public func bar() {} }
-
- -
-
- - -
-
- - - diff --git a/mark.html b/mark.html deleted file mode 100644 index db31dd02f..000000000 --- a/mark.html +++ /dev/null @@ -1,510 +0,0 @@ - - - - mark Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Mark

- -

MARK comment should be in valid format. e.g. ‘// MARK: …’ or ‘// MARK: - …’

- -
    -
  • Identifier: mark
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
// MARK: good
-
-
// MARK: - good
-
-
// MARK: -
-
-
// MARK: - 
-
-
// BOOKMARK
-
-
//BOOKMARK
-
-
// BOOKMARKS
-
-
// MARK: This is good.
-
-
// MARK: - This is good.
-
-
// MARK: --- This is good. ---
-
-
// MARK: – This is dash separator
-
-
// Mark text
-
-
//  MarkdownText.swift
-
-
// MARK: good
-func foo() {
-    let bar = 0
-      // MARK: good
-}
-
-
/*
-func test1() {
-}
-//MARK: mark
-func test2() {
-}
-*/
-
-

Triggering Examples

-
↓//MARK: bad
-
-
↓// MARK:bad
-
-
↓//MARK:bad
-
-
↓//  MARK: bad
-
-
↓// MARK:  bad
-
-
↓// MARK: -bad
-
-
↓// MARK:- bad
-
-
↓// MARK:-bad
-
-
↓//MARK: - bad
-
-
↓//MARK:- bad
-
-
↓//MARK: -bad
-
-
↓//MARK:-bad
-
-
↓//Mark: bad
-
-
↓// Mark: bad
-
-
↓// MARK bad
-
-
↓//MARK bad
-
-
↓// MARK - bad
-
-
↓//MARK : bad
-
-
↓// MARKL:
-
-
↓// MARKR 
-
-
↓// MARKK -
-
-
↓/// MARK:
-
-
↓/// MARK bad
-
-
// MARK: good
-func foo() {
-    let bar = 0
-      ↓//MARK: bad
-}
-
-
↓//MARK:- Top-Level bad mark
-↓//MARK:- Another bad mark
-struct MarkTest {}
-↓// MARK:- Bad mark
-extension MarkTest {}
-
- -
-
- - -
-
- - - diff --git a/missing_docs.html b/missing_docs.html deleted file mode 100644 index 79f230569..000000000 --- a/missing_docs.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - missing_docs Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Missing Docs

- -

Declarations should be documented.

- -
    -
  • Identifier: missing_docs
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -[open, public] -
    -excludes_extensions - -true -
    -excludes_inherited_types - -true -
    -excludes_trivial_init - -false -
    -evaluate_effective_access_control_level - -false -
  • -
-

Non Triggering Examples

-
/// docs
-public class A {
-/// docs
-public func b() {}
-}
-// no docs
-public class B: A { override public func b() {} }
-
-
import Foundation
-// no docs
-public class B: NSObject {
-// no docs
-override public var description: String { fatalError() } }
-
-
/// docs
-public class A {
-    var j = 1
-    var i: Int { 1 }
-    func f() {}
-    deinit {}
-}
-
-
public extension A {}
-
-
enum E {
-    case A
-}
-
-
//
-// excludes_trivial_init: true
-//
-
-/// docs
-public class A {
-    public init() {}
-}
-
-
-
//
-// evaluate_effective_access_control_level: true
-//
-
-class C {
-    public func f() {}
-}
-
-
-
public struct S: ~Copyable, P {
-    public init() {}
-}
-
-

Triggering Examples

-
public ↓func a() {}
-
-
// regular comment
-public ↓func a() {}
-
-
/* regular comment */
-public ↓func a() {}
-
-
/// docs
-public protocol A {
-    // no docs
-    ↓var b: Int { get }
-}
-/// docs
-public struct C: A {
-    public let b: Int
-}
-
-
/// a doc
-public class C {
-    public static ↓let i = 1
-}
-
-
public extension A {
-    public ↓func f() {}
-    static ↓var i: Int { 1 }
-    ↓struct S {
-        func f() {}
-    }
-    ↓class C {
-        func f() {}
-    }
-    ↓actor A {
-        func f() {}
-    }
-    ↓enum E {
-        ↓case a
-        func f() {}
-    }
-}
-
-
public extension A {
-    ↓enum E {
-        enum Inner {
-            case a
-        }
-    }
-}
-
-
extension E {
-    public ↓struct S {
-        public static ↓let i = 1
-    }
-}
-
-
extension E {
-    public ↓func f() {}
-}
-
-
//
-// excludes_trivial_init: true
-//
-
-/// docs
-public class A {
-    public ↓init(argument: String) {}
-}
-
-
-
//
-// excludes_inherited_types: false
-//
-
-public ↓struct C: A {
-    public ↓let b: Int
-}
-
-
-
//
-// excludes_extensions: false
-//
-
-public ↓extension A {
-    public ↓func f() {}
-}
-
-
-
public extension E {
-    ↓var i: Int {
-        let j = 1
-        func f() {}
-        return j
-    }
-}
-
-
#if os(macOS)
-public ↓func f() {}
-#endif
-
-
public ↓enum E {
-    ↓case A, B
-    func f() {}
-    init(_ i: Int) { self = .A }
-}
-
-
/// a doc
-public struct S {}
-public extension S {
-    ↓enum E {
-        ↓case A
-    }
-}
-
-
//
-// evaluate_effective_access_control_level: false
-//
-
-class C {
-    public ↓func f() {}
-}
-
-
-
public ↓struct S: ~Copyable, ~Escapable {
-    public ↓init() {}
-}
-
- -
-
- - -
-
- - - diff --git a/modifier_order.html b/modifier_order.html deleted file mode 100644 index 5adf07544..000000000 --- a/modifier_order.html +++ /dev/null @@ -1,607 +0,0 @@ - - - - modifier_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Modifier Order

- -

Modifier order should be consistent.

- -
    -
  • Identifier: modifier_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -preferred_modifier_order - -[override, acl, setterACL, dynamic, mutators, lazy, final, required, convenience, typeMethods, owned] -
  • -
-

Non Triggering Examples

-
public class Foo {
-   public required convenience init() {}
-}
-
-
public class Foo {
-   public static let bar = 42
-}
-
-
public class Foo {
-   public static var bar: Int {
-       return
-   }
-}
-
-
public class Foo {
-   public class var bar: Int {
-       return 42
-   }
-}
-
-
public class Bar {
-   public class var foo: String {
-       return "foo"
-   }
-}
-public class Foo: Bar {
-   override public final class var foo: String {
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-   override public var foo: Int? {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   override open class func foo() -> Int {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-class Bar {
-    public private(set) weak var foo: Foo?
-}
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objcMembers
-public final class Foo: NSObject {}
-
-
@objc
-override public private(set) weak var foo: Bar?
-
-
@objc
-public final class Foo: NSObject {}
-
-
@objc
-open final class Foo: NSObject {
-   open weak var weakBar: NSString? = nil
-}
-
-
public final class Foo {}
-
-
class Bar {
-   func bar() {}
-}
-
-
internal class Foo: Bar {
-   override internal func bar() {}
-}
-
-
public struct Foo {
-   internal weak var weakBar: NSObject? = nil
-}
-
-
class Foo {
-   internal lazy var bar: String = "foo"
-}
-
-

Triggering Examples

-
class Foo {
-   convenience required public init() {}
-}
-
-
public class Foo {
-   static public let bar = 42
-}
-
-
public class Foo {
-   static public var bar: Int {
-       return 42
-   }
-}
-
-
public class Foo {
-   class public var bar: Int {
-       return 42
-   }
-}
-
-
public class RootFoo {
-   class public var foo: String {
-       return "foo"
-   }
-}
-public class Foo: RootFoo {
-   override final class public var foo: String
-       return "bar"
-   }
-}
-
-
open class Bar {
-   public var foo: Int? {
-       return 42
-   }
-}
-open class Foo: Bar {
-    public override var foo: Int? {
-       return 43
-   }
-}
-
-
protocol Foo: class {}
-    class Bar {
-        private(set) public weak var foo: Foo?
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   class open override func foo() -> Int {
-       return 43
-   }
-}
-
-
open class Bar {
-   open class func foo() -> Int {
-       return 42
-   }
-}
-class Foo: Bar {
-   open override class func foo() -> Int {
-       return 43
-   }
-}
-
-
@objc
-final public class Foo: NSObject {}
-
-
@objcMembers
-final public class Foo: NSObject {}
-
-
@objc
-final open class Foo: NSObject {
-   weak open var weakBar: NSString? = nil
-}
-
-
final public class Foo {}
-
-
internal class Foo: Bar {
-   internal override func bar() {}
-}
-
-
public struct Foo {
-   weak internal var weakBar: NSObjetc? = nil
-}
-
-
class Foo {
-   lazy internal var bar: String = "foo"
-}
-
- -
-
- - -
-
- - - diff --git a/multiline_arguments.html b/multiline_arguments.html deleted file mode 100644 index 103211ffb..000000000 --- a/multiline_arguments.html +++ /dev/null @@ -1,513 +0,0 @@ - - - - multiline_arguments Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments

- -

Arguments should be either on the same line, or one per line

- -
    -
  • Identifier: multiline_arguments
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -first_argument_location - -any_line -
    -only_enforce_after_first_closure_on_first_line - -false -
  • -
-

Non Triggering Examples

-
foo()
-
-
foo(
-)
-
-
foo { }
-
-
foo {
-
-}
-
-
foo(0)
-
-
foo(0, 1)
-
-
foo(0, 1) { }
-
-
foo(0, param1: 1)
-
-
foo(0, param1: 1) { }
-
-
foo(param1: 1)
-
-
foo(param1: 1) { }
-
-
foo(param1: 1, param2: true) { }
-
-
foo(param1: 1, param2: true, param3: [3]) { }
-
-
foo(param1: 1, param2: true, param3: [3]) {
-    bar()
-}
-
-
foo(param1: 1,
-    param2: true,
-    param3: [3])
-
-
foo(
-    param1: 1, param2: true, param3: [3]
-)
-
-
foo(
-    param1: 1,
-    param2: true,
-    param3: [3]
-)
-
-
Picker(selection: viewStore.binding(\.$someProperty)) {
-   ForEach(SomeEnum.allCases, id: \.rawValue) { someCase in
-      Text(someCase.rawValue)
-         .tag(someCase)
-   }
-} label: {
-   EmptyView()
-}
-
-
UIView.animate(withDuration: 1,
-               delay: 0) {
-    // sample
-    print("a")
-} completion: { _ in
-    // sample
-    print("b")
-}
-
-
UIView.animate(withDuration: 1, delay: 0) {
-    print("a")
-} completion: { _ in
-    print("b")
-}
-
-

Triggering Examples

-
foo(0,
-    param1: 1, ↓param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1,
-    param2: true, ↓param3: [3])
-
-
foo(0, ↓param1: 1, ↓param2: true,
-    param3: [3])
-
-
foo(
-    0, ↓param1: 1,
-    param2: true, ↓param3: [3]
-)
-
- -
-
- - -
-
- - - diff --git a/multiline_arguments_brackets.html b/multiline_arguments_brackets.html deleted file mode 100644 index c9c280387..000000000 --- a/multiline_arguments_brackets.html +++ /dev/null @@ -1,520 +0,0 @@ - - - - multiline_arguments_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Arguments Brackets

- -

Multiline arguments should have their surrounding brackets in a new line

- -
    -
  • Identifier: multiline_arguments_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo(param1: "Param1", param2: "Param2", param3: "Param3")
-
-
foo(
-    param1: "Param1", param2: "Param2", param3: "Param3"
-)
-
-
func foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"
-)
-
-
foo { param1, param2 in
-    print("hello world")
-}
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-    )
-)
-
-
AlertViewModel.AlertAction(title: "some title", style: .default) {
-    AlertManager.shared.presentNextDebugAlert()
-}
-
-
public final class Logger {
-    public static let shared = Logger(outputs: [
-        OSLoggerOutput(),
-        ErrorLoggerOutput()
-    ])
-}
-
-
let errors = try self.download([
-    (description: description, priority: priority),
-])
-
-
return SignalProducer({ observer, _ in
-    observer.sendCompleted()
-}).onMainQueue()
-
-
SomeType(a: [
-    1, 2, 3
-], b: [1, 2])
-
-
SomeType(
-  a: 1
-) { print("completion") }
-
-
SomeType(
-  a: 1
-) {
-  print("completion")
-}
-
-
SomeType(
-  a: .init() { print("completion") }
-)
-
-
SomeType(
-  a: .init() {
-    print("completion")
-  }
-)
-
-
SomeType(
-  a: 1
-) {} onError: {}
-
-

Triggering Examples

-
foo(↓param1: "Param1", param2: "Param2",
-         param3: "Param3"
-)
-
-
foo(
-    param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"↓)
-
-
foo(↓param1: "Param1",
-    param2: "Param2",
-    param3: "Param3"↓)
-
-
foo(↓bar(
-    x: 5,
-    y: 7
-)
-)
-
-
foo(
-    bar(
-        x: 5,
-        y: 7
-)↓)
-
-
SomeOtherType(↓a: [
-        1, 2, 3
-    ],
-    b: "two"↓)
-
-
SomeOtherType(
-  a: 1↓) {}
-
-
SomeOtherType(
-  a: 1↓) {
-  print("completion")
-}
-
- -
-
- - -
-
- - - diff --git a/multiline_function_chains.html b/multiline_function_chains.html deleted file mode 100644 index 8b8d8006b..000000000 --- a/multiline_function_chains.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - multiline_function_chains Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Function Chains

- -

Chained function calls should be either on the same line, or one per line

- -
    -
  • Identifier: multiline_function_chains
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4].filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)
-
-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }.map { $0 * $0 }.reduce(0, +)",
-
-
let chain = a
-    .b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c { blah in print(blah) }
-    .d()
-
-
let chain = a.b(1, 2, 3)
-    .c(.init(
-        a: 1,
-        b, 2,
-        c, 3))
-    .d()
-
-
self.viewModel.outputs.postContextualNotification
-  .observeForUI()
-  .observeValues {
-    NotificationCenter.default.post(
-      Notification(
-        name: .ksr_showNotificationsDialog,
-        userInfo: [UserInfoKeys.context: PushNotificationDialog.Context.pledge,
-                   UserInfoKeys.viewController: self]
-     )
-    )
-  }
-
-
let remainingIDs = Array(Set(self.currentIDs).subtracting(Set(response.ids)))
-
-
self.happeningNewsletterOn = self.updateCurrentUser
-    .map { $0.newsletters.happening }.skipNil().skipRepeats()
-
-

Triggering Examples

-
let evenSquaresSum = [20, 17, 35, 4]
-    .filter { $0 % 2 == 0 }↓.map { $0 * $0 }
-    .reduce(0, +)
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c { blah in
-        print(blah)
-    }↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)
-    .c(2, 3, 4)↓.d()
-
-
let evenSquaresSum = a.b(1, 2, 3)↓.c { blah in
-        print(blah)
-    }
-    .d()
-
-
a.b {
-//  ““
-}↓.e()
-
- -
-
- - -
-
- - - diff --git a/multiline_literal_brackets.html b/multiline_literal_brackets.html deleted file mode 100644 index dcde42c68..000000000 --- a/multiline_literal_brackets.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - multiline_literal_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Literal Brackets

- -

Multiline literals should have their surrounding brackets in a new line

- -
    -
  • Identifier: multiline_literal_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let trio = ["harry", "ronald", "hermione"]
-let houseCup = ["gryffindor": 460, "hufflepuff": 370, "ravenclaw": 410, "slytherin": 450]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"
-]
-let houseCup = [
-    "gryffindor": 460,
-    "hufflepuff": 370,
-    "ravenclaw": 410,
-    "slytherin": 450
-]
-
-
let trio = [
-    "harry", "ronald", "hermione"
-]
-let houseCup = [
-    "gryffindor": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450
-]
-
-
_ = [
-    1,
-    2,
-    3,
-    4,
-    5, 6,
-    7, 8, 9
-]
-
-

Triggering Examples

-
let trio = [↓"harry",
-            "ronald",
-            "hermione"
-]
-
-
let houseCup = [↓"gryffindor": 460, "hufflepuff": 370,
-                "ravenclaw": 410, "slytherin": 450
-]
-
-
let houseCup = [↓"gryffindor": 460,
-                "hufflepuff": 370,
-                "ravenclaw": 410,
-                "slytherin": 450↓]
-
-
let trio = [
-    "harry",
-    "ronald",
-    "hermione"↓]
-
-
let houseCup = [
-    "gryffindor": 460, "hufflepuff": 370,
-    "ravenclaw": 410, "slytherin": 450↓]
-
-
class Hogwarts {
-    let houseCup = [
-        "gryffindor": 460, "hufflepuff": 370,
-        "ravenclaw": 410, "slytherin": 450↓]
-}
-
-
_ = [
-    1,
-    2,
-    3,
-    4,
-    5, 6,
-    7, 8, 9↓]
-
-
_ = [↓1, 2, 3,
-     4, 5, 6,
-     7, 8, 9
-]
-
-
class Hogwarts {
-    let houseCup = [
-        "gryffindor": 460, "hufflepuff": 370,
-        "ravenclaw": 410, "slytherin": slytherinPoints.filter {
-            $0.isValid
-        }.sum()↓]
-}
-
- -
-
- - -
-
- - - diff --git a/multiline_parameters.html b/multiline_parameters.html deleted file mode 100644 index 480c83b0d..000000000 --- a/multiline_parameters.html +++ /dev/null @@ -1,844 +0,0 @@ - - - - multiline_parameters Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters

- -

Functions and methods parameters should be either on the same line, or one per line

- -
    -
  • Identifier: multiline_parameters
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allows_single_line - -true -
  • -
-

Non Triggering Examples

-
func foo() { }
-
-
func foo(param1: Int) { }
-
-
func foo(param1: Int, param2: Bool) { }
-
-
func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
func foo(param1: Int,
-         param2: Bool,
-         param3: [String]) { }
-
-
func foo(_ param1: Int, param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
static func foo() { }
-
-
static func foo(param1: Int) { }
-
-
static func foo(param1: Int, param2: Bool) { }
-
-
static func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
static func foo(param1: Int,
-                param2: Bool,
-                param3: [String]) { }
-
-
protocol Foo {
-    func foo() { }
-}
-
-
protocol Foo {
-    func foo(param1: Int) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
protocol Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
protocol Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
protocol Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
enum Foo {
-    func foo() { }
-}
-
-
enum Foo {
-    func foo(param1: Int) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
enum Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
enum Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
struct Foo {
-    func foo() { }
-}
-
-
struct Foo {
-    func foo(param1: Int) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
struct Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
struct Foo {
-    static func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func foo(param1: Int,
-                   param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-    func foo() { }
-}
-
-
class Foo {
-    func foo(param1: Int) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool) { }
-}
-
-
class Foo {
-    func foo(param1: Int, param2: Bool, param3: [String]) { }
-    }
-
-
class Foo {
-   func foo(param1: Int,
-            param2: Bool,
-            param3: [String]) { }
-}
-
-
class Foo {
-    class func foo(param1: Int, param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: [String]) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = nil) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: Bool) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: @escaping ((Int) -> Void)? = { _ in },
-                  param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
class Foo {
-   class func foo(param1: Int,
-                  param2: Bool,
-                  param3: @escaping (Int, (Int) -> Void) -> Void = { (x: Int, f: (Int) -> Void) in }) { }
-}
-
-
class Foo {
-   init(param1: Int,
-        param2: Bool,
-        param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
//
-// allows_single_line: false
-//
-
-func foo() { }
-
-
-
//
-// allows_single_line: false
-//
-
-func foo(param1: Int) { }
-
-
-
//
-// allows_single_line: false
-//
-
-protocol Foo {
-    func foo(param1: Int,
-             param2: Bool,
-             param3: [String]) { }
-}
-
-
-
//
-// allows_single_line: false
-//
-
-protocol Foo {
-    func foo(
-        param1: Int
-    ) { }
-}
-
-
-
//
-// allows_single_line: false
-//
-
-protocol Foo {
-    func foo(
-        param1: Int,
-        param2: Bool,
-        param3: [String]
-    ) { }
-}
-
-
-
//
-// max_number_of_single_line_parameters: 3
-//
-
-func foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
-
//
-// max_number_of_single_line_parameters: 3
-//
-
-func foo(param1: Int,
-         param2: Bool,
-         param3: [String]) { }
-
-
-

Triggering Examples

-
func ↓foo(_ param1: Int,
-          param2: Int, param3: Int) -> (Int) -> Int {
-   return { x in x + param1 + param2 + param3 }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
protocol Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
enum Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int,
-                    param2: Bool, param3: [String]) { }
-}
-
-
struct Foo {
-   static func ↓foo(param1: Int, param2: Bool,
-                    param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int,
-             param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   func ↓foo(param1: Int, param2: Bool,
-             param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                   param2: Bool, param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int, param2: Bool,
-                   param3: [String]) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int, Int) -> Void = { _, _ in }) { }
-}
-
-
class Foo {
-   class func ↓foo(param1: Int,
-                  param2: Bool, param3: @escaping (Int) -> Void = { (x: Int) in }) { }
-}
-
-
class Foo {
-  ↓init(param1: Int, param2: Bool,
-        param3: @escaping ((Int) -> Void)? = { _ in }) { }
-}
-
-
//
-// allows_single_line: false
-//
-
-func ↓foo(param1: Int, param2: Bool) { }
-
-
-
//
-// allows_single_line: false
-//
-
-func ↓foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
-
//
-// max_number_of_single_line_parameters: 2
-//
-
-func ↓foo(param1: Int, param2: Bool, param3: [String]) { }
-
-
-
//
-// max_number_of_single_line_parameters: 3
-//
-
-func ↓foo(param1: Int,
-          param2: Bool, param3: [String]) { }
-
-
- -
-
- - -
-
- - - diff --git a/multiline_parameters_brackets.html b/multiline_parameters_brackets.html deleted file mode 100644 index 4392bd562..000000000 --- a/multiline_parameters_brackets.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - multiline_parameters_brackets Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiline Parameters Brackets

- -

Multiline parameters should have their surrounding brackets in a new line

- -
    -
  • Identifier: multiline_parameters_brackets
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo(param1: String, param2: String, param3: String)
-
-
func foo(
-    param1: String, param2: String, param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String
-)
-
-
class SomeType {
-    func foo(param1: String, param2: String, param3: String)
-}
-
-
class SomeType {
-    func foo(
-        param1: String, param2: String, param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String
-    )
-}
-
-
func foo<T>(param1: T, param2: String, param3: String) -> T { /* some code */ }
-
-
    func foo(a: [Int] = [
-        1
-    ])
-
-

Triggering Examples

-
func foo(↓param1: String, param2: String,
-         param3: String
-)
-
-
func foo(
-    param1: String,
-    param2: String,
-    param3: String↓)
-
-
class SomeType {
-    func foo(↓param1: String, param2: String,
-             param3: String
-    )
-}
-
-
class SomeType {
-    func foo(
-        param1: String,
-        param2: String,
-        param3: String↓)
-}
-
-
func foo<T>(↓param1: T, param2: String,
-         param3: String
-) -> T
-
- -
-
- - -
-
- - - diff --git a/multiple_closures_with_trailing_closure.html b/multiple_closures_with_trailing_closure.html deleted file mode 100644 index e86bbd134..000000000 --- a/multiple_closures_with_trailing_closure.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - multiple_closures_with_trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Multiple Closures with Trailing Closure

- -

Trailing closure syntax should not be used when passing more than one closure argument

- -
    -
  • Identifier: multiple_closures_with_trailing_closure
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
foo.reduce(0) { $0 + $1 }
-
-
if let foo = bar.map({ $0 + 1 }) {
-
-}
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
UIView.animate(withDuration: 1.0) {
-    someView.alpha = 0.0
-}
-
-
foo.method { print(0) } arg2: { print(1) }
-
-
foo.methodWithParenArgs((0, 1), arg2: (0, 1, 2)) { $0 } arg4: { $0 }
-
-

Triggering Examples

-
foo.something(param1: { $0 }) ↓{ $0 + 1 }
-
-
UIView.animate(withDuration: 1.0, animations: {
-    someView.alpha = 0.0
-}) ↓{ _ in
-    someView.removeFromSuperview()
-}
-
-
foo.multipleTrailing(arg1: { $0 }) { $0 } arg3: { $0 }
-
-
foo.methodWithParenArgs(param1: { $0 }, param2: (0, 1), (0, 1)) { $0 }
-
- -
-
- - -
-
- - - diff --git a/nesting.html b/nesting.html deleted file mode 100644 index fa38cf11b..000000000 --- a/nesting.html +++ /dev/null @@ -1,1606 +0,0 @@ - - - - nesting Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nesting

- -

Types should be nested at most 1 level deep, and functions should be nested at most 2 levels deep.

- -
    -
  • Identifier: nesting
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -type_level - - - - - - - - - - - -
    KeyValue
    -warning - -1 -
    -
    -function_level - - - - - - - - - - - -
    KeyValue
    -warning - -2 -
    -
    -check_nesting_in_closures_and_statements - -true -
    -always_allow_one_type_in_functions - -false -
    -ignore_typealiases_and_associatedtypes - -false -
  • -
-

Non Triggering Examples

-
actor Example_0 {
-    actor Example_1 {}
-}
-
-
var example: Int {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            actor Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    actor Example_1 {}
-}
-
-
class Example_0 {
-    class Example_1 {}
-}
-
-
var example: Int {
-    class Example_0 {
-        class Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            class Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    class Example_1 {}
-}
-
-
struct Example_0 {
-    struct Example_1 {}
-}
-
-
var example: Int {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            struct Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    struct Example_1 {}
-}
-
-
enum Example_0 {
-    enum Example_1 {}
-}
-
-
var example: Int {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            enum Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    enum Example_1 {}
-}
-
-
func f_0() {
-    func f_1() {
-        func f_2() {}
-    }
-}
-
-
var example: Int {
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        func f_0() {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
switch example {
-case .exampleCase:
-    actor Example_0 {
-        actor Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    class Example_0 {
-        class Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    class Example_0 {
-        class Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    class Example_0 {
-        class Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    struct Example_0 {
-        struct Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    enum Example_0 {
-        enum Example_1 {}
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {}
-        }
-    }
-})
-
-
actor Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    actor Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
class Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    class Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
struct Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    struct Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
enum Example_0 {
-    protocol Example_1 {}
-}
-
-
var example: Int {
-    enum Example_0 {
-        protocol Example_1 {}
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            protocol Example_1 {}
-        }
-    }
-}
-
-
extension Example_0 {
-    protocol Example_1 {}
-}
-
-
actor Example_0 {
-    func f_0() {
-        actor Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
actor Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            actor Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                actor Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        class Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            class Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        struct Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        enum Example_1 {
-            func f_1() {
-                func f_2() {}
-            }
-        }
-        protocol P {}
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {}
-                }
-            }
-            protocol P {}
-        default:
-            exampleFunc(closure: {
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {}
-                    }
-                }
-                protocol P {}
-            })
-        }
-    }
-}
-
-

Triggering Examples

-
actor Example_0 {
-    actor Example_1 {
-        ↓actor Example_2 {}
-    }
-}
-
-
var example: Int {
-    actor Example_0 {
-        actor Example_1 {
-            ↓actor Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            actor Example_1 {
-                ↓actor Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    actor Example_1 {
-        ↓actor Example_2 {}
-    }
-}
-
-
class Example_0 {
-    class Example_1 {
-        ↓class Example_2 {}
-    }
-}
-
-
var example: Int {
-    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            class Example_1 {
-                ↓class Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    class Example_1 {
-        ↓class Example_2 {}
-    }
-}
-
-
struct Example_0 {
-    struct Example_1 {
-        ↓struct Example_2 {}
-    }
-}
-
-
var example: Int {
-    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            struct Example_1 {
-                ↓struct Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    struct Example_1 {
-        ↓struct Example_2 {}
-    }
-}
-
-
enum Example_0 {
-    enum Example_1 {
-        ↓enum Example_2 {}
-    }
-}
-
-
var example: Int {
-    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            enum Example_1 {
-                ↓enum Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    enum Example_1 {
-        ↓enum Example_2 {}
-    }
-}
-
-
func f_0() {
-    func f_1() {
-        func f_2() {
-            ↓func f_3() {}
-        }
-    }
-}
-
-
var example: Int {
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        func f_0() {
-            func f_1() {
-                func f_2() {
-                    ↓func f_3() {}
-                }
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
switch example {
-case .exampleCase:
-    actor Example_0 {
-        actor Example_1 {
-            ↓actor Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    actor Example_0 {
-        actor Example_1 {
-            ↓actor Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    actor Example_0 {
-        actor Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    class Example_0 {
-        class Example_1 {
-            ↓class Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    class Example_0 {
-        class Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    struct Example_0 {
-        struct Example_1 {
-            ↓struct Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    struct Example_0 {
-        struct Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
switch example {
-case .exampleCase:
-    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-    }
-default:
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
var exampleClosure: () -> Void = {
-    enum Example_0 {
-        enum Example_1 {
-            ↓enum Example_2 {}
-        }
-        }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-}
-
-
exampleFunc(closure: {
-    enum Example_0 {
-        enum Example_1 {}
-    }
-    func f_0() {
-        func f_1() {
-            func f_2() {
-                ↓func f_3() {}
-            }
-        }
-    }
-})
-
-
actor Example_0 {
-    actor Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    actor Example_0 {
-        actor Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        actor Example_0 {
-            actor Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    actor Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
class Example_0 {
-    class Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    class Example_0 {
-        class Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        class Example_0 {
-            class Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    class Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
struct Example_0 {
-    struct Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    struct Example_0 {
-        struct Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        struct Example_0 {
-            struct Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    struct Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
enum Example_0 {
-    enum Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
var example: Int {
-    enum Example_0 {
-        enum Example_1 {
-            ↓protocol Example_2 {}
-        }
-    }
-    return 5
-}
-
-
var example: Int = 5 {
-    didSet {
-        enum Example_0 {
-            enum Example_1 {
-                ↓protocol Example_2 {}
-            }
-        }
-    }
-}
-
-
extension Example_0 {
-    enum Example_1 {
-        ↓protocol Example_2 {}
-    }
-}
-
-
actor Example_0 {
-    func f_0() {
-        actor Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓actor Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
actor Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            actor Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓actor Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                actor Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓actor Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        class Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓class Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
class Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            class Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓class Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                class Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓class Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        struct Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓struct Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
struct Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            struct Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓struct Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                struct Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓struct Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        enum Example_1 {
-            func f_1() {
-                func f_2() {
-                    ↓enum Example_2 {}
-                    ↓func f_3() {}
-                    ↓protocol P {}
-                }
-            }
-        }
-    }
-}
-
-
enum Example_0 {
-    func f_0() {
-        switch example {
-        case .exampleCase:
-            enum Example_1 {
-                func f_1() {
-                    func f_2() {
-                        ↓enum Example_2 {}
-                        ↓func f_3() {}
-                        ↓protocol P {}
-                    }
-                }
-            }
-        default:
-            exampleFunc(closure: {
-                enum Example_1 {
-                    func f_1() {
-                        func f_2() {
-                            ↓enum Example_2 {}
-                            ↓func f_3() {}
-                            ↓protocol P {}
-                        }
-                    }
-                }
-            })
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/nimble_operator.html b/nimble_operator.html deleted file mode 100644 index d9f75a80f..000000000 --- a/nimble_operator.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - nimble_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Nimble Operator

- -

Prefer Nimble operator overloads over free matcher functions

- -
    -
  • Identifier: nimble_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
expect(seagull.squawk) != "Hi!"
-
-
expect("Hi!") == "Hi!"
-
-
expect(10) > 2
-
-
expect(10) >= 10
-
-
expect(10) < 11
-
-
expect(10) <= 10
-
-
expect(x) === x
-
-
expect(10) == 10
-
-
expect(success) == true
-
-
expect(value) == nil
-
-
expect(value) != nil
-
-
expect(object.asyncFunction()).toEventually(equal(1))
-
-
expect(actual).to(haveCount(expected))
-
-
foo.method {
-    expect(value).to(equal(expectedValue), description: "Failed")
-    return Bar(value: ())
-}
-
-

Triggering Examples

-
↓expect(seagull.squawk).toNot(equal("Hi"))
-
-
↓expect(12).toNot(equal(10))
-
-
↓expect(10).to(equal(10))
-
-
↓expect(10, line: 1).to(equal(10))
-
-
↓expect(10).to(beGreaterThan(8))
-
-
↓expect(10).to(beGreaterThanOrEqualTo(10))
-
-
↓expect(10).to(beLessThan(11))
-
-
↓expect(10).to(beLessThanOrEqualTo(10))
-
-
↓expect(x).to(beIdenticalTo(x))
-
-
↓expect(success).to(beTrue())
-
-
↓expect(success).to(beFalse())
-
-
↓expect(value).to(beNil())
-
-
↓expect(value).toNot(beNil())
-
-
expect(10) > 2
- ↓expect(10).to(beGreaterThan(2))
-
- -
-
- - -
-
- - - diff --git a/no_empty_block.html b/no_empty_block.html deleted file mode 100644 index 1d4f4b8dc..000000000 --- a/no_empty_block.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - no_empty_block Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Empty Block

- -

Code blocks should contain at least one statement or comment

- -
    -
  • Identifier: no_empty_block
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -disabled_block_types - -[] -
  • -
-

Non Triggering Examples

-
func f() {
-    /* do something */
-}
-
-var flag = true {
-    willSet { /* do something */ }
-}
-
-
class Apple {
-    init() { /* do something */ }
-
-    deinit { /* do something */ }
-}
-
-
for _ in 0..<10 { /* do something */ }
-
-do {
-    /* do something */
-} catch {
-    /* do something */
-}
-
-func f() {
-    defer {
-        /* do something */
-    }
-    print("other code")
-}
-
-if flag {
-    /* do something */
-} else {
-    /* do something */
-}
-
-repeat { /* do something */ } while (flag)
-
-while i < 10 { /* do something */ }
-
-
//
-// disabled_block_types: [function_bodies]
-//
-
-func f() {}
-
-var flag = true {
-    willSet {}
-}
-
-
-
//
-// disabled_block_types: [initializer_bodies]
-//
-
-class Apple {
-    init() {}
-
-    deinit {}
-}
-
-
-
//
-// disabled_block_types: [statement_blocks]
-//
-
-for _ in 0..<10 {}
-
-do {
-} catch {
-}
-
-func f() {
-    defer {}
-    print("other code")
-}
-
-if flag {
-} else {
-}
-
-repeat {} while (flag)
-
-while i < 10 {}
-
-
-
f { _ in /* comment */ }
-f { _ in // comment
-}
-f { _ in
-    // comment
-}
-
-
//
-// disabled_block_types: [closure_blocks]
-//
-
-f {}
-{}()
-
-
-

Triggering Examples

-
func f() ↓{}
-
-var flag = true {
-    willSet ↓{}
-}
-
-
class Apple {
-    init() ↓{}
-
-    deinit ↓{}
-}
-
-
for _ in 0..<10 ↓{}
-
-do ↓{
-} catch ↓{
-}
-
-func f() {
-    defer ↓{}
-    print("other code")
-}
-
-if flag ↓{
-} else ↓{
-}
-
-repeat ↓{} while (flag)
-
-while i < 10 ↓{}
-
-
f ↓{}
-
-
Button ↓{} label: ↓{}
-
- -
-
- - -
-
- - - diff --git a/no_extension_access_modifier.html b/no_extension_access_modifier.html deleted file mode 100644 index b76901ca8..000000000 --- a/no_extension_access_modifier.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - no_extension_access_modifier Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Extension Access Modifier

- -

Prefer not to use extension access modifiers

- -
    -
  • Identifier: no_extension_access_modifier
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
extension String {}
-
-

-
- extension String {}
-
-

Triggering Examples

-
↓private extension String {}
-
-
↓public 
- extension String {}
-
-
↓open extension String {}
-
-
↓internal extension String {}
-
-
↓fileprivate extension String {}
-
- -
-
- - -
-
- - - diff --git a/no_fallthrough_only.html b/no_fallthrough_only.html deleted file mode 100644 index 60427c4b5..000000000 --- a/no_fallthrough_only.html +++ /dev/null @@ -1,548 +0,0 @@ - - - - no_fallthrough_only Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Fallthrough only

- -

Fallthroughs can only be used if the case contains at least one other statement

- -
    -
  • Identifier: no_fallthrough_only
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch myvar {
-case 1:
-    var a = 1
-    fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case "a":
-    var one = 1
-    var two = 2
-    fallthrough
-case "b": /* comment */
-    var three = 3
-}
-
-
switch myvar {
-case 1:
-    let one = 1
-case 2:
-    // comment
-    var two = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    var three = 3
-    fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    var three = 3
-    fallthrough
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    let B = "B"
-    fallthrough
-default:
-    let C = "C"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    let one = 1
-    fallthrough
-case "abc":
-    let two = 2
-}
-
-
switch enumInstance {
-case .caseA:
-    print("it's a")
-case .caseB:
-    fallthrough
-@unknown default:
-    print("it's not a")
-}
-
-

Triggering Examples

-
switch myvar {
-case 1:
-    ↓fallthrough
-case 2:
-    var a = 1
-}
-
-
switch myvar {
-case 1:
-    var a = 2
-case 2:
-    ↓fallthrough
-case 3:
-    var a = 3
-}
-
-
switch myvar {
-case 1: // comment
-    ↓fallthrough
-}
-
-
switch myvar {
-case 1: /* multi
-    line
-    comment */
-    ↓fallthrough
-case 2:
-    var a = 2
-}
-
-
switch myvar {
-case MyFunc(x: [1, 2, YourFunc(a: 23)], y: 2):
-    ↓fallthrough
-default:
-    var three = 4
-}
-
-
switch myvar {
-case .alpha:
-    var one = 1
-case .beta:
-    ↓fallthrough
-case .gamma:
-    var three = 3
-default:
-    var four = 4
-}
-
-
let aPoint = (1, -1)
-switch aPoint {
-case let (x, y) where x == y:
-    let A = "A"
-case let (x, y) where x == -y:
-    ↓fallthrough
-default:
-    let B = "B"
-}
-
-
switch myvar {
-case MyFun(with: { $1 }):
-    ↓fallthrough
-case "abc":
-    let two = 2
-}
-
- -
-
- - -
-
- - - diff --git a/no_grouping_extension.html b/no_grouping_extension.html deleted file mode 100644 index 5ab4a89cb..000000000 --- a/no_grouping_extension.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - no_grouping_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Grouping Extension

- -

Extensions shouldn’t be used to group code within the same source file

- -
    -
  • Identifier: no_grouping_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
protocol Food {}
-extension Food {}
-
-
class Apples {}
-extension Oranges {}
-
-
class Box<T> {}
-extension Box where T: Vegetable {}
-
-

Triggering Examples

-
enum Fruit {}
-↓extension Fruit {}
-
-
↓extension Tea: Error {}
-struct Tea {}
-
-
class Ham { class Spam {}}
-↓extension Ham.Spam {}
-
-
extension External { struct Gotcha {}}
-↓extension External.Gotcha {}
-
- -
-
- - -
-
- - - diff --git a/no_magic_numbers.html b/no_magic_numbers.html deleted file mode 100644 index 61b343fa7..000000000 --- a/no_magic_numbers.html +++ /dev/null @@ -1,544 +0,0 @@ - - - - no_magic_numbers Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Magic Numbers

- -

Magic numbers should be replaced by named constants

- -
    -
  • Identifier: no_magic_numbers
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
var foo = 123
-
-
static let bar: Double = 0.123
-
-
let a = b + 1.0
-
-
array[0] + array[1] 
-
-
let foo = 1_000.000_01
-
-
// array[1337]
-
-
baz("9999")
-
-
func foo() {
-    let x: Int = 2
-    let y = 3
-    let vector = [x, y, -1]
-}
-
-
class A {
-    var foo: Double = 132
-    static let bar: Double = 0.98
-}
-
-
@available(iOS 13, *)
-func version() {
-    if #available(iOS 13, OSX 10.10, *) {
-        return
-    }
-}
-
-
enum Example: Int {
-    case positive = 2
-    case negative = -2
-}
-
-
class FooTests: XCTestCase {
-    let array: [Int] = []
-    let bar = array[42]
-}
-
-
class FooTests: XCTestCase {
-    class Bar {
-        let array: [Int] = []
-        let bar = array[42]
-    }
-}
-
-
class MyTest: XCTestCase {}
-extension MyTest {
-    let a = Int(3)
-}
-
-
extension MyTest {
-    let a = Int(3)
-}
-class MyTest: XCTestCase {}
-
-
let foo = 1 << 2
-
-
let foo = 1 >> 2
-
-
let foo = 2 >> 2
-
-
let foo = 2 << 2
-
-
let a = b / 100.0
-
-
let range = 2 ..< 12
-
-
let range = ...12
-
-
let range = 12...
-
-
let (lowerBound, upperBound) = (400, 599)
-
-
let a = (5, 10)
-
-
let notFound = (statusCode: 404, description: "Not Found", isError: true)
-
-
#Preview {
-    ContentView(value: 5)
-}
-
-

Triggering Examples

-
foo(↓321)
-
-
bar(↓1_000.005_01)
-
-
array[↓42]
-
-
let box = array[↓12 + ↓14]
-
-
let a = b + ↓2.0
-
-
let range = 2 ... ↓12 + 1
-
-
let range = ↓2*↓6...
-
-
let slice = array[↓2...↓4]
-
-
for i in ↓3 ..< ↓8 {}
-
-
let n: Int = Int(r * ↓255) << ↓16 | Int(g * ↓255) << ↓8
-
-
Color.primary.opacity(isAnimate ? ↓0.1 : ↓1.5)
-
-
        class MyTest: XCTestCase {}
-        extension NSObject {
-            let a = Int(↓3)
-        }
-
-
if (fileSize > ↓1000000) {
-    return
-}
-
-
let imageHeight = (width - ↓24)
-
-
return (↓5, ↓10, ↓15)
-
-
#ExampleMacro {
-    ContentView(value: ↓5)
-}
-
- -
-
- - -
-
- - - diff --git a/no_space_in_method_call.html b/no_space_in_method_call.html deleted file mode 100644 index 40d38db16..000000000 --- a/no_space_in_method_call.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - no_space_in_method_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

No Space in Method Call

- -

Don’t add a space between the method name and the parentheses

- -
    -
  • Identifier: no_space_in_method_call
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo()
-
-
object.foo()
-
-
object.foo(1)
-
-
object.foo(value: 1)
-
-
object.foo { print($0 }
-
-
list.sorted { $0.0 < $1.0 }.map { $0.value }
-
-
self.init(rgb: (Int) (colorInt))
-
-
Button {
-    print("Button tapped")
-} label: {
-    Text("Button")
-}
-
-

Triggering Examples

-
foo↓ ()
-
-
object.foo↓ ()
-
-
object.foo↓ (1)
-
-
object.foo↓ (value: 1)
-
-
object.foo↓ () {}
-
-
object.foo↓     ()
-
-
object.foo↓     (value: 1) { x in print(x) }
-
- -
-
- - -
-
- - - diff --git a/non_optional_string_data_conversion.html b/non_optional_string_data_conversion.html deleted file mode 100644 index f6dbfa2d7..000000000 --- a/non_optional_string_data_conversion.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - non_optional_string_data_conversion Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Non-optional String -> Data Conversion

- -

Prefer non-optional Data(_:) initializer when converting String to Data

- -
    -
  • Identifier: non_optional_string_data_conversion
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
Data("foo".utf8)
-
-

Triggering Examples

-
"foo".data(using: .utf8)
-
- -
-
- - -
-
- - - diff --git a/non_overridable_class_declaration.html b/non_overridable_class_declaration.html deleted file mode 100644 index 8c68b3aba..000000000 --- a/non_overridable_class_declaration.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - non_overridable_class_declaration Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Class Declaration in Final Class

- -

Class methods and properties in final classes should themselves be final, just as if the declarations -are private. In both cases, they cannot be overridden. Using final class or static makes this explicit.

- -
    -
  • Identifier: non_overridable_class_declaration
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -final_class_modifier - -final class -
  • -
-

Non Triggering Examples

-
final class C {
-    final class var b: Bool { true }
-    final class func f() {}
-}
-
-
class C {
-    final class var b: Bool { true }
-    final class func f() {}
-}
-
-
class C {
-    class var b: Bool { true }
-    class func f() {}
-}
-
-
class C {
-    static var b: Bool { true }
-    static func f() {}
-}
-
-
final class C {
-    static var b: Bool { true }
-    static func f() {}
-}
-
-
final class C {
-    class D {
-        class var b: Bool { true }
-        class func f() {}
-    }
-}
-
-

Triggering Examples

-
final class C {
-    ↓class var b: Bool { true }
-    ↓class func f() {}
-}
-
-
class C {
-    final class D {
-        ↓class var b: Bool { true }
-        ↓class func f() {}
-    }
-}
-
-
class C {
-    private ↓class var b: Bool { true }
-    private ↓class func f() {}
-}
-
- -
-
- - -
-
- - - diff --git a/notification_center_detachment.html b/notification_center_detachment.html deleted file mode 100644 index 6ca50510b..000000000 --- a/notification_center_detachment.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - notification_center_detachment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Notification Center Detachment

- -

An object should only remove itself as an observer in deinit

- -
    -
  • Identifier: notification_center_detachment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-   deinit {
-       NotificationCenter.default.removeObserver(self)
-   }
-}
-
-
class Foo {
-   func bar() {
-       NotificationCenter.default.removeObserver(otherObject)
-   }
-}
-
-

Triggering Examples

-
class Foo {
-   func bar() {
-       ↓NotificationCenter.default.removeObserver(self)
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/ns_number_init_as_function_reference.html b/ns_number_init_as_function_reference.html deleted file mode 100644 index c0be32a61..000000000 --- a/ns_number_init_as_function_reference.html +++ /dev/null @@ -1,426 +0,0 @@ - - - - ns_number_init_as_function_reference Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSNumber Init as Function Reference

- -

Passing NSNumber.init or NSDecimalNumber.init as a function reference is dangerous as it can cause the wrong initializer to be used, causing crashes; use .init(value:) instead

- -
    -
  • Identifier: ns_number_init_as_function_reference
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[0, 0.2].map(NSNumber.init(value:))
-
-
let value = NSNumber.init(value: 0.0)
-
-
[0, 0.2].map { NSNumber(value: $0) }
-
-
[0, 0.2].map(NSDecimalNumber.init(value:))
-
-
[0, 0.2].map { NSDecimalNumber(value: $0) }
-
-

Triggering Examples

-
[0, 0.2].map(↓NSNumber.init)
-
-
[0, 0.2].map(↓NSDecimalNumber.init)
-
- -
-
- - -
-
- - - diff --git a/nslocalizedstring_key.html b/nslocalizedstring_key.html deleted file mode 100644 index deedbcbca..000000000 --- a/nslocalizedstring_key.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - nslocalizedstring_key Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Key

- -

Static strings should be used as key/comment in NSLocalizedString in order for genstrings to work

- -
    -
  • Identifier: nslocalizedstring_key
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
NSLocalizedString("key", comment: "")
-
-
NSLocalizedString("key" + "2", comment: "")
-
-
NSLocalizedString("key", comment: "comment")
-
-
NSLocalizedString("This is a multi-" +
-    "line string", comment: "")
-
-
let format = NSLocalizedString("%@, %@.", comment: "Accessibility label for a post in the post list." +
-" The parameters are the title, and date respectively." +
-" For example, "Let it Go, 1 hour ago."")
-
-

Triggering Examples

-
NSLocalizedString(↓method(), comment: "")
-
-
NSLocalizedString(↓"key_\(param)", comment: "")
-
-
NSLocalizedString("key", comment: ↓"comment with \(param)")
-
-
NSLocalizedString(↓"key_\(param)", comment: ↓method())
-
- -
-
- - -
-
- - - diff --git a/nslocalizedstring_require_bundle.html b/nslocalizedstring_require_bundle.html deleted file mode 100644 index 7c2c860da..000000000 --- a/nslocalizedstring_require_bundle.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - nslocalizedstring_require_bundle Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSLocalizedString Require Bundle

- -

Calls to NSLocalizedString should specify the bundle which contains the strings file

- -
    -
  • Identifier: nslocalizedstring_require_bundle
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
NSLocalizedString("someKey", bundle: .main, comment: "test")
-
-
NSLocalizedString("someKey", tableName: "a",
-                  bundle: Bundle(for: A.self),
-                  comment: "test")
-
-
NSLocalizedString("someKey", tableName: "xyz",
-                  bundle: someBundle, value: "test"
-                  comment: "test")
-
-
arbitraryFunctionCall("something")
-
-

Triggering Examples

-
↓NSLocalizedString("someKey", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "a", comment: "test")
-
-
↓NSLocalizedString("someKey", tableName: "xyz",
-                  value: "test", comment: "test")
-
- -
-
- - -
-
- - - diff --git a/nsobject_prefer_isequal.html b/nsobject_prefer_isequal.html deleted file mode 100644 index 46f716d25..000000000 --- a/nsobject_prefer_isequal.html +++ /dev/null @@ -1,484 +0,0 @@ - - - - nsobject_prefer_isequal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

NSObject Prefer isEqual

- -

NSObject subclasses should implement isEqual instead of ==

- -
    -
  • Identifier: nsobject_prefer_isequal
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class AClass: NSObject {
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-}
-
-
class AClass: Equatable {
-    static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        return true
-    }
-}
-
-
@objc class AClass: SomeNSObjectSubclass {
-    override func isEqual(_ object: Any?) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    static func ==(lhs: AClass, rhs: BClass) -> Bool {
-        return true
-    }
-}
-
-
struct AStruct: Equatable {
-    static func ==(lhs: AStruct, rhs: AStruct) -> Bool {
-        return false
-    }
-}
-
-
enum AnEnum: Equatable {
-    static func ==(lhs: AnEnum, rhs: AnEnum) -> Bool {
-        return true
-    }
-}
-
-

Triggering Examples

-
class AClass: NSObject {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
@objc class AClass: SomeOtherNSObjectSubclass {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return true
-    }
-}
-
-
class AClass: NSObject, Equatable {
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
-
class AClass: NSObject {
-    override func isEqual(_ object: Any?) -> Bool {
-        guard let other = object as? AClass else {
-            return false
-        }
-        return true
-    }
-
-    ↓static func ==(lhs: AClass, rhs: AClass) -> Bool {
-        return false
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/number_separator.html b/number_separator.html deleted file mode 100644 index 4ab5ded2c..000000000 --- a/number_separator.html +++ /dev/null @@ -1,665 +0,0 @@ - - - - number_separator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Number Separator

- -

Underscores should be used as thousand separator in large numbers with a configurable number of digits. In other words, there should be an underscore after every 3 digits in the integral as well as the fractional part of a number.

- -
    -
  • Identifier: number_separator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -minimum_length - -0 -
    -exclude_ranges - -[] -
  • -
-

Non Triggering Examples

-
let foo = -100
-
-
let foo = -1_000
-
-
let foo = -1_000_000
-
-
let foo = -1.0001
-
-
let foo = -1_000_000.0000001
-
-
let binary = -0b10000
-
-
let binary = -0b1000_0001
-
-
let hex = -0xA
-
-
let hex = -0xAA_BB
-
-
let octal = -0o21
-
-
let octal = -0o21_1
-
-
let exp = -1_000_000.000000e2
-
-
let foo: Double = -(200)
-
-
let foo: Double = -(200 / 447.214)
-
-
let foo = -6.2832e-6
-
-
let foo = +100
-
-
let foo = +1_000
-
-
let foo = +1_000_000
-
-
let foo = +1.0001
-
-
let foo = +1_000_000.0000001
-
-
let binary = +0b10000
-
-
let binary = +0b1000_0001
-
-
let hex = +0xA
-
-
let hex = +0xAA_BB
-
-
let octal = +0o21
-
-
let octal = +0o21_1
-
-
let exp = +1_000_000.000000e2
-
-
let foo: Double = +(200)
-
-
let foo: Double = +(200 / 447.214)
-
-
let foo = +6.2832e-6
-
-
let foo = 100
-
-
let foo = 1_000
-
-
let foo = 1_000_000
-
-
let foo = 1.0001
-
-
let foo = 1_000_000.0000001
-
-
let binary = 0b10000
-
-
let binary = 0b1000_0001
-
-
let hex = 0xA
-
-
let hex = 0xAA_BB
-
-
let octal = 0o21
-
-
let octal = 0o21_1
-
-
let exp = 1_000_000.000000e2
-
-
let foo: Double = (200)
-
-
let foo: Double = (200 / 447.214)
-
-
let foo = 6.2832e-6
-
-

Triggering Examples

-
let foo = -↓10_0
-
-
let foo = -↓1000
-
-
let foo = -↓1000e2
-
-
let foo = -↓1000E2
-
-
let foo = -↓1__000
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = -↓1.0001
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = -↓1_000_000.000000_1
-
-
-
let foo = -↓1000000.000000_1
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = -↓6.2832e-6
-
-
-
let foo = +↓10_0
-
-
let foo = +↓1000
-
-
let foo = +↓1000e2
-
-
let foo = +↓1000E2
-
-
let foo = +↓1__000
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = +↓1.0001
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = +↓1_000_000.000000_1
-
-
-
let foo = +↓1000000.000000_1
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = +↓6.2832e-6
-
-
-
let foo = ↓10_0
-
-
let foo = ↓1000
-
-
let foo = ↓1000e2
-
-
let foo = ↓1000E2
-
-
let foo = ↓1__000
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = ↓1.0001
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = ↓1_000_000.000000_1
-
-
-
let foo = ↓1000000.000000_1
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo = ↓6.2832e-6
-
-
-
let foo: Double = -(↓100000)
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = -(↓10.000000_1)
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = -(↓123456 / ↓447.214214)
-
-
-
let foo: Double = +(↓100000)
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = +(↓10.000000_1)
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = +(↓123456 / ↓447.214214)
-
-
-
let foo: Double = (↓100000)
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = (↓10.000000_1)
-
-
-
//
-// minimum_fraction_length: 3
-//
-
-let foo: Double = (↓123456 / ↓447.214214)
-
-
- -
-
- - -
-
- - - diff --git a/object_literal.html b/object_literal.html deleted file mode 100644 index 8f8345434..000000000 --- a/object_literal.html +++ /dev/null @@ -1,476 +0,0 @@ - - - - object_literal Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Object Literal

- -

Prefer object literals over image and color inits

- -
    -
  • Identifier: object_literal
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -image_literal - -true -
    -color_literal - -true -
  • -
-

Non Triggering Examples

-
let image = #imageLiteral(resourceName: "image.jpg")
-
-
let color = #colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
-
-
let image = UIImage(named: aVariable)
-
-
let image = UIImage(named: "interpolated \(variable)")
-
-
let color = UIColor(red: value, green: value, blue: value, alpha: 1)
-
-
let image = NSImage(named: aVariable)
-
-
let image = NSImage(named: "interpolated \(variable)")
-
-
let color = NSColor(red: value, green: value, blue: value, alpha: 1)
-
-

Triggering Examples

-
let image = ↓UIImage(named: "foo")
-
-
let color = ↓UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage(named: "foo")
-
-
let color = ↓NSColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor(white: 0.5, alpha: 1)
-
-
let image = ↓UIImage.init(named: "foo")
-
-
let color = ↓UIColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓UIColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓UIColor.init(white: 0.5, alpha: 1)
-
-
let image = ↓NSImage.init(named: "foo")
-
-
let color = ↓NSColor.init(red: 0.3, green: 0.3, blue: 0.3, alpha: 1)
-
-
let color = ↓NSColor.init(red: 100 / 255.0, green: 50 / 255.0, blue: 0, alpha: 1)
-
-
let color = ↓NSColor.init(white: 0.5, alpha: 1)
-
- -
-
- - -
-
- - - diff --git a/one_declaration_per_file.html b/one_declaration_per_file.html deleted file mode 100644 index e3d5b1ada..000000000 --- a/one_declaration_per_file.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - one_declaration_per_file Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

One Declaration per File

- -

Only a single declaration is allowed in a file

- -
    -
  • Identifier: one_declaration_per_file
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
actor Foo {}
-
-
class Foo {}
-extension Foo {}
-
-
struct S {
-    struct N {}
-}
-
-

Triggering Examples

-
class Foo {}
-↓class Bar {}
-
-
protocol Foo {}
-↓enum Bar {}
-
-
struct Foo {}
-↓struct Bar {}
-
- -
-
- - -
-
- - - diff --git a/opening_brace.html b/opening_brace.html deleted file mode 100644 index bb8a82a93..000000000 --- a/opening_brace.html +++ /dev/null @@ -1,678 +0,0 @@ - - - - opening_brace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Opening Brace Spacing

- -

The correct positioning of braces that introduce a block of code or member list is highly controversial. No matter which style is preferred, consistency is key. Apart from different tastes, the positioning of braces can also have a significant impact on the readability of the code, especially for visually impaired developers. This rule ensures that braces are preceded by a single space and on the same line as the declaration. Comments between the declaration and the opening brace are respected. Check out the contrasted_opening_brace rule for a different style.

- -
    -
  • Identifier: opening_brace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_multiline_type_headers - -false -
    -ignore_multiline_statement_conditions - -false -
    -ignore_multiline_function_signatures - -false -
    -allow_multiline_func - -false -
  • -
-

Non Triggering Examples

-
func abc() {
-}
-
-
[].map() { $0 }
-
-
[].map({ })
-
-
if let a = b { }
-
-
while a == b { }
-
-
guard let a = b else { }
-
-
struct Rule {}
-
-
struct Parent {
-    struct Child {
-        let foo: Int
-    }
-}
-
-
func f(rect: CGRect) {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }()
-}
-
-
func f(rect: CGRect) -> () -> Void {
-    {
-        let centre = CGPoint(x: rect.midX, y: rect.midY)
-        print(centre)
-    }
-}
-
-
func f() -> () -> Void {
-    {}
-}
-
-
class Rule:
-  NSObject {
-  var a: String {
-    return ""
-  }
-}
-
-
self.foo(
-    (
-        "String parameter",
-        { "Do something here" }
-    )
-)
-
-
let pattern = #/(\{(?<key>\w+)\})/#
-
-
if c {}
-else {}
-
-
    if c /* comment */ {
-        return
-    }
-
-

Triggering Examples

-
func abc()↓{
-}
-
-
func abc()
-    ↓{ }
-
-
func abc(a: A,
-    b: B)
-↓{
-
-
[].map()↓{ $0 }
-
-
struct OldContentView: View {
-  @State private var showOptions = false
-
-  var body: some View {
-    Button(action: {
-      self.showOptions.toggle()
-    })↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
struct OldContentView: View {
-  @State private var showOptions = false
-
-  var body: some View {
-    Button(action: {
-      self.showOptions.toggle()
-    })
-   ↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
struct OldContentView: View {
-  @State private var showOptions = false
-
-  var body: some View {
-    Button {
-      self.showOptions.toggle()
-    } label:↓{
-      Image(systemName: "gear")
-    }
-  }
-}
-
-
if let a = b↓{ }
-
-
while a == b↓{ }
-
-
guard let a = b else↓{ }
-
-
if
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
while
-    let a = b,
-    let c = d
-    where a == c↓{ }
-
-
guard
-    let a = b,
-    let c = d
-    where a == c else↓{ }
-
-
struct Rule↓{}
-
-
struct Rule
-↓{
-}
-
-
struct Rule
-
-    ↓{
-}
-
-
struct Parent {
-    struct Child
-    ↓{
-        let foo: Int
-    }
-}
-
-
switch a↓{}
-
-
if
-    let a = b,
-    let c = d,
-    a == c
-↓{ }
-
-
while
-    let a = b,
-    let c = d,
-    a == c
-↓{ }
-
-
guard
-    let a = b,
-    let c = d,
-    a == c else
-↓{ }
-
-
class Rule↓{}
-
-
-
actor Rule↓{}
-
-
-
enum Rule↓{}
-
-
-
protocol Rule↓{}
-
-
-
extension Rule↓{}
-
-
-
class Rule {
-  var a: String↓{
-    return ""
-  }
-}
-
-
class Rule {
-  var a: String {
-    willSet↓{
-
-    }
-    didSet  ↓{
-
-    }
-  }
-}
-
-
precedencegroup Group↓{
-  assignment: true
-}
-
-
if
-    "test".isEmpty
-↓{
-    // code here
-}
-
-
func fooFun() {
-    let foo: String? = "foo"
-    let bar: String? = "bar"
-
-    if
-        let foo = foo,
-        let bar = bar
-    ↓{
-        print(foo + bar)
-    }
-}
-
-
if
-    let a = ["A", "B"].first,
-    let b = ["B"].first
-↓{
-    print(a)
-}
-
-
if c  ↓{}
-else /* comment */  ↓{}
-
- -
-
- - -
-
- - - diff --git a/operator_usage_whitespace.html b/operator_usage_whitespace.html deleted file mode 100644 index 86811e5a6..000000000 --- a/operator_usage_whitespace.html +++ /dev/null @@ -1,584 +0,0 @@ - - - - operator_usage_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Usage Whitespace

- -

Operators should be surrounded by a single whitespace when they are being used

- -
    -
  • Identifier: operator_usage_whitespace
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -lines_look_around - -2 -
    -skip_aligned_constants - -true -
    -allowed_no_space_operators - -[“…”, “..<”] -
  • -
-

Non Triggering Examples

-
let foo = 1 + 2
-
-
let foo = 1 > 2
-
-
let foo = !false
-
-
let foo: Int?
-
-
let foo: Array<String>
-
-
let model = CustomView<Container<Button>, NSAttributedString>()
-
-
let foo: [String]
-
-
let foo = 1 + 
-  2
-
-
let range = 1...3
-
-
let range = 1 ... 3
-
-
let range = 1..<3
-
-
#if swift(>=3.0)
-    foo()
-#endif
-
-
array.removeAtIndex(-200)
-
-
let name = "image-1"
-
-
button.setImage(#imageLiteral(resourceName: "image-1"), for: .normal)
-
-
let doubleValue = -9e-11
-
-
let foo = GenericType<(UIViewController) -> Void>()
-
-
let foo = Foo<Bar<T>, Baz>()
-
-
let foo = SignalProducer<Signal<Value, Error>, Error>([ self.signal, next ]).flatten(.concat)
-
-
"let foo =  1"
-
-
enum Enum {
-case hello   = 1
-case hello2  = 1
-}
-
-
let something = Something<GenericParameter1,
-                          GenericParameter2>()
-
-
return path.flatMap { path in
-    return compileCommands[path] ??
-        compileCommands[path.path(relativeTo: FileManager.default.currentDirectoryPath)]
-}
-
-
internal static func == (lhs: Vertex, rhs: Vertex) -> Bool {
-    return lhs.filePath == rhs.filePath
-        && lhs.originalRemoteString == rhs.originalRemoteString
-        && lhs.rootDirectory == rhs.rootDirectory
-}
-
-
internal static func == (lhs: Vertex, rhs: Vertex) -> Bool {
-    return lhs.filePath == rhs.filePath &&
-        lhs.originalRemoteString == rhs.originalRemoteString &&
-        lhs.rootDirectory == rhs.rootDirectory
-}
-
-
private static let pattern =
-    "\\S\(mainPatternGroups)" + // Regexp will match if expression not begin with comma
-    "|" +                       // or
-    "\(mainPatternGroups)"      // Regexp will match if expression begins with comma
-
-
private static let pattern =
-    "\\S\(mainPatternGroups)" + // Regexp will match if expression not begin with comma
-    "|"                       + // or
-    "\(mainPatternGroups)"      // Regexp will match if expression begins with comma
-
-
typealias Foo = Bar
-
-
protocol A {
-    associatedtype B = C
-}
-
-
tabbedViewController.title = nil
-
-

Triggering Examples

-
let foo = 1↓+2
-
-
let foo = 1↓   + 2
-
-
let foo = 1↓   +    2
-
-
let foo = 1↓ +    2
-
-
let foo↓=1↓+2
-
-
let foo↓=1 + 2
-
-
let foo↓=bar
-
-
let range = 1↓ ..<  3
-
-
let foo = bar↓   ?? 0
-
-
let foo = bar↓ !=  0
-
-
let foo = bar↓ !==  bar2
-
-
let v8 = Int8(1)↓  << 6
-
-
let v8 = 1↓ <<  (6)
-
-
let v8 = 1↓ <<  (6)
- let foo = 1 > 2
-
-
let foo↓  = [1]
-
-
let foo↓  = "1"
-
-
let foo↓ =  "1"
-
-
enum Enum {
-case one↓  =  1
-case two  = 1
-}
-
-
enum Enum {
-case one  = 1
-case two↓  =  1
-}
-
-
enum Enum {
-case one↓   = 1
-case two↓  = 1
-}
-
-
typealias Foo↓ =  Bar
-
-
protocol A {
-    associatedtype B↓  = C
-}
-
-
tabbedViewController.title↓  = nil
-
-
let foo = bar ? 0↓:1
-
-
let foo = bar↓ ?   0 : 1
-
- -
-
- - -
-
- - - diff --git a/operator_whitespace.html b/operator_whitespace.html deleted file mode 100644 index 0e8efb7e4..000000000 --- a/operator_whitespace.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - operator_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Operator Function Whitespace

- -

Operators should be surrounded by a single whitespace when defining them

- -
    -
  • Identifier: operator_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func <| (lhs: Int, rhs: Int) -> Int {}
-
-
func <|< <A>(lhs: A, rhs: A) -> A {}
-
-
func abc(lhs: Int, rhs: Int) -> Int {}
-
-

Triggering Examples

-
↓func <|(lhs: Int, rhs: Int) -> Int {}
-
-
↓func <|<<A>(lhs: A, rhs: A) -> A {}
-
-
↓func <|  (lhs: Int, rhs: Int) -> Int {}
-
-
↓func <|<  <A>(lhs: A, rhs: A) -> A {}
-
-
↓func  <| (lhs: Int, rhs: Int) -> Int {}
-
-
↓func  <|< <A>(lhs: A, rhs: A) -> A {}
-
- -
-
- - -
-
- - - diff --git a/optional_data_string_conversion.html b/optional_data_string_conversion.html deleted file mode 100644 index 626acd3a8..000000000 --- a/optional_data_string_conversion.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - optional_data_string_conversion Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Optional Data -> String Conversion

- -

Prefer failable String(bytes:encoding:) initializer when converting Data to String

- -
    -
  • Identifier: optional_data_string_conversion
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
String(data: data, encoding: .utf8)
-
-
String(bytes: data, encoding: .utf8)
-
-
String(UTF8.self)
-
-
String(a, b, c, UTF8.self)
-
-
String(decoding: data, encoding: UTF8.self)
-
-

Triggering Examples

-
String(decoding: data, as: UTF8.self)
-
- -
-
- - -
-
- - - diff --git a/optional_enum_case_matching.html b/optional_enum_case_matching.html deleted file mode 100644 index e80d0392a..000000000 --- a/optional_enum_case_matching.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - optional_enum_case_matching Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Optional Enum Case Match

- -

Matching an enum case against an optional enum without ‘?’ is supported on Swift 5.1 and above

- -
    -
  • Identifier: optional_enum_case_matching
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
- case .bar: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar, .baz): break
- case (.bar, _): break
- case (_, .baz): break
- default: break
-}
-
-
switch (x, y) {
-case (.c, _?):
-    break
-case (.c, nil):
-    break
-case (_, _):
-    break
-}
-
-

Triggering Examples

-
switch foo {
- case .bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case Foo.bar↓?: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case .bar↓?, .baz↓?: break
- default: break
-}
-
-
switch foo {
- case .bar↓? where x > 1: break
- case .baz: break
- default: break
-}
-
-
switch foo {
- case (.bar↓?, .baz↓?): break
- case (.bar↓?, _): break
- case (_, .bar↓?): break
- default: break
-}
-
- -
-
- - -
-
- - - diff --git a/orphaned_doc_comment.html b/orphaned_doc_comment.html deleted file mode 100644 index 4dd6e48ff..000000000 --- a/orphaned_doc_comment.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - orphaned_doc_comment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Orphaned Doc Comment

- -

A doc comment should be attached to a declaration

- -
    -
  • Identifier: orphaned_doc_comment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
/// My great property
-var myGreatProperty: String!
-
-
//////////////////////////////////////
-//
-// Copyright header.
-//
-//////////////////////////////////////
-
-
/// Look here for more info: https://github.com.
-var myGreatProperty: String!
-
-
/// Look here for more info:
-/// https://github.com.
-var myGreatProperty: String!
-
-

Triggering Examples

-
↓/// My great property
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-
-
-// Not a doc string
-var myGreatProperty: String!
-
-
↓/// Look here for more info: https://github.com.
-// Not a doc string
-↓/// My great property
-// Not a doc string
-var myGreatProperty: String!
-
-
extension Nested {
-    ↓///
-    /// Look here for more info: https://github.com.
-
-    // Not a doc string
-    var myGreatProperty: String!
-}
-
- -
-
- - -
-
- - - diff --git a/overridden_super_call.html b/overridden_super_call.html deleted file mode 100644 index ea6c1721a..000000000 --- a/overridden_super_call.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - overridden_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Overridden Method Calls Super

- -

Some overridden methods should always call super.

- -
    -
  • Identifier: overridden_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
    -included - -[“*”] -
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {
-        self.method1()
-        super.viewWillAppear(animated)
-        self.method2()
-    }
-}
-
-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class Some {
-    func viewWillAppear(_ animated: Bool) {
-    }
-}
-
-
class VC: UIViewController {
-    override func viewDidLoad() {
-    defer {
-        super.viewDidLoad()
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        //Not calling to super
-        self.method()
-    }
-}
-
-
class VC: UIViewController {
-    override func viewWillAppear(_ animated: Bool) {↓
-        super.viewWillAppear(animated)
-        //Other code
-        super.viewWillAppear(animated)
-    }
-}
-
-
class VC: UIViewController {
-    override func didReceiveMemoryWarning() {↓
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/override_in_extension.html b/override_in_extension.html deleted file mode 100644 index ed64f889b..000000000 --- a/override_in_extension.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - override_in_extension Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Override in Extension

- -

Extensions shouldn’t override declarations

- -
    -
  • Identifier: override_in_extension
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
extension Person {
-  var age: Int { return 42 }
-}
-
-
extension Person {
-  func celebrateBirthday() {}
-}
-
-
class Employee: Person {
-  override func celebrateBirthday() {}
-}
-
-
class Foo: NSObject {}
-extension Foo {
-    override var description: String { return "" }
-}
-
-
struct Foo {
-    class Bar: NSObject {}
-}
-extension Foo.Bar {
-    override var description: String { return "" }
-}
-
-

Triggering Examples

-
extension Person {
-  override ↓var age: Int { return 42 }
-}
-
-
extension Person {
-  override ↓func celebrateBirthday() {}
-}
-
- -
-
- - -
-
- - - diff --git a/pattern_matching_keywords.html b/pattern_matching_keywords.html deleted file mode 100644 index 834dd810e..000000000 --- a/pattern_matching_keywords.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - pattern_matching_keywords Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Pattern Matching Keywords

- -

Combine multiple pattern matching bindings by moving keywords out of tuples

- -
    -
  • Identifier: pattern_matching_keywords
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-    default: break
-}
-
-
switch foo {
-    case 1: break
-}
-
-
switch foo {
-    case bar: break
-}
-
-
switch foo {
-    case let (x, y): break
-}
-
-
switch foo {
-    case .foo(let x): break
-}
-
-
switch foo {
-    case let .foo(x, y): break
-}
-
-
switch foo {
-    case .foo(let x), .bar(let x): break
-}
-
-
switch foo {
-    case .foo(let x, var y): break
-}
-
-
switch foo {
-    case var (x, y): break
-}
-
-
switch foo {
-    case .foo(var x): break
-}
-
-
switch foo {
-    case var .foo(x, y): break
-}
-
-
switch foo {
-    case (y, let x, z): break
-}
-
-

Triggering Examples

-
switch foo {
-    case (↓let x,  ↓let y): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, .foo): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, _): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, f()): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, s.f()): break
-}
-
-
switch foo {
-    case (↓let x,  ↓let y, s.t): break
-}
-
-
switch foo {
-    case .foo(↓let x, ↓let y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓let x), .yamlParsing(↓let y)): break
-}
-
-
switch foo {
-    case (↓var x,  ↓var y): break
-}
-
-
switch foo {
-    case .foo(↓var x, ↓var y): break
-}
-
-
switch foo {
-    case (.yamlParsing(↓var x), .yamlParsing(↓var y)): break
-}
-
- -
-
- - -
-
- - - diff --git a/period_spacing.html b/period_spacing.html deleted file mode 100644 index d51451caa..000000000 --- a/period_spacing.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - period_spacing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Period Spacing

- -

Periods should not be followed by more than one space

- -
    -
  • Identifier: period_spacing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let pi = 3.2
-
-
let pi = Double.pi
-
-
let pi = Double. pi
-
-
let pi = Double.  pi
-
-
// A. Single.
-
-
///   - code: Identifier of the error. Integer.
-
-
// value: Multiline.
-//        Comment.
-
-
/**
-Sentence ended in period.
-
-- Sentence 2 new line characters after.
-**/
-
-

Triggering Examples

-
/* Only god knows why. ↓ This symbol does nothing. */
-
-
// Only god knows why. ↓ This symbol does nothing.
-
-
// Single. Double. ↓ End.
-
-
// Single. Double. ↓ Triple. ↓  End.
-
-
// Triple. ↓  Quad. ↓   End.
-
-
///   - code: Identifier of the error. ↓ Integer.
-
- -
-
- - -
-
- - - diff --git a/prefer_key_path.html b/prefer_key_path.html deleted file mode 100644 index cf4fde257..000000000 --- a/prefer_key_path.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - prefer_key_path Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Key Path

- -

Use a key path argument instead of a closure with property access

- -
    -
  • Identifier: prefer_key_path
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.2.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -restrict_to_standard_functions - -true -
  • -
-

Non Triggering Examples

-
f {}
-
-
f { $0 }
-
-
f { $0.a }
-
-
let f = { $0.a }(b)
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f {}
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { $0 }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f() { g() }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { a.b.c }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { a in a }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { a, b in a.b }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { (a, b) in a.b }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f { $0.a } g: { $0.b }
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-[1, 2, 3].reduce(1) { $0 + $1 }
-
-
-
f.map(1) { $0.a }
-
-
f.filter({ $0.a }, x)
-
-
#Predicate { $0.a }
-
-

Triggering Examples

-
f.map ↓{ $0.a }
-
-
f.filter ↓{ $0.a }
-
-
f.first ↓{ $0.a }
-
-
f.contains ↓{ $0.a }
-
-
f.contains(where: ↓{ $0.a })
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f(↓{ $0.a })
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f(a: ↓{ $0.b })
-
-
-
//
-// restrict_to_standard_functions: false
-//
-
-f(a: ↓{ a in a.b }, x)
-
-
-
f.map ↓{ a in a.b.c }
-
-
f.allSatisfy ↓{ (a: A) in a.b }
-
-
f.first ↓{ (a b: A) in b.c }
-
-
f.contains ↓{ $0.0.a }
-
-
f.flatMap ↓{ $0.a.b }
-
-
//
-// restrict_to_standard_functions: false
-//
-
-let f: (Int) -> Int = ↓{ $0.bigEndian }
-
-
- -
-
- - -
-
- - - diff --git a/prefer_nimble.html b/prefer_nimble.html deleted file mode 100644 index 58df451f5..000000000 --- a/prefer_nimble.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - prefer_nimble Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Nimble

- -

Prefer Nimble matchers over XCTAssert functions

- -
    -
  • Identifier: prefer_nimble
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
expect(foo) == 1
-
-
expect(foo).to(equal(1))
-
-

Triggering Examples

-
↓XCTAssertTrue(foo)
-
-
↓XCTAssertEqual(foo, 2)
-
-
↓XCTAssertNotEqual(foo, 2)
-
-
↓XCTAssertNil(foo)
-
-
↓XCTAssert(foo)
-
-
↓XCTAssertGreaterThan(foo, 10)
-
- -
-
- - -
-
- - - diff --git a/prefer_self_in_static_references.html b/prefer_self_in_static_references.html deleted file mode 100644 index 20f705486..000000000 --- a/prefer_self_in_static_references.html +++ /dev/null @@ -1,483 +0,0 @@ - - - - prefer_self_in_static_references Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self in Static References

- -

Use Self to refer to the surrounding type name

- -
    -
  • Identifier: prefer_self_in_static_references
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-    static let primes = [2, 3, 5, 7]
-    func isPrime(i: Int) -> Bool { Self.primes.contains(i) }
-
-
struct T {
-    static let i = 0
-}
-struct S {
-    static let i = 0
-}
-extension T {
-    static let j = S.i + T.i
-    static let k = { T.j }()
-}
-
-
class `Self` {
-    static let i = 0
-    func f() -> Int { Self.i }
-}
-
-

Triggering Examples

-
final class CheckCellView: NSTableCellView {
-    @IBOutlet var checkButton: NSButton!
-
-    override func awakeFromNib() {
-    checkButton.action = #selector(↓CheckCellView.check(_:))
-    }
-
-    @objc func check(_ button: AnyObject?) {}
-}
-
-
class C {
-    static let i = 1
-    var j: Int {
-        let ii = ↓C.i
-        return ii
-    }
-}
-
-
class C {
-    func f() {
-        _ = [↓C]()
-        _ = [Int: ↓C]()
-    }
-}
-
-
struct S {
-    let j: Int
-    static let i = 1
-    static func f() -> Int { ↓S.i }
-    func g() -> Any { ↓S.self }
-    func h() -> ↓S { ↓S(j: 2) }
-    func i() -> KeyPath<↓S, Int> { \↓S.j }
-    func j(@Wrap(-↓S.i, ↓S.i) n: Int = ↓S.i) {}
-}
-
-
struct S {
-    struct T {
-        static let i = 3
-    }
-    struct R {
-        static let j = S.T.i
-    }
-    static let h = ↓S.T.i + ↓S.R.j
-}
-
-
enum E {
-    case A
-    static func f() -> ↓E { ↓E.A }
-    static func g() -> ↓E { ↓E.f() }
-}
-
- -
-
- - -
-
- - - diff --git a/prefer_self_type_over_type_of_self.html b/prefer_self_type_over_type_of_self.html deleted file mode 100644 index 3718d0d60..000000000 --- a/prefer_self_type_over_type_of_self.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - prefer_self_type_over_type_of_self Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Self Type Over Type of Self

- -

Prefer Self over type(of: self) when accessing properties or calling methods

- -
    -
  • Identifier: prefer_self_type_over_type_of_self
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-    func bar() {
-        Self.baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(Self.baz)
-    }
-}
-
-
class A {
-    func foo(param: B) {
-        type(of: param).bar()
-    }
-}
-
-
class A {
-    func foo() {
-        print(type(of: self))
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    func bar() {
-        ↓type(of: self).baz()
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓type(of: self).baz)
-    }
-}
-
-
class Foo {
-    func bar() {
-        print(↓Swift.type(of: self).baz)
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/prefer_type_checking.html b/prefer_type_checking.html deleted file mode 100644 index a5fc9c7fe..000000000 --- a/prefer_type_checking.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - prefer_type_checking Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Type Checking

- -

Prefer a is X to a as? X != nil

- -
    -
  • Identifier: prefer_type_checking
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = bar as? Foo
-
-
bar is Foo
-
-
2*x is X
-
-
if foo is Bar {
-    doSomeThing()
-}
-
-
if let bar = foo as? Bar {
-    foo.run()
-}
-
-
bar as Foo != nil
-
-
nil != bar as Foo
-
-
bar as Foo? != nil
-
-
bar as? Foo? != nil
-
-

Triggering Examples

-
bar ↓as? Foo != nil
-
-
2*x as? X != nil
-
-
if foo ↓as? Bar != nil {
-    doSomeThing()
-}
-
-
nil != bar ↓as? Foo
-
-
nil != 2*x ↓as? X
-
- -
-
- - -
-
- - - diff --git a/prefer_zero_over_explicit_init.html b/prefer_zero_over_explicit_init.html deleted file mode 100644 index 49e6994d0..000000000 --- a/prefer_zero_over_explicit_init.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - prefer_zero_over_explicit_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefer Zero Over Explicit Init

- -

Prefer .zero over explicit init with zero parameters (e.g. CGPoint(x: 0, y: 0))

- -
    -
  • Identifier: prefer_zero_over_explicit_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
CGRect(x: 0, y: 0, width: 0, height: 1)
-
-
CGPoint(x: 0, y: -1)
-
-
CGSize(width: 2, height: 4)
-
-
CGVector(dx: -5, dy: 0)
-
-
UIEdgeInsets(top: 0, left: 1, bottom: 0, right: 1)
-
-

Triggering Examples

-
↓CGPoint(x: 0, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0)
-
-
↓CGPoint(x: 0.000000, y: 0.000)
-
-
↓CGRect(x: 0, y: 0, width: 0, height: 0)
-
-
↓CGSize(width: 0, height: 0)
-
-
↓CGVector(dx: 0, dy: 0)
-
-
↓UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
-
- -
-
- - -
-
- - - diff --git a/prefixed_toplevel_constant.html b/prefixed_toplevel_constant.html deleted file mode 100644 index 0068f9dab..000000000 --- a/prefixed_toplevel_constant.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - prefixed_toplevel_constant Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prefixed Top-Level Constant

- -

Top-level constants should be prefixed by k

- -
    -
  • Identifier: prefixed_toplevel_constant
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only_private - -false -
  • -
-

Non Triggering Examples

-
private let kFoo = 20.0
-
-
public let kFoo = false
-
-
internal let kFoo = "Foo"
-
-
let kFoo = true
-
-
//
-// only_private: true
-//
-
-let Foo = true
-
-
-
struct Foo {
-    let bar = 20.0
-}
-
-
private var foo = 20.0
-
-
public var foo = false
-
-
internal var foo = "Foo"
-
-
var foo = true
-
-
var foo = true, bar = true
-
-
var foo = true, let kFoo = true
-
-
let
-    kFoo = true
-
-
var foo: Int {
-    return a + b
-}
-
-
let kFoo = {
-    return a + b
-}()
-
-
var foo: String {
-    let bar = ""
-    return bar
-}
-
-
if condition() {
-    let result = somethingElse()
-    print(result)
-    exit()
-}
-
-
[1, 2, 3, 1000, 4000].forEach { number in
-    let isSmall = number < 10
-    if isSmall {
-        print("\(number) is a small number")
-    }
-}
-
-

Triggering Examples

-
private let ↓Foo = 20.0
-
-
public let ↓Foo = false
-
-
internal let ↓Foo = "Foo"
-
-
let ↓Foo = true
-
-
let ↓foo = 2, ↓bar = true
-
-
let
-    ↓foo = true
-
-
let ↓foo = {
-    return a + b
-}()
-
- -
-
- - -
-
- - - diff --git a/private_action.html b/private_action.html deleted file mode 100644 index 9b699a9b7..000000000 --- a/private_action.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - private_action Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Actions

- -

IBActions should be private

- -
    -
  • Identifier: private_action
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction private func barButtonTapped(_ sender: UIButton) {}
-}
-
-
class Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction fileprivate func barButtonTapped(_ sender: UIButton) {}
-}
-
-
private extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-
fileprivate extension Foo {
-    @IBAction func barButtonTapped(_ sender: UIButton) {}
-}
-
-

Triggering Examples

-
class Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
class Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
class Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
struct Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
extension Foo {
-    @IBAction public ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
extension Foo {
-    @IBAction internal ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
public extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
-
internal extension Foo {
-    @IBAction ↓func barButtonTapped(_ sender: UIButton) {}
-}
-
- -
-
- - -
-
- - - diff --git a/private_outlet.html b/private_outlet.html deleted file mode 100644 index 712909e88..000000000 --- a/private_outlet.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - private_outlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Outlets

- -

IBOutlets should be private to avoid leaking UIKit to higher layers

- -
    -
  • Identifier: private_outlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allow_private_set - -false -
  • -
-

Non Triggering Examples

-
class Foo { @IBOutlet private var label: UILabel? }
-
-
class Foo { @IBOutlet private var label: UILabel! }
-
-
class Foo { var notAnOutlet: UILabel }
-
-
class Foo { @IBOutlet weak private var label: UILabel? }
-
-
class Foo { @IBOutlet private weak var label: UILabel? }
-
-
class Foo { @IBOutlet fileprivate weak var label: UILabel? }
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet private(set) var label: UILabel? }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet private(set) var label: UILabel! }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet weak private(set) var label: UILabel? }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet private(set) weak var label: UILabel? }
-
-
-
//
-// allow_private_set: true
-//
-
-class Foo { @IBOutlet fileprivate(set) weak var label: UILabel? }
-
-
-

Triggering Examples

-
class Foo { @IBOutlet ↓var label: UILabel? }
-
-
class Foo { @IBOutlet ↓var label: UILabel! }
-
-
class Foo { @IBOutlet private(set) ↓var label: UILabel? }
-
-
class Foo { @IBOutlet fileprivate(set) ↓var label: UILabel? }
-
- -
-
- - -
-
- - - diff --git a/private_over_fileprivate.html b/private_over_fileprivate.html deleted file mode 100644 index 1aeb1a686..000000000 --- a/private_over_fileprivate.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - private_over_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private over Fileprivate

- -

Prefer private over fileprivate declarations

- -
    -
  • Identifier: private_over_fileprivate
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -validate_extensions - -false -
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public protocol P {}
-
-
open extension 
- String {}
-
-
internal extension String {}
-
-
package typealias P = Int
-
-
extension String {
-  fileprivate func Something(){}
-}
-
-
class MyClass {
-  fileprivate let myInt = 4
-}
-
-
actor MyActor {
-  fileprivate let myInt = 4
-}
-
-
class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
-
struct Outer {
-  struct Inter {
-    fileprivate struct Inner {}
-  }
-}
-
-

Triggering Examples

-
↓fileprivate enum MyEnum {}
-
-
↓fileprivate class MyClass {
-  fileprivate(set) var myInt = 4
-}
-
-
↓fileprivate actor MyActor {
-  fileprivate let myInt = 4
-}
-
-
    ↓fileprivate func f() {}
-    ↓fileprivate var x = 0
-
- -
-
- - -
-
- - - diff --git a/private_subject.html b/private_subject.html deleted file mode 100644 index 3d6da6002..000000000 --- a/private_subject.html +++ /dev/null @@ -1,574 +0,0 @@ - - - - private_subject Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Combine Subject

- -

Combine Subject should be private

- -
    -
  • Identifier: private_subject
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    fileprivate let goodSubject: CurrentValueSubject<String, Never>
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<String, Never> = .init("toto")
-}
-
-
final class Foobar {
-    private let goodSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    private let goodSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private let goodSubject:
-        PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    init() {
-        let goodSubject = CurrentValueSubject<Bool, Never>(true)
-        self.goosSubject = goodSubject
-    }
-}
-
-
func foo() {
-    let goodSubject = PassthroughSubject<Bool, Never>(true)
-}
-
-

Triggering Examples

-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: PassthroughSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let goodSubject: PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = PassthroughSubject<Bool, Never>()
-    private let goodSubject: PassthroughSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject: CurrentValueSubject<Bool, Never>
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    let goodSubject: CurrentValueSubject<String, Never> = .init("toto")
-}
-
-
final class Foobar {
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(false)
-}
-
-
final class Foobar {
-    private(set) let ↓badSubject = CurrentValueSubject<Bool, Never>(false)
-    private let goodSubject: CurrentValueSubject<Bool, Never>
-    private(set) let ↓anotherBadSubject = CurrentValueSubject<Bool, Never>(true)
-}
-
-
final class Foobar {
-    let ↓badSubject = PassthroughSubject<Set<String>, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject: PassthroughSubject<Set<String>, Never> = .init()
-}
-
-
final class Foobar {
-    let ↓badSubject: CurrentValueSubject<Set<String>, Never> = .init([])
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        PassthroughSubject<Bool, Never>()
-}
-
-
final class Foobar {
-    let ↓badSubject:
-        PassthroughSubject<Bool, Never> = .init()
-}
-
-
final class Foobar {
-    let ↓badSubject =
-        CurrentValueSubject<Bool, Never>(true)
-}
-
- -
-
- - -
-
- - - diff --git a/private_swiftui_state.html b/private_swiftui_state.html deleted file mode 100644 index a4999b2dc..000000000 --- a/private_swiftui_state.html +++ /dev/null @@ -1,564 +0,0 @@ - - - - private_swiftui_state Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private SwiftUI State Properties

- -

SwiftUI state properties should be private

- -
    -
  • Identifier: private_swiftui_state
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct MyApp: App {
-    @State private var isPlaying: Bool = false
-}
-
-
struct MyScene: Scene {
-    @State private var isPlaying: Bool = false
-}
-
-
struct CofntentView: View {
-    @State private var isPlaying: Bool = false
-}
-
-
struct ContentView: View {
-    @State private var isPlaying: Bool = false
-
-    struct InnerView: View {
-        @State private var showsIndicator: Bool = false
-    }
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State private var isPlaying: Bool = false
-    }
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State private var isPlaying: Bool = false
-    }
-
-    @State var nonTriggeringState: Bool = false
-}
-
-
struct ContentView: View {
-    var s: Int {
-        @State
-        var s: Int = 3
-        return s
-    }
-
-    var body: some View { Text("") }
-}
-
-
struct ContentView: View {
-    var isPlaying = false
-}
-
-
struct MyApp: App {
-    @StateObject private var model = DataModel()
-}
-
-
struct MyScene: Scene {
-    @StateObject private var model = DataModel()
-}
-
-
struct ContentView: View {
-    @StateObject private var model = DataModel()
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @StateObject private var dataModel = DataModel()
-    }
-
-    @StateObject var nonTriggeringObject = MyModel()
-}
-
-
struct Foo {
-    @State var bar = false
-}
-
-
class Foo: ObservableObject {
-    @State var bar = Bar()
-}
-
-
extension MyObject {
-    struct ContentView: View {
-        @State private var isPlaying: Bool = false
-    }
-}
-
-
actor ContentView: View {
-    @State private var isPlaying: Bool = false
-}
-
-

Triggering Examples

-
struct MyApp: App {
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct MyScene: Scene {
-    @State ↓public var isPlaying: Bool = false
-}
-
-
struct ContentView: View {
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct ContentView: View {
-    struct InnerView: View {
-        @State private var showsIndicator: Bool = false
-    }
-
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State ↓var isPlaying: Bool = false
-    }
-}
-
-
struct MyStruct {
-    struct ContentView: View {
-        @State ↓var isPlaying: Bool = false
-    }
-
-    @State var isPlaying: Bool = false
-}
-
-
final class ContentView: View {
-    @State ↓var isPlaying: Bool = false
-}
-
-
extension MyObject {
-    struct ContentView: View {
-        @State ↓var isPlaying: Bool = false
-    }
-}
-
-
actor ContentView: View {
-    @State ↓var isPlaying: Bool = false
-}
-
-
struct MyApp: App {
-    @StateObject ↓var model = DataModel()
-}
-
-
struct MyScene: Scene {
-    @StateObject ↓var model = DataModel()
-}
-
-
struct ContentView: View {
-    @StateObject ↓var model = DataModel()
-}
-
-
struct ContentView: View {
-    @State ↓private(set) var isPlaying = false
-
-
struct ContentView: View {
-    @State ↓fileprivate(set) public var isPlaying = false
-
- -
-
- - -
-
- - - diff --git a/private_unit_test.html b/private_unit_test.html deleted file mode 100644 index efd6099bd..000000000 --- a/private_unit_test.html +++ /dev/null @@ -1,499 +0,0 @@ - - - - private_unit_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Private Unit Test

- -

Unit tests marked private are silently skipped

- -
    -
  • Identifier: private_unit_test
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
    -regex - -“XCTestCase” -
  • -
-

Non Triggering Examples

-
class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
@objc private class FooTest: XCTestCase {
-    @objc private func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
private class Foo: NSObject {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
private class Foo {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-}
-
-
public class FooTest: XCTestCase {
-    private func test1(param: Int) {}
-    private func test2() -> String { "" }
-    private func atest() {}
-    private static func test3() {}
-}
-
-

Triggering Examples

-
private ↓class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private func test4() {}
-}
-
-
class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private ↓func test4() {}
-}
-
-
internal class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private ↓func test4() {}
-}
-
-
public class FooTest: XCTestCase {
-    func test1() {}
-    internal func test2() {}
-    public func test3() {}
-    private ↓func test4() {}
-}
-
- -
-
- - -
-
- - - diff --git a/prohibited_interface_builder.html b/prohibited_interface_builder.html deleted file mode 100644 index 68fe72d3e..000000000 --- a/prohibited_interface_builder.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - prohibited_interface_builder Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited Interface Builder

- -

Creating views using Interface Builder should be avoided

- -
    -
  • Identifier: prohibited_interface_builder
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @objc func buttonTapped(_ sender: UIButton) {}
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBAction ↓func buttonTapped(_ sender: UIButton) {}
-}
-
- -
-
- - -
-
- - - diff --git a/prohibited_super_call.html b/prohibited_super_call.html deleted file mode 100644 index 642f95acf..000000000 --- a/prohibited_super_call.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - prohibited_super_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Prohibited Calls to Super

- -

Some methods should not call super.

- -
    -
  • Identifier: prohibited_super_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -excluded - -[] -
    -included - -[“*”] -
  • -
-

Non Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {
-    }
-}
-
-
class NSView {
-    func updateLayer() {
-        self.method1()
-    }
-}
-
-
public class FileProviderExtension: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {
-        guard let identifier = persistentIdentifierForItem(at: url) else {
-            completionHandler(NSFileProviderError(.noSuchItem))
-            return
-        }
-    }
-}
-
-

Triggering Examples

-
class VC: UIViewController {
-    override func loadView() {↓
-        super.loadView()
-    }
-}
-
-
class VC: NSFileProviderExtension {
-    override func providePlaceholder(at url: URL, completionHandler: @escaping (Error?) -> Void) {↓
-        self.method1()
-        super.providePlaceholder(at:url, completionHandler: completionHandler)
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        self.method1()
-        super.updateLayer()
-        self.method2()
-    }
-}
-
-
class VC: NSView {
-    override func updateLayer() {↓
-        defer {
-            super.updateLayer()
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/protocol_property_accessors_order.html b/protocol_property_accessors_order.html deleted file mode 100644 index 8a61fb4f1..000000000 --- a/protocol_property_accessors_order.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - protocol_property_accessors_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Protocol Property Accessors Order

- -

When declaring properties in protocols, the order of accessors should be get set

- -
    -
  • Identifier: protocol_property_accessors_order
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
protocol Foo {
- var bar: String { get set }
- }
-
-
protocol Foo {
- var bar: String { get }
- }
-
-
protocol Foo {
- var bar: String { set }
- }
-
-

Triggering Examples

-
protocol Foo {
- var bar: String { ↓set get }
- }
-
- -
-
- - -
-
- - - diff --git a/quick_discouraged_call.html b/quick_discouraged_call.html deleted file mode 100644 index 738d6a277..000000000 --- a/quick_discouraged_call.html +++ /dev/null @@ -1,704 +0,0 @@ - - - - quick_discouraged_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Call

- -

Discouraged call inside ‘describe’ and/or ‘context’ block.

- -
    -
  • Identifier: quick_discouraged_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class TotoTests {
-   override func spec() {
-       describe("foo") {
-           let foo = Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           beforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           afterEach {
-               let foo = Foo()
-               foo.toto()
-           }
-           describe("bar") {
-           }
-           context("bar") {
-           }
-           it("bar") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           justBeforeEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           aroundEach {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-          itBehavesLike("bar")
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           it("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           xit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fcontext("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fdescribe("foo") {
-           afterEach { toto.append(foo) }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           fit("does something") {
-               let foo = Foo()
-               foo.toto()
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       fitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xitBehavesLike("foo")
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override static func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               let foo = ↓Foo()
-           }
-           context("bar") {
-               let foo = ↓Foo()
-               ↓foo.bar()
-               it("does something") {
-                   let foo = Foo()
-                   foo.toto()
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("foo") {
-               context("foo") {
-                   beforeEach {
-                       let foo = Foo()
-                       foo.toto()
-                   }
-                   it("bar") {
-                   }
-                   context("foo") {
-                       let foo = ↓Foo()
-                   }
-               }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       sharedExamples("foo") {
-           ↓foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xdescribe("foo") {
-           let foo = ↓Foo()
-       }
-       fdescribe("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       xcontext("foo") {
-           let foo = ↓Foo()
-       }
-       fcontext("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
-
class TotoTests: QuickSpecSubclass {
-   override func spec() {
-       xcontext("foo") {
-           let foo = ↓Foo()
-       }
-       fcontext("foo") {
-           let foo = ↓Foo()
-       }
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/quick_discouraged_focused_test.html b/quick_discouraged_focused_test.html deleted file mode 100644 index 60f41ca7a..000000000 --- a/quick_discouraged_focused_test.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - quick_discouraged_focused_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Focused Test

- -

Non-focused tests won’t run as long as this test is focused

- -
    -
  • Identifier: quick_discouraged_focused_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓fit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓fit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓fitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpecSubclass {
-   override func spec() {
-       ↓fitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/quick_discouraged_pending_test.html b/quick_discouraged_pending_test.html deleted file mode 100644 index 77ae59b2f..000000000 --- a/quick_discouraged_pending_test.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - quick_discouraged_pending_test Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Quick Discouraged Pending Test

- -

This test won’t run as long as it’s marked pending

- -
    -
  • Identifier: quick_discouraged_pending_test
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           describe("bar") { }
-           context("bar") {
-               it("bar") { }
-           }
-           it("bar") { }
-           itBehavesLike("bar")
-       }
-   }
-}
-
-

Triggering Examples

-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xdescribe("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xcontext("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xit("foo") { }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       context("foo") {
-           ↓xit("bar") { }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       describe("foo") {
-           context("bar") {
-               ↓xit("toto") { }
-           }
-       }
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓pending("foo")
-   }
-}
-
-
class TotoTests: QuickSpec {
-   override func spec() {
-       ↓xitBehavesLike("foo")
-   }
-}
-
-
class TotoTests: QuickSpecSubclass {
-   override func spec() {
-       ↓xitBehavesLike("foo")
-   }
-}
-
- -
-
- - -
-
- - - diff --git a/raw_value_for_camel_cased_codable_enum.html b/raw_value_for_camel_cased_codable_enum.html deleted file mode 100644 index 1b152b1c3..000000000 --- a/raw_value_for_camel_cased_codable_enum.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - raw_value_for_camel_cased_codable_enum Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Raw Value for Camel Cased Codable Enum

- -

Camel cased cases of Codable String enums should have raw values

- -
    -
  • Identifier: raw_value_for_camel_cased_codable_enum
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Numbers: Codable {
-  case int(Int)
-  case short(Int16)
-}
-
-
enum Numbers: Int, Codable {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: Double, Codable {
-  case one = 1.1
-  case two = 2.2
-}
-
-
enum Numbers: String, Codable {
-  case one = "one"
-  case two = "two"
-}
-
-
enum Status: String, Codable {
-    case OK, ACCEPTABLE
-}
-
-
enum Status: String, Codable {
-    case ok
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: Int, Codable {
-    case ok
-    case notAcceptable
-    case maybeAcceptable = -1
-}
-
-

Triggering Examples

-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Decodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Encodable {
-   case ok
-   case ↓notAcceptable
-   case maybeAcceptable = "maybe_acceptable"
-}
-
-
enum Status: String, Codable {
-    case ok
-    case ↓notAcceptable
-    case maybeAcceptable = "maybe_acceptable"
-}
-
- -
-
- - -
-
- - - diff --git a/reduce_boolean.html b/reduce_boolean.html deleted file mode 100644 index 1da51bd07..000000000 --- a/reduce_boolean.html +++ /dev/null @@ -1,436 +0,0 @@ - - - - reduce_boolean Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce Boolean

- -

Prefer using .allSatisfy() or .contains() over reduce(true) or reduce(false).

- -
    -
  • Identifier: reduce_boolean
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
nums.reduce(0) { $0.0 + $0.1 }
-
-
nums.reduce(0.0) { $0.0 + $0.1 }
-
-
nums.reduce(initial: true) { $0.0 && $0.1 == 3 }
-
-

Triggering Examples

-
let allNines = nums.↓reduce(true) { $0.0 && $0.1 == 9 }
-
-
let anyNines = nums.↓reduce(false) { $0.0 || $0.1 == 9 }
-
-
let allValid = validators.↓reduce(true) { $0 && $1(input) }
-
-
let anyValid = validators.↓reduce(false) { $0 || $1(input) }
-
-
let allNines = nums.↓reduce(true, { $0.0 && $0.1 == 9 })
-
-
let anyNines = nums.↓reduce(false, { $0.0 || $0.1 == 9 })
-
-
let allValid = validators.↓reduce(true, { $0 && $1(input) })
-
-
let anyValid = validators.↓reduce(false, { $0 || $1(input) })
-
-
nums.reduce(into: true) { (r: inout Bool, s) in r = r && (s == 3) }
-
- -
-
- - -
-
- - - diff --git a/reduce_into.html b/reduce_into.html deleted file mode 100644 index e109b9b3b..000000000 --- a/reduce_into.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - reduce_into Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Reduce into

- -

Prefer reduce(into:_:) over reduce(_:_:) for copy-on-write types

- -
    -
  • Identifier: reduce_into
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = values.reduce(into: "abc") { $0 += "\($1)" }
-
-
values.reduce(into: Array<Int>()) { result, value in
-    result.append(value)
-}
-
-
let rows = violations.enumerated().reduce(into: "") { rows, indexAndViolation in
-    rows.append(generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1))
-}
-
-
zip(group, group.dropFirst()).reduce(into: []) { result, pair in
-    result.append(pair.0 + pair.1)
-}
-
-
let foo = values.reduce(into: [String: Int]()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: Dictionary<String, Int>.init()) { result, value in
-    result["\(value)"] = value
-}
-
-
let foo = values.reduce(into: [Int](repeating: 0, count: 10)) { result, value in
-    result.append(value)
-}
-
-
let foo = values.reduce(MyClass()) { result, value in
-    result.handleValue(value)
-    return result
-}
-
-

Triggering Examples

-
let bar = values.↓reduce("abc") { $0 + "\($1)" }
-
-
values.↓reduce(Array<Int>()) { result, value in
-    result += [value]
-}
-
-
[1, 2, 3].↓reduce(Set<Int>()) { acc, value in
-    var result = acc
-    result.insert(value)
-    return result
-}
-
-
let rows = violations.enumerated().↓reduce("") { rows, indexAndViolation in
-    return rows + generateSingleRow(for: indexAndViolation.1, at: indexAndViolation.0 + 1)
-}
-
-
zip(group, group.dropFirst()).↓reduce([]) { result, pair in
-    result + [pair.0 + pair.1]
-}
-
-
let foo = values.↓reduce([String: Int]()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce(Dictionary<String, Int>.init()) { result, value in
-    var result = result
-    result["\(value)"] = value
-    return result
-}
-
-
let bar = values.↓reduce([Int](repeating: 0, count: 10)) { result, value in
-    return result + [value]
-}
-
-
extension Data {
-    var hexString: String {
-        return ↓reduce("") { (output, byte) -> String in
-            output + String(format: "%02x", byte)
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/redundant_discardable_let.html b/redundant_discardable_let.html deleted file mode 100644 index 9443ee46f..000000000 --- a/redundant_discardable_let.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - redundant_discardable_let Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Discardable Let

- -

Prefer _ = foo() over let _ = foo() when discarding a result from a function

- -
    -
  • Identifier: redundant_discardable_let
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
_ = foo()
-
-
if let _ = foo() { }
-
-
guard let _ = foo() else { return }
-
-
let _: ExplicitType = foo()
-
-
while let _ = SplashStyle(rawValue: maxValue) { maxValue += 1 }
-
-
async let _ = await foo()
-
-

Triggering Examples

-
↓let _ = foo()
-
-
if _ = foo() { ↓let _ = bar() }
-
- -
-
- - -
-
- - - diff --git a/redundant_nil_coalescing.html b/redundant_nil_coalescing.html deleted file mode 100644 index d18897e10..000000000 --- a/redundant_nil_coalescing.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - redundant_nil_coalescing Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Nil Coalescing

- -

nil coalescing operator is only evaluated if the lhs is nil, coalescing operator with nil as rhs is redundant

- -
    -
  • Identifier: redundant_nil_coalescing
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var myVar: Int?; myVar ?? 0
-
-

Triggering Examples

-
var myVar: Int? = nil; myVar ↓?? nil
-
- -
-
- - -
-
- - - diff --git a/redundant_objc_attribute.html b/redundant_objc_attribute.html deleted file mode 100644 index 4bd0d9ce5..000000000 --- a/redundant_objc_attribute.html +++ /dev/null @@ -1,602 +0,0 @@ - - - - redundant_objc_attribute Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant @objc Attribute

- -

Objective-C attribute (@objc) is redundant in declaration

- -
    -
  • Identifier: redundant_objc_attribute
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
@objc private var foo: String? {}
-
-
@IBInspectable private var foo: String? {}
-
-
@objc private func foo(_ sender: Any) {}
-
-
@IBAction private func foo(_ sender: Any) {}
-
-
@GKInspectable private var foo: String! {}
-
-
private @GKInspectable var foo: String! {}
-
-
@NSManaged var foo: String!
-
-
@objc @NSCopying var foo: String!
-
-
@objcMembers
-class Foo {
-    var bar: Any?
-    @objc
-    class Bar: NSObject {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    var bar: Int {
-        return 0
-    }
-}
-
-
extension Foo {
-    @objc
-    var bar: Int { return 0 }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    var bar: Int { return 0 }
-}
-
-
@IBDesignable
-extension Foo {
-    @objc
-    var bar: Int { return 0 }
-    var fooBar: Int { return 1 }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc
-    private var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo {
-    @objc
-    class Bar: NSObject {
-        @objc var foo: Any?
-    }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc class Bar {}
-}
-
-
extension BlockEditorSettings {
-    @objc(addElementsObject:)
-    @NSManaged public func addToElements(_ value: BlockEditorSettingElement)
-}
-
-
@objcMembers
-public class Foo: NSObject {
-    @objc
-    private func handler(_ notification: Notification) {
-    }
-
-    func registerForNotifications() {
-        NotificationCenter.default.addObserver(self, selector: #selector(handler(_:)), name: nil, object: nil)
-    }
-}
-
-
class Foo: NSObject { }
-
-@objc extension Foo {
-    @objc enum Bar: Int {
-       case bar
-    }
-
-    var bar: Bar { .bar }
-}
-
-
class Foo: NSObject { }
-
-@objc extension Foo {
-    @objc private enum Baz: Int {
-      case baz
-    }
-
-    private var baz: Baz { .baz }
-}
-
-
@objcMembers
-internal class Foo: NSObject {
-    @objc
-    private var baz: Int = 1
-
-    var x: Any? {
-        value(forKey: "baz")
-    }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objc enum Bar: Int {
-       case bar
-    }
-}
-
-

Triggering Examples

-
↓@objc @IBInspectable private var foo: String? {}
-
-
@IBInspectable ↓@objc private var foo: String? {}
-
-
↓@objc @IBAction private func foo(_ sender: Any) {}
-
-
@IBAction ↓@objc private func foo(_ sender: Any) {}
-
-
↓@objc @GKInspectable private var foo: String! {}
-
-
@GKInspectable ↓@objc private var foo: String! {}
-
-
↓@objc @NSManaged private var foo: String!
-
-
@NSManaged ↓@objc private var foo: String!
-
-
↓@objc @IBDesignable class Foo {}
-
-
@objcMembers
-class Foo: NSObject {
-    ↓@objc var bar: Any?
-}
-
-
@objcMembers
-class Foo: NSObject {
-    ↓@objc var bar: Any?
-    ↓@objc var foo: Any?
-    @objc
-    class Bar {
-        @objc
-        var foo: Any?
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objc @IBDesignable
-extension Foo {
-    ↓@objc
-    var bar: Int {
-        return 0
-    }
-}
-
-
@objcMembers
-class Foo: NSObject {
-    @objcMembers
-    class Bar: NSObject {
-        ↓@objc var foo: Any
-    }
-}
-
-
@objc
-extension Foo {
-    ↓@objc
-    private var bar: Int {
-        return 0
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/redundant_optional_initialization.html b/redundant_optional_initialization.html deleted file mode 100644 index c7475789c..000000000 --- a/redundant_optional_initialization.html +++ /dev/null @@ -1,463 +0,0 @@ - - - - redundant_optional_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Optional Initialization

- -

Initializing an optional variable with nil is redundant

- -
    -
  • Identifier: redundant_optional_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var myVar: Int?
-
-
let myVar: Int? = nil
-
-
var myVar: Int? = 0
-
-
func foo(bar: Int? = 0) { }
-
-
var myVar: Optional<Int>
-
-
let myVar: Optional<Int> = nil
-
-
var myVar: Optional<Int> = 0
-
-
var foo: Int? {
-  if bar != nil { }
-  return 0
-}
-
-
var foo: Int? = {
-  if bar != nil { }
-  return 0
-}()
-
-
lazy var test: Int? = nil
-
-
func funcName() {
-  var myVar: String?
-}
-
-
func funcName() {
-  let myVar: String? = nil
-}
-
-

Triggering Examples

-
var myVar: Int?↓ = nil
-
-
var myVar: Optional<Int>↓ = nil
-
-
var myVar: Int?↓=nil
-
-
var myVar: Optional<Int>↓=nil
-)
-
-
var myVar: String?↓ = nil {
-  didSet { print("didSet") }
-}
-
-
func funcName() {
-    var myVar: String?↓ = nil
-}
-
- -
-
- - -
-
- - - diff --git a/redundant_self_in_closure.html b/redundant_self_in_closure.html deleted file mode 100644 index 44e021d32..000000000 --- a/redundant_self_in_closure.html +++ /dev/null @@ -1,581 +0,0 @@ - - - - redundant_self_in_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Self in Closure

- -

Explicit use of ‘self’ is not required

- -
    -
  • Identifier: redundant_self_in_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct S {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f {
-            x = 1
-            f { x = 1 }
-            g()
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [weak self] in
-            self?.x = 1
-            self?.g()
-            guard let self = self ?? C() else { return }
-            self?.x = 1
-        }
-        C().f { self.x = 1 }
-        f { [weak self] in if let self { x = 1 } }
-    }
-}
-
-
struct S {
-    var x = 0, error = 0, exception = 0
-    var y: Int?, z: Int?, u: Int, v: Int?, w: Int?
-    func f(_ work: @escaping (Int) -> Void) { work() }
-    func g(x: Int) {
-        f { u in
-            self.x = x
-            let x = 1
-            self.x = 2
-            if let y, let v {
-                self.y = 3
-                self.v = 1
-            }
-            guard let z else {
-                let v = 4
-                self.x = 5
-                self.v = 6
-                return
-            }
-            self.z = 7
-            while let v { self.v = 8 }
-            for w in [Int]() { self.w = 9 }
-            self.u = u
-            do {} catch { self.error = 10 }
-            do {} catch let exception { self.exception = 11 }
-        }
-    }
-}
-
-
enum E {
-    case a(Int)
-    case b(Int, Int)
-}
-struct S {
-    var x: E = .a(3), y: Int, z: Int
-    func f(_ work: @escaping () -> Void) { work() }
-    func g(x: Int) {
-        f {
-            switch x {
-            case let .a(y):
-                self.y = 1
-            case .b(let y, var z):
-                self.y = 2
-                self.z = 3
-            }
-        }
-    }
-}
-
-

Triggering Examples

-
struct S {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f {
-            ↓self.x = 1
-            if ↓self.x == 1 { ↓self.g() }
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func g() {
-        {
-            ↓self.x = 1
-            ↓self.g()
-        }()
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [self] in
-            ↓self.x = 1
-            ↓self.g()
-            f { self.x = 1 }
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [unowned self] in ↓self.x = 1 }
-        f { [self = self] in ↓self.x = 1 }
-        f { [s = self] in s.x = 1 }
-    }
-}
-
-
struct S {
-    var x = 0
-    var y: Int?, z: Int?, v: Int?, w: Int?
-    func f(_ work: @escaping () -> Void) { work() }
-    func g(w: Int, _ v: Int) {
-        f {
-            self.w = 1
-            ↓self.x = 2
-            if let y { ↓self.x = 3 }
-            else { ↓self.y = 3 }
-            guard let z else {
-                ↓self.z = 4
-                ↓self.x = 5
-                return
-            }
-            ↓self.y = 6
-            while let y { ↓self.x = 7 }
-            for y in [Int]() { ↓self.x = 8 }
-            self.v = 9
-            do {
-                let x = 10
-                self.x = 11
-            }
-            ↓self.x = 12
-        }
-    }
-}
-
-
class C {
-    var x = 0
-    func f(_ work: @escaping () -> Void) { work() }
-    func g() {
-        f { [weak self] in
-            self?.x = 1
-            guard let self else { return }
-            ↓self.x = 1
-        }
-        f { [weak self] in
-            self?.x = 1
-            if let self = self else { ↓self.x = 1 }
-            self?.x = 1
-        }
-        f { [weak self] in
-            self?.x = 1
-            while let self else { ↓self.x = 1 }
-            self?.x = 1
-        }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/redundant_set_access_control.html b/redundant_set_access_control.html deleted file mode 100644 index 390b37e85..000000000 --- a/redundant_set_access_control.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - redundant_set_access_control Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Access Control for Setter

- -

Property setter access level shouldn’t be explicit if it’s the same as the variable access level

- -
    -
  • Identifier: redundant_set_access_control
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
private(set) public var foo: Int
-
-
public let foo: Int
-
-
public var foo: Int
-
-
var foo: Int
-
-
private final class A {
-  private(set) var value: Int
-}
-
-
extension Color {
-    public internal(set) static var someColor = Color.anotherColor
-}
-
-

Triggering Examples

-
↓private(set) private var foo: Int
-
-
↓fileprivate(set) fileprivate var foo: Int
-
-
↓internal(set) internal var foo: Int
-
-
↓public(set) public var foo: Int
-
-
open class Foo {
-  ↓open(set) open var bar: Int
-}
-
-
class A {
-  ↓internal(set) var value: Int
-}
-
-
internal class A {
-  ↓internal(set) var value: Int
-}
-
-
fileprivate class A {
-  ↓fileprivate(set) var value: Int
-}
-
- -
-
- - -
-
- - - diff --git a/redundant_string_enum_value.html b/redundant_string_enum_value.html deleted file mode 100644 index 19e0c4f41..000000000 --- a/redundant_string_enum_value.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - redundant_string_enum_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant String Enum Value

- -

String enum values can be omitted when they are equal to the enumcase name

- -
    -
  • Identifier: redundant_string_enum_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum Numbers: String {
-  case one
-  case two
-}
-
-
enum Numbers: Int {
-  case one = 1
-  case two = 2
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "TWO"
-}
-
-
enum Numbers: String {
-  case one = "ONE"
-  case two = "two"
-}
-
-
enum Numbers: String {
-  case one, two
-}
-
-

Triggering Examples

-
enum Numbers: String {
-  case one = ↓"one"
-  case two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one = ↓"one", two = ↓"two"
-}
-
-
enum Numbers: String {
-  case one, two = ↓"two"
-}
-
- -
-
- - -
-
- - - diff --git a/redundant_type_annotation.html b/redundant_type_annotation.html deleted file mode 100644 index 673b6061d..000000000 --- a/redundant_type_annotation.html +++ /dev/null @@ -1,641 +0,0 @@ - - - - redundant_type_annotation Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Type Annotation

- -

Variables should not have redundant type annotation

- -
    -
  • Identifier: redundant_type_annotation
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_attributes - -[“IBInspectable”] -
    -ignore_properties - -false -
    -consider_default_literal_types_redundant - -false -
  • -
-

Non Triggering Examples

-
var url = URL()
-
-
var url: CustomStringConvertible = URL()
-
-
var one: Int = 1, two: Int = 2, three: Int
-
-
guard let url = URL() else { return }
-
-
if let url = URL() { return }
-
-
let alphanumerics = CharacterSet.alphanumerics
-
-
var set: Set<Int> = Set([])
-
-
var set: Set<Int> = Set.init([])
-
-
var set = Set<Int>([])
-
-
var set = Set<Int>.init([])
-
-
guard var set: Set<Int> = Set([]) else { return }
-
-
if var set: Set<Int> = Set.init([]) { return }
-
-
guard var set = Set<Int>([]) else { return }
-
-
if var set = Set<Int>.init([]) { return }
-
-
var one: A<T> = B()
-
-
var one: A = B<T>()
-
-
var one: A<T> = B<T>()
-
-
let a = A.b.c.d
-
-
let a: B = A.b.c.d
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction: Direction = .up
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction = Direction.up
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-@IgnoreMe var a: Int = Int(5)
-
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-var a: Int {
-    @IgnoreMe let i: Int = Int(1)
-    return i
-}
-
-
-
var bol: Bool = true
-
-
var dbl: Double = 0.0
-
-
var int: Int = 0
-
-
var str: String = "str"
-
-
//
-// ignore_properties: true
-//
-
-struct Foo {
-    var url: URL = URL()
-    let myVar: Int? = 0, s: String = ""
-}
-
-
-

Triggering Examples

-
var url↓:URL=URL()
-
-
var url↓:URL = URL(string: "")
-
-
var url↓: URL = URL()
-
-
let url↓: URL = URL()
-
-
lazy var url↓: URL = URL()
-
-
let url↓: URL = URL()!
-
-
var one: Int = 1, two↓: Int = Int(5), three: Int
-
-
guard let url↓: URL = URL() else { return }
-
-
if let url↓: URL = URL() { return }
-
-
let alphanumerics↓: CharacterSet = CharacterSet.alphanumerics
-
-
var set↓: Set<Int> = Set<Int>([])
-
-
var set↓: Set<Int> = Set<Int>.init([])
-
-
var set↓: Set = Set<Int>([])
-
-
var set↓: Set = Set<Int>.init([])
-
-
guard var set↓: Set = Set<Int>([]) else { return }
-
-
if var set↓: Set = Set<Int>.init([]) { return }
-
-
guard var set↓: Set<Int> = Set<Int>([]) else { return }
-
-
if var set↓: Set<Int> = Set<Int>.init([]) { return }
-
-
var set↓: Set = Set<Int>([]), otherSet: Set<Int>
-
-
var num↓: Int = Int.random(0..<10)
-
-
let a↓: A = A.b.c.d
-
-
let a↓: A = A.f().b
-
-
class ViewController: UIViewController {
-  func someMethod() {
-    let myVar↓: Int = Int(5)
-  }
-}
-
-
//
-// ignore_properties: true
-//
-
-class ViewController: UIViewController {
-  func someMethod() {
-    let myVar↓: Int = Int(5)
-  }
-}
-
-
-
let a↓: [Int] = [Int]()
-
-
let a↓: A.B = A.B()
-
-
enum Direction {
-    case up
-    case down
-}
-
-var direction↓: Direction = Direction.up
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-@DontIgnoreMe var a↓: Int = Int(5)
-
-
-
//
-// ignore_attributes: ["IgnoreMe"]
-//
-
-@IgnoreMe
-var a: Int {
-    let i↓: Int = Int(1)
-    return i
-}
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var bol↓: Bool = true
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var dbl↓: Double = 0.0
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var int↓: Int = 0
-
-
-
//
-// consider_default_literal_types_redundant: true
-//
-
-var str↓: String = "str"
-
-
- -
-
- - -
-
- - - diff --git a/redundant_void_return.html b/redundant_void_return.html deleted file mode 100644 index 0b59625ae..000000000 --- a/redundant_void_return.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - redundant_void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Redundant Void Return

- -

Returning Void in a function declaration is redundant

- -
    -
  • Identifier: redundant_void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -include_closures - -true -
  • -
-

Non Triggering Examples

-
func foo() {}
-
-
func foo() -> Int {}
-
-
func foo() -> Int -> Void {}
-
-
func foo() -> VoidResponse
-
-
let foo: (Int) -> Void
-
-
func foo() -> Int -> () {}
-
-
let foo: (Int) -> ()
-
-
func foo() -> ()?
-
-
func foo() -> ()!
-
-
func foo() -> Void?
-
-
func foo() -> Void!
-
-
struct A {
-    subscript(key: String) {
-        print(key)
-    }
-}
-
-
//
-// include_closures: false
-//
-
-doSomething { arg -> Void in
-    print(arg)
-}
-
-
-

Triggering Examples

-
func foo()↓ -> Void {}
-
-
protocol Foo {
-  func foo()↓ -> Void
-}
-
-
func foo()↓ -> () {}
-
-
func foo()↓ -> ( ) {}
-
-
protocol Foo {
-  func foo()↓ -> ()
-}
-
-
doSomething { arg↓ -> () in
-    print(arg)
-}
-
-
doSomething { arg↓ -> Void in
-    print(arg)
-}
-
- -
-
- - -
-
- - - diff --git a/required_deinit.html b/required_deinit.html deleted file mode 100644 index 7814f9eec..000000000 --- a/required_deinit.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - required_deinit Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Deinit

- -

Classes should have an explicit deinit method

- -
    -
  • Identifier: required_deinit
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Apple {
-    deinit { }
-}
-
-
enum Banana { }
-
-
protocol Cherry { }
-
-
struct Damson { }
-
-
class Outer {
-    deinit { print("Deinit Outer") }
-    class Inner {
-        deinit { print("Deinit Inner") }
-    }
-}
-
-

Triggering Examples

-
↓class Apple { }
-
-
↓class Banana: NSObject, Equatable { }
-
-
↓class Cherry {
-    // deinit { }
-}
-
-
↓class Damson {
-    func deinitialize() { }
-}
-
-
class Outer {
-    func hello() -> String { return "outer" }
-    deinit { }
-    ↓class Inner {
-        func hello() -> String { return "inner" }
-    }
-}
-
-
↓class Outer {
-    func hello() -> String { return "outer" }
-    class Inner {
-        func hello() -> String { return "inner" }
-        deinit { }
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/required_enum_case.html b/required_enum_case.html deleted file mode 100644 index 0a56dbc4f..000000000 --- a/required_enum_case.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - required_enum_case Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Required Enum Case

- -

Enums conforming to a specified protocol must implement a specific case(s).

- -
    -
  • Identifier: required_enum_case
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -{Protocol Name} - - - - - - - - - - - - - - - -
    KeyValue
    -{Case Name 1} - -{warning|error} -
    -{Case Name 2} - -{warning|error} -
    -
  • -
-

Non Triggering Examples

-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error, notConnected(error: Error)
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-    case notConnected(error: Error)
-}
-
-
-

Triggering Examples

-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success, error
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
-
-
//
-// NetworkResponsable:
-//   error: warning
-//   notConnected: warning
-//   success: warning
-//
-
-↓enum MyNetworkResponse: String, NetworkResponsable {
-    case success
-    case error
-}
-
-
- -
-
- - -
-
- - - diff --git a/return_arrow_whitespace.html b/return_arrow_whitespace.html deleted file mode 100644 index 3afc43f92..000000000 --- a/return_arrow_whitespace.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - return_arrow_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Returning Whitespace

- -

Return arrow and return type should be separated by a single space or on a separate line

- -
    -
  • Identifier: return_arrow_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func abc() -> Int {}
-
-
func abc() -> [Int] {}
-
-
func abc() -> (Int, Int) {}
-
-
var abc = {(param: Int) -> Void in }
-
-
func abc() ->
-    Int {}
-
-
func abc()
-    -> Int {}
-
-
func reallyLongFunctionMethods<T>(withParam1: Int, param2: String, param3: Bool) where T: AGenericConstraint
-    -> Int {
-    return 1
-}
-
-
typealias SuccessBlock = ((Data) -> Void)
-
-

Triggering Examples

-
func abc()↓->Int {}
-
-
func abc()↓->[Int] {}
-
-
func abc()↓->(Int, Int) {}
-
-
func abc()↓-> Int {}
-
-
func abc()↓->   Int {}
-
-
func abc()↓ ->Int {}
-
-
func abc()↓  ->  Int {}
-
-
var abc = {(param: Int)↓ ->Bool in }
-
-
var abc = {(param: Int)↓->Bool in }
-
-
typealias SuccessBlock = ((Data)↓->Void)
-
-
func abc()
-  ↓->  Int {}
-
-
func abc()
- ↓->  Int {}
-
-
func abc()↓  ->
-  Int {}
-
-
func abc()↓  ->
-Int {}
-
- -
-
- - -
-
- - - diff --git a/return_value_from_void_function.html b/return_value_from_void_function.html deleted file mode 100644 index b56bc6d1f..000000000 --- a/return_value_from_void_function.html +++ /dev/null @@ -1,626 +0,0 @@ - - - - return_value_from_void_function Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Return Value from Void Function

- -

Returning values from Void functions should be avoided

- -
    -
  • Identifier: return_value_from_void_function
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func foo() {
-    return
-}
-
-
func foo() {
-    return /* a comment */
-}
-
-
func foo() -> Int {
-    return 1
-}
-
-
func foo() -> Void {
-    if condition {
-        return
-    }
-    bar()
-}
-
-
func foo() {
-    return;
-    bar()
-}
-
-
func test() {}
-
-
init?() {
-    guard condition else {
-        return nil
-    }
-}
-
-
init?(arg: String?) {
-    guard arg != nil else {
-        return nil
-    }
-}
-
-
func test() {
-    guard condition else {
-        return
-    }
-}
-
-
func test() -> Result<String, Error> {
-    func other() {}
-    func otherVoid() -> Void {}
-}
-
-
func test() -> Int? {
-    return nil
-}
-
-
func test() {
-    if bar {
-        print("")
-        return
-    }
-    let foo = [1, 2, 3].filter { return true }
-    return
-}
-
-
func test() {
-    guard foo else {
-        bar()
-        return
-    }
-}
-
-
func spec() {
-    var foo: Int {
-        return 0
-    }
-
-
func f() -> () { g() }
-
-
func f() { g() }
-
-
func f() { { return g() }() }
-
-
func f() {
-    func g() -> Int {
-        return 1
-    }
-}
-
-
init?() { return nil }
-
-
func f() {
-    var i: Int { return 1 }
-}
-
-

Triggering Examples

-
func foo() {
-    ↓return bar()
-}
-
-
func foo() -> () {
-    ↓return self.bar()
-}
-
-
func foo() -> Void {
-    ↓return bar()
-}
-
-
func foo() -> Void {
-    ↓return /* comment */ bar()
-}
-
-
func foo() {
-    ↓return
-    self.bar()
-}
-
-
func foo() {
-    variable += 1
-    ↓return
-    variable += 1
-}
-
-
func initThing() {
-    guard foo else {
-        ↓return print("")
-    }
-}
-
-
// Leading comment
-func test() {
-    guard condition else {
-        ↓return assertionfailure("")
-    }
-}
-
-
func test() -> Result<String, Error> {
-    func other() {
-        guard false else {
-            ↓return assertionfailure("")
-        }
-    }
-    func otherVoid() -> Void {}
-}
-
-
func test() {
-    guard conditionIsTrue else {
-        sideEffects()
-        return // comment
-    }
-    guard otherCondition else {
-        ↓return assertionfailure("")
-    }
-    differentSideEffect()
-}
-
-
func test() {
-    guard otherCondition else {
-        ↓return assertionfailure(""); // comment
-    }
-    differentSideEffect()
-}
-
-
func test() {
-  if x {
-    ↓return foo()
-  }
-  bar()
-}
-
-
func test() {
-  switch x {
-    case .a:
-      ↓return foo() // return to skip baz()
-    case .b:
-      bar()
-  }
-  baz()
-}
-
-
func test() {
-  if check {
-    if otherCheck {
-      ↓return foo()
-    }
-  }
-  bar()
-}
-
-
func test() {
-    ↓return foo()
-}
-
-
func test() {
-  ↓return foo({
-    return bar()
-  })
-}
-
-
func test() {
-  guard x else {
-    ↓return foo()
-  }
-  bar()
-}
-
-
func test() {
-  let closure: () -> () = {
-    return assert()
-  }
-  if check {
-    if otherCheck {
-      return // comments are fine
-    }
-  }
-  ↓return foo()
-}
-
- -
-
- - -
-
- - - diff --git a/rule-directory.html b/rule-directory.html deleted file mode 100644 index 45a55042f..000000000 --- a/rule-directory.html +++ /dev/null @@ -1,639 +0,0 @@ - - - - Rule Directory Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Rule Directory

-

Default Rules

- - -

Opt-in Rules

- - -

Analyzer Rules

- - - -
-
- - -
-
- - - diff --git a/search.json b/search.json deleted file mode 100644 index 8674ea78d..000000000 --- a/search.json +++ /dev/null @@ -1 +0,0 @@ -{"Macros.html#/s:13SwiftLintCore16AutoConfigParseryycfm":{"name":"AutoConfigParser()","abstract":"

Macro to be attached to rule configurations. It generates the configuration parsing logic"},"Macros.html#/s:13SwiftLintCore32AcceptableByConfigurationElementyycfm":{"name":"AcceptableByConfigurationElement()","abstract":"

Macro that lets an enum with a String raw type automatically conform to AcceptableByConfigurationElement.

"},"Macros.html#/s:13SwiftLintCore0A10SyntaxRule15foldExpressions16explicitRewriterySb_Sbtcfm":{"name":"SwiftSyntaxRule(foldExpressions:explicitRewriter:)","abstract":"

Macro that adds a conformance to the SwiftSyntaxRule protocol and a default makeVisitor(file:) implementation"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV7warningSivp":{"name":"warning","abstract":"

The threshold for a violation to be a warning.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV5errorSiSgvp":{"name":"error","abstract":"

The threshold for a violation to be an error.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV7warning5errorACyxGSi_SiSgtcfc":{"name":"init(warning:error:)","abstract":"

Create a SeverityLevelsConfiguration based on the specified warning and error thresholds.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore27SeverityLevelsConfigurationV6paramsSayAA13RuleParameterVySiGGvp":{"name":"params","abstract":"

The rule parameters that define the thresholds that should map to each severity.

","parent_name":"SeverityLevelsConfiguration"},"Structs/SeverityLevelsConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"SeverityLevelsConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV10identifierSSvp":{"name":"identifier","abstract":"

The identifier for this custom rule.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV4nameSSSgvp":{"name":"name","abstract":"

The name for this custom rule.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV7messageSSvp":{"name":"message","abstract":"

The message to be presented when producing violations.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV8includedSaySo19NSRegularExpressionCGvp":{"name":"included","abstract":"

Regular expressions to include when matching the file path.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV8excludedSaySo19NSRegularExpressionCGvp":{"name":"excluded","abstract":"

Regular expressions to exclude when matching the file path.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV18excludedMatchKindsShy21SourceKittenFramework10SyntaxKindOGvp":{"name":"excludedMatchKinds","abstract":"

The syntax kinds to exclude from matches. If the regex matched syntax kinds from this list, it would","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationP08severityG0AA0dG0Vy6ParentQzGvp":{"name":"severityConfiguration","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV12captureGroupSivp":{"name":"captureGroup","abstract":"

The index of the regex capture group to match.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore24CacheDescriptionProviderP05cacheE0SSvp":{"name":"cacheDescription","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV11descriptionAA15RuleDescriptionVvp":{"name":"description","abstract":"

The RuleDescription for the custom rule defined here.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore18RegexConfigurationV10identifierACyxGSS_tcfc":{"name":"init(identifier:)","abstract":"

Create a RegexConfiguration with the specified identifier, with other properties to be set later.

","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"RegexConfiguration"},"Structs/RegexConfiguration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"RegexConfiguration"},"Structs/ReasonedRuleViolation/ViolationCorrection.html#/s:13SwiftLintCore21ReasonedRuleViolationV0F10CorrectionV5start3end11replacementAE0A6Syntax16AbsolutePositionV_AKSStcfc":{"name":"init(start:end:replacement:)","abstract":"

Create a ViolationCorrection.

","parent_name":"ViolationCorrection"},"Structs/ReasonedRuleViolation/ViolationCorrection.html":{"name":"ViolationCorrection","abstract":"

The correction of a violation that is basically the violation’s range in the source code and a","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV8position0A6Syntax16AbsolutePositionVvp":{"name":"position","abstract":"

The violation’s position.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV6reasonSSSgvp":{"name":"reason","abstract":"

A specific reason for the violation.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV8severityAA0F8SeverityOSgvp":{"name":"severity","abstract":"

The violation’s severity.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV10correctionAC0F10CorrectionVSgvp":{"name":"correction","abstract":"

An optional correction of the violation to be used in rewriting (see SwiftSyntaxCorrectableRule). Can be","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:13SwiftLintCore21ReasonedRuleViolationV8position6reason8severity10correctionAC0A6Syntax16AbsolutePositionV_SSSgAA0F8SeverityOSgAC0F10CorrectionVSgtcfc":{"name":"init(position:reason:severity:correction:)","abstract":"

Creates a ReasonedRuleViolation.

","parent_name":"ReasonedRuleViolation"},"Structs/ReasonedRuleViolation.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"ReasonedRuleViolation"},"Structs/YamlParser.html#/s:13SwiftLintCore10YamlParserV5parse_3envSDySSypGSS_SDyS2SGtKFZ":{"name":"parse(_:env:)","abstract":"

Parses the input YAML string as an untyped dictionary.

","parent_name":"YamlParser"},"Structs/Version.html#/s:13SwiftLintCore7VersionV5valueSSvp":{"name":"value","abstract":"

The string value for this version.

","parent_name":"Version"},"Structs/Version.html#/s:13SwiftLintCore7VersionV8rawValueSSvp":{"name":"rawValue","abstract":"

An alias for value required for protocol conformance.

","parent_name":"Version"},"Structs/Version.html#/s:13SwiftLintCore7VersionV7currentACvpZ":{"name":"current","abstract":"

The current SwiftLint version.

","parent_name":"Version"},"Structs/Version.html#/s:13SwiftLintCore7VersionV5valueACSS_tcfc":{"name":"init(value:)","abstract":"

Public initializer.

","parent_name":"Version"},"Structs/SwiftVersion.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV4fiveACvpZ":{"name":"five","abstract":"

Swift 5.0.x - https://swift.org/download/#swift-50

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV10fiveDotOneACvpZ":{"name":"fiveDotOne","abstract":"

Swift 5.1.x - https://swift.org/download/#swift-51

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV10fiveDotTwoACvpZ":{"name":"fiveDotTwo","abstract":"

Swift 5.2.x - https://swift.org/download/#swift-52

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV12fiveDotThreeACvpZ":{"name":"fiveDotThree","abstract":"

Swift 5.3.x - https://swift.org/download/#swift-53

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV11fiveDotFourACvpZ":{"name":"fiveDotFour","abstract":"

Swift 5.4.x - https://swift.org/download/#swift-54

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV11fiveDotFiveACvpZ":{"name":"fiveDotFive","abstract":"

Swift 5.5.x - https://swift.org/download/#swift-55

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV10fiveDotSixACvpZ":{"name":"fiveDotSix","abstract":"

Swift 5.6.x - https://swift.org/download/#swift-56

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV12fiveDotSevenACvpZ":{"name":"fiveDotSeven","abstract":"

Swift 5.7.x - https://swift.org/download/#swift-57

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV12fiveDotEightACvpZ":{"name":"fiveDotEight","abstract":"

Swift 5.8.x - https://swift.org/download/#swift-58

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV11fiveDotNineACvpZ":{"name":"fiveDotNine","abstract":"

Swift 5.9.x - https://swift.org/download/#swift-59

","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:13SwiftLintCore0A7VersionV7currentACvpZ":{"name":"current","abstract":"

The current detected Swift compiler version, based on the currently accessible SourceKit version.

","parent_name":"SwiftVersion"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV5value21SourceKittenFramework0dE0Vvp":{"name":"value","abstract":"

The raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV4kind21SourceKittenFramework0D4KindOSgvp":{"name":"kind","abstract":"

The syntax kind associated with is token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV5valueAC21SourceKittenFramework0dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV5range21SourceKittenFramework9ByteRangeVvp":{"name":"range","abstract":"

The byte range in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV6offset21SourceKittenFramework9ByteCountVvp":{"name":"offset","abstract":"

The starting byte offset in a source file for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:13SwiftLintCore0aB11SyntaxTokenV6length21SourceKittenFramework9ByteCountVvp":{"name":"length","abstract":"

The length in bytes for this token.

","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV5value21SourceKittenFramework0dE0Vvp":{"name":"value","abstract":"

The raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV6tokensSayAA0abD5TokenVGvp":{"name":"tokens","abstract":"

The SwiftLint-specific syntax tokens for this syntax map.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV5valueAC21SourceKittenFramework0dE0V_tcfc":{"name":"init(value:)","abstract":"

Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV6tokens11inByteRangeSayAA0abD5TokenVG21SourceKittenFramework0hI0V_tF":{"name":"tokens(inByteRange:)","abstract":"

Returns array of syntax tokens intersecting with byte range.

","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:13SwiftLintCore0aB9SyntaxMapV5kinds11inByteRangeSay21SourceKittenFramework0D4KindOGAF0hI0V_tF":{"name":"kinds(inByteRange:)","abstract":"

Returns the syntax kinds in the specified byte range.

","parent_name":"SwiftLintSyntaxMap"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV14ruleIdentifierSSvp":{"name":"ruleIdentifier","abstract":"

The identifier of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV15ruleDescriptionSSvp":{"name":"ruleDescription","abstract":"

The description of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV8ruleNameSSvp":{"name":"ruleName","abstract":"

The name of the rule that generated this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV8severityAA0E8SeverityOvp":{"name":"severity","abstract":"

The severity of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV6reasonSSvp":{"name":"reason","abstract":"

The justification for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV11descriptionSSvp":{"name":"description","abstract":"

A printable description for this violation.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV15ruleDescription8severity8location6reasonAcA04RuleG0V_AA0E8SeverityOAA8LocationVSSSgtcfc":{"name":"init(ruleDescription:severity:location:reason:)","abstract":"

Creates a StyleViolation by specifying its properties directly.

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV4with8severityAcA0E8SeverityO_tF":{"name":"with(severity:)","abstract":"

Returns the same violation, but with the severity that is passed in

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:13SwiftLintCore14StyleViolationV4with8locationAcA8LocationV_tF":{"name":"with(location:)","abstract":"

Returns the same violation, but with the location that is passed in

","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"StyleViolation"},"Structs/RuleParameter.html#/s:13SwiftLintCore13RuleParameterV8severityAA17ViolationSeverityOvp":{"name":"severity","abstract":"

The severity that should be assigned to the violation of this parameter’s value is met.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:13SwiftLintCore13RuleParameterV5valuexvp":{"name":"value","abstract":"

The value to configure the rule.

","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:13SwiftLintCore13RuleParameterV8severity5valueACyxGAA17ViolationSeverityO_xtcfc":{"name":"init(severity:value:)","abstract":"

Creates a RuleParameter by specifying its properties directly.

","parent_name":"RuleParameter"},"Structs/RuleList.html#/s:13SwiftLintCore8RuleListV4listSDySSAA0D0_pXpGvp":{"name":"list","abstract":"

The rules contained in this list.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:13SwiftLintCore8RuleListV5rulesAcA0D0_pXpd_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:13SwiftLintCore8RuleListV5rulesACSayAA0D0_pXpG_tcfc":{"name":"init(rules:)","abstract":"

Creates a RuleList by specifying all its rules.

","parent_name":"RuleList"},"Structs/RuleList.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleList"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV10identifierSSvp":{"name":"identifier","abstract":"

The rule’s unique identifier, to be used in configuration files and SwiftLint commands.","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV4nameSSvp":{"name":"name","abstract":"

The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV11descriptionSSvp":{"name":"description","abstract":"

The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV4kindAA0D4KindOvp":{"name":"kind","abstract":"

The RuleKind that best categorizes this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV21nonTriggeringExamplesSayAA7ExampleVGvp":{"name":"nonTriggeringExamples","abstract":"

Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV18triggeringExamplesSayAA7ExampleVGvp":{"name":"triggeringExamples","abstract":"

Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV11correctionsSDyAA7ExampleVAFGvp":{"name":"corrections","abstract":"

Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV17deprecatedAliasesShySSGvp":{"name":"deprecatedAliases","abstract":"

Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV03minA7VersionAA0aG0Vvp":{"name":"minSwiftVersion","abstract":"

The oldest version of the Swift compiler supported by this rule.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV18requiresFileOnDiskSbvp":{"name":"requiresFileOnDisk","abstract":"

Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV07consoleE0SSvp":{"name":"consoleDescription","abstract":"

The console-printable string for this description.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV14allIdentifiersSaySSGvp":{"name":"allIdentifiers","abstract":"

All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:13SwiftLintCore15RuleDescriptionV10identifier4name11description4kind03minA7Version21nonTriggeringExamples010triggeringN011corrections17deprecatedAliases18requiresFileOnDiskACSS_S2SAA0D4KindOAA0aK0VSayAA7ExampleVGATSDyA2SGShySSGSbtcfc":{"name":"init(identifier:name:description:kind:minSwiftVersion:nonTriggeringExamples:triggeringExamples:corrections:deprecatedAliases:requiresFileOnDisk:)","abstract":"

Creates a RuleDescription by specifying all its properties directly.

","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleDescription"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationV5errorACyxGvpZ":{"name":"error","abstract":"

Configuration with a warning severity.

","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationV7warningACyxGvpZ":{"name":"warning","abstract":"

Configuration with an error severity.

","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationP08severityG0AA0dG0Vy6ParentQzGvp":{"name":"severityConfiguration","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationVyACyxGAA09ViolationD0Ocfc":{"name":"init(_:)","abstract":"

Create a SeverityConfiguration with the specified severity.

","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"SeverityConfiguration"},"Structs/SeverityConfiguration.html#/s:13SwiftLintCore21SeverityConfigurationV13asDescription4withAA04RuleeG0VSS_tF":{"name":"asDescription(with:)","abstract":"

Severity configurations are special in that they shall not be nested when an option name is provided.","parent_name":"SeverityConfiguration"},"Structs/ConfigurationElement/DeprecationNotice.html#/s:13SwiftLintCore20ConfigurationElementV17DeprecationNoticeO18suggestAlternativeyAEyx_GSS_SStcAGmSQRzAA012AcceptableBydE0RzlF":{"name":"suggestAlternative(ruleID:name:)","abstract":"

Warning suggesting an alternative option.

","parent_name":"DeprecationNotice"},"Structs/ConfigurationElement/DeprecationNotice.html":{"name":"DeprecationNotice","abstract":"

A deprecation notice.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValuexvp":{"name":"wrappedValue","abstract":"

Wrapped option value.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV14projectedValueACyxGvp":{"name":"projectedValue","abstract":"

The wrapper itself providing access to all its data. This field can only be accessed by the","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV3keySSvp":{"name":"key","abstract":"

Name of this configuration entry.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV6inlineSbvp":{"name":"inline","abstract":"

Whether this configuration element will be inlined into its description.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValue3key17deprecationNotice13postprocessorACyxGx_SSAC011DeprecationJ0Oyx_GSgyxzctcfc":{"name":"init(wrappedValue:key:deprecationNotice:postprocessor:)","abstract":"

Default constructor.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV3keyACyqd__SgGSS_tcAERszSQRd__AA012AcceptableBydE0Rd__lufc":{"name":"init(key:)","abstract":"

Constructor for optional values.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValue6inlineACyxGx_SbtcAA19InlinableOptionTypeRzrlufc":{"name":"init(wrappedValue:inline:)","abstract":"

Constructor for an InlinableOptionType without a key.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:13SwiftLintCore20ConfigurationElementV12wrappedValue3keyACyxGx_SStcAA19InlinableOptionTypeRzrlufc":{"name":"init(wrappedValue:key:)","abstract":"

Constructor for an InlinableOptionType with a name. The configuration will explicitly not be inlined.

","parent_name":"ConfigurationElement"},"Structs/ConfigurationElement.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"ConfigurationElement"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore23RuleConfigurationOptionV9noOptionsACvpZ":{"name":"noOptions","abstract":"

An option serving as a marker for an empty configuration description.

","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationOption.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","parent_name":"RuleConfigurationOption"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","parent_name":"RuleConfigurationDescription"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","parent_name":"RuleConfigurationDescription"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","parent_name":"RuleConfigurationDescription"},"Structs/RuleConfigurationDescription.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","parent_name":"RuleConfigurationDescription"},"Structs/Region.html#/s:13SwiftLintCore6RegionV5startAA8LocationVvp":{"name":"start","abstract":"

The location describing the start of the region. All locations that are less than this value","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV3endAA8LocationVvp":{"name":"end","abstract":"

The location describing the end of the region. All locations that are greater than this value","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV23disabledRuleIdentifiersShyAA0F10IdentifierOGvp":{"name":"disabledRuleIdentifiers","abstract":"

All SwiftLint rule identifiers that are disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV5start3end23disabledRuleIdentifiersAcA8LocationV_AHShyAA0H10IdentifierOGtcfc":{"name":"init(start:end:disabledRuleIdentifiers:)","abstract":"

Creates a Region by setting explicit values for all its properties.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV8containsySbAA8LocationVF":{"name":"contains(_:)","abstract":"

Whether the specific location is contained in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV13isRuleEnabledySbxAA0F0RzlF":{"name":"isRuleEnabled(_:)","abstract":"

Whether the specified rule is enabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV14isRuleDisabledySbxAA0F0RzlF":{"name":"isRuleDisabled(_:)","abstract":"

Whether the specified rule is disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV16areRulesDisabled7ruleIDsSbSaySSG_tF":{"name":"areRulesDisabled(ruleIDs:)","abstract":"

Whether the given rules are disabled in this region.

","parent_name":"Region"},"Structs/Region.html#/s:13SwiftLintCore6RegionV26deprecatedAliasesDisabling4ruleShySSGx_tAA4RuleRzlF":{"name":"deprecatedAliasesDisabling(rule:)","abstract":"

Returns the deprecated rule aliases that are disabling the specified rule in this region.","parent_name":"Region"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4fileSSSgvp":{"name":"file","abstract":"

The file path on disk for this location.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4lineSiSgvp":{"name":"line","abstract":"

The line offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV9characterSiSgvp":{"name":"character","abstract":"

The character offset in the file for this location. 1-indexed.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV11descriptionSSvp":{"name":"description","abstract":"

A lossless printable description of this location.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV12relativeFileSSSgvp":{"name":"relativeFile","abstract":"

The file path for this location relative to the current working directory.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file4line9characterACSSSg_SiSgAHtcfc":{"name":"init(file:line:character:)","abstract":"

Creates a Location by specifying its properties directly.

","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file10byteOffsetAcA0aB4FileC_21SourceKittenFramework9ByteCountVtcfc":{"name":"init(file:byteOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a byte-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file8positionAcA0aB4FileC_0A6Syntax16AbsolutePositionVtcfc":{"name":"init(file:position:)","abstract":"

Creates a Location based on a SwiftLintFile and a SwiftSyntax AbsolutePosition into the file.","parent_name":"Location"},"Structs/Location.html#/s:13SwiftLintCore8LocationV4file15characterOffsetAcA0aB4FileC_Sitcfc":{"name":"init(file:characterOffset:)","abstract":"

Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Location"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV15styleViolations5usingSayAA14StyleViolationVGAA11RuleStorageC_tF":{"name":"styleViolations(using:)","abstract":"

Computes or retrieves style violations.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV27styleViolationsAndRuleTimes5usingSayAA14StyleViolationVG_SaySS2id_Sd4timetGtAA0I7StorageC_tF":{"name":"styleViolationsAndRuleTimes(using:)","abstract":"

Computes or retrieves style violations and the time spent executing each rule.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV7correct5usingSayAA10CorrectionVGAA11RuleStorageC_tF":{"name":"correct(using:)","abstract":"

Applies corrections for all rules to this file, returning performed corrections.

","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:13SwiftLintCore15CollectedLinterV6format7useTabs11indentWidthySb_SitF":{"name":"format(useTabs:indentWidth:)","abstract":"

Formats the file associated with this linter.

","parent_name":"CollectedLinter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file to lint with this linter.

","parent_name":"Linter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV12isCollectingSbvp":{"name":"isCollecting","abstract":"

Whether or not this linter will be used to collect information from several files.

","parent_name":"Linter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV4file13configuration5cache17compilerArgumentsAcA0aB4FileC_AA13ConfigurationVAA0D5CacheCSgSaySSGtcfc":{"name":"init(file:configuration:cache:compilerArguments:)","abstract":"

Creates a Linter by specifying its properties directly.

","parent_name":"Linter"},"Structs/Linter.html#/s:13SwiftLintCore6LinterV7collect4intoAA09CollectedD0VAA11RuleStorageC_tF":{"name":"collect(into:)","abstract":"

Returns a linter capable of checking for violations after running each rule’s collection step.

","parent_name":"Linter"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4codeSSvp":{"name":"code","abstract":"

The contents of the example

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV13configurationSDySSs8Sendable_pGSgvp":{"name":"configuration","abstract":"

The untyped configuration to apply to the rule, if deviating from the default configuration.","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV20testMultiByteOffsetsSbvp":{"name":"testMultiByteOffsets","abstract":"

Whether the example should be tested by prepending multibyte grapheme clusters

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV11testOnLinuxSbvp":{"name":"testOnLinux","abstract":"

Whether the example should be tested on Linux

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4files12StaticStringVvp":{"name":"file","abstract":"

The path to the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4lineSuvp":{"name":"line","abstract":"

The line in the file where the example was created

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV_13configuration20testMultiByteOffsets0F17WrappingInComment0fjK6String0F14DisableCommand0F7OnLinux4file4line24excludeFromDocumentationACSS_SDySSs8Sendable_pGSgS5bs06StaticM0VSuSbtcfc":{"name":"init(_:configuration:testMultiByteOffsets:testWrappingInComment:testWrappingInString:testDisableCommand:testOnLinux:file:line:excludeFromDocumentation:)","abstract":"

Create a new Example with the specified code, file, and line.

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV4with4codeACSS_tF":{"name":"with(code:)","abstract":"

Returns the same example, but with the code that is passed in

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV24removingViolationMarkersACyF":{"name":"removingViolationMarkers()","abstract":"

Returns a copy of the Example with all instances of the “↓” character removed.

","parent_name":"Example"},"Structs/Example.html#/s:13SwiftLintCore7ExampleV7focusedACyF":{"name":"focused()","abstract":"

Makes the current example focused. This is for debugging purposes only.

","parent_name":"Example"},"Structs/Example.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Example"},"Structs/Example.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Example"},"Structs/Example.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Example"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV15ruleDescriptionAA04RuleF0Vvp":{"name":"ruleDescription","abstract":"

The description of the rule for which this correction was applied.

","parent_name":"Correction"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV8locationAA8LocationVvp":{"name":"location","abstract":"

The location of the original violation that was corrected.

","parent_name":"Correction"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"

The console-printable description for this correction.

","parent_name":"Correction"},"Structs/Correction.html#/s:13SwiftLintCore10CorrectionV15ruleDescription8locationAcA04RuleF0V_AA8LocationVtcfc":{"name":"init(ruleDescription:location:)","abstract":"

Memberwise initializer.

","parent_name":"Correction"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV7defaultACvpZ":{"name":"default","abstract":"

The default Configuration resulting from an empty configuration file.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV15defaultFileNameSSvpZ":{"name":"defaultFileName","abstract":"

The default file name to look for user-defined configurations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13includedPathsSaySSGvp":{"name":"includedPaths","abstract":"

The paths that should be included when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13excludedPathsSaySSGvp":{"name":"excludedPaths","abstract":"

The paths that should be excluded when linting

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV11indentationAC16IndentationStyleOvp":{"name":"indentation","abstract":"

The style to use when indenting Swift source code.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV16warningThresholdSiSgvp":{"name":"warningThreshold","abstract":"

The threshold for the number of warnings to tolerate before treating the lint as having failed.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV8reporterSSSgvp":{"name":"reporter","abstract":"

The identifier for the Reporter to use to report style violations.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV9cachePathSSSgvp":{"name":"cachePath","abstract":"

The location of the persisted cache to use with this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV22allowZeroLintableFilesSbvp":{"name":"allowZeroLintableFiles","abstract":"

Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV6strictSbvp":{"name":"strict","abstract":"

Treat warnings as errors.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV7lenientSbvp":{"name":"lenient","abstract":"

Treat errors as warnings.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV8baselineSSSgvp":{"name":"baseline","abstract":"

The path to read a baseline from.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13writeBaselineSSSgvp":{"name":"writeBaseline","abstract":"

The path to write a baseline to.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV15checkForUpdatesSbvp":{"name":"checkForUpdates","abstract":"

Check for updates.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV013basedOnCustomD5FilesSbvp":{"name":"basedOnCustomConfigurationFiles","abstract":"

This value is true iff the --config parameter was used to specify (a) configuration file(s)","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV5rulesSayAA4Rule_pGvp":{"name":"rules","abstract":"

All rules enabled in this configuration

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV13rootDirectorySSvp":{"name":"rootDirectory","abstract":"

The root directory is the directory that included & excluded paths relate to.","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV9rulesModeAC05RulesF0Ovp":{"name":"rulesMode","abstract":"

The rules mode used for this configuration.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:13SwiftLintCore13ConfigurationV18configurationFiles14enableAllRules8onlyRule9cachePath27ignoreParentAndChildConfigs20mockedNetworkResults25useDefaultConfigOnFailureACSaySSG_SbAKSSSgSbSDyS2SGSbSgtcfc":{"name":"init(configurationFiles:enableAllRules:onlyRule:cachePath:ignoreParentAndChildConfigs:mockedNetworkResults:useDefaultConfigOnFailure:)","abstract":"

Creates a Configuration with convenience parameters.

","parent_name":"Configuration"},"Structs/Configuration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"Configuration"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO8previousyA2EmF":{"name":"previous","abstract":"

The command should only apply to the line preceding its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO4thisyA2EmF":{"name":"this","abstract":"

The command should only apply to the same line as its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO4nextyA2EmF":{"name":"next","abstract":"

The command should only apply to the line following its definition.

","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:13SwiftLintCore7CommandV8ModifierO7invalidyA2EmF":{"name":"invalid","abstract":"

The modifier string was invalid.

","parent_name":"Modifier"},"Structs/Command/Action.html#/s:13SwiftLintCore7CommandV6ActionO6enableyA2EmF":{"name":"enable","abstract":"

The rule(s) associated with this command should be enabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html#/s:13SwiftLintCore7CommandV6ActionO7disableyA2EmF":{"name":"disable","abstract":"

The rule(s) associated with this command should be disabled by the SwiftLint engine.

","parent_name":"Action"},"Structs/Command/Action.html#/s:13SwiftLintCore7CommandV6ActionO7invalidyA2EmF":{"name":"invalid","abstract":"

The action string was invalid.

","parent_name":"Action"},"Structs/Command/Action.html":{"name":"Action","abstract":"

The action (verb) that SwiftLint should perform when interpreting this command.

","parent_name":"Command"},"Structs/Command/Modifier.html":{"name":"Modifier","abstract":"

The modifier for a command, used to modify its scope.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV6actionAC6ActionOvp":{"name":"action","abstract":"

The action (verb) that SwiftLint should perform when interpreting this command.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV15ruleIdentifiersShyAA14RuleIdentifierOGvp":{"name":"ruleIdentifiers","abstract":"

The identifiers for the rules associated with this command.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV4lineSivp":{"name":"line","abstract":"

The line in the source file where this command is defined.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV9characterSiSgvp":{"name":"character","abstract":"

The character offset within the line in the source file where this command is defined.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV8modifierAC8ModifierOSgvp":{"name":"modifier","abstract":"

This command’s modifier, if any.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV6action15ruleIdentifiers4line9character8modifier15trailingCommentA2C6ActionO_ShyAA14RuleIdentifierOGS2iSgAC8ModifierOSgSSSgtcfc":{"name":"init(action:ruleIdentifiers:line:character:modifier:trailingComment:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/Command.html#/s:13SwiftLintCore7CommandV12actionString4line9characterACSS_S2itcfc":{"name":"init(actionString:line:character:)","abstract":"

Creates a command based on the specified parameters.

","parent_name":"Command"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV5errorACyxGvpZ":{"name":"error","abstract":"

Configuration with a warning severity.

","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV7warningACyxGvpZ":{"name":"warning","abstract":"

Configuration with an error severity.

","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV3offACyxGvpZ":{"name":"off","abstract":"

Configuration disabling an option.

","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32ChildOptionSeverityConfigurationV8severityAA09ViolationF0OSgvp":{"name":"severity","abstract":"

The ChildOptionSeverityConfiguration mapped to a usually used ViolationSeverity. It’s nil if the option","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","parent_name":"ChildOptionSeverityConfiguration"},"Structs/ChildOptionSeverityConfiguration.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"ChildOptionSeverityConfiguration"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV10violationsSayAA14StyleViolationVGvp":{"name":"violations","abstract":"

The stored violations.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV8fromPathACSS_tKcfc":{"name":"init(fromPath:)","abstract":"

Creates a Baseline from a saved file.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV10violationsACSayAA14StyleViolationVG_tcfc":{"name":"init(violations:)","abstract":"

Creates a Baseline from a list of violations.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV5write6toPathySS_tKF":{"name":"write(toPath:)","abstract":"

Writes a Baseline to disk in JSON format.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV6filterySayAA14StyleViolationVGAGF":{"name":"filter(_:)","abstract":"

Filters out violations that are present in the Baseline.

","parent_name":"Baseline"},"Structs/Baseline.html#/s:13SwiftLintCore8BaselineV7compareySayAA14StyleViolationVGACF":{"name":"compare(_:)","abstract":"

Returns the violations that are present in another Baseline, but not in this one.

","parent_name":"Baseline"},"Structs/Stack.html#/s:13SwiftLintCore5StackVACyxGycfc":{"name":"init()","abstract":"

Creates an empty Stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV5countSivp":{"name":"count","abstract":"

The number of elements in this stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV4pushyyxF":{"name":"push(_:)","abstract":"

Pushes (appends) an element onto the stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV3popxSgyF":{"name":"pop()","abstract":"

Removes and returns the last element of the stack.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV4peekxSgyF":{"name":"peek()","abstract":"

Returns the last element of the stack if the stack is not empty; otherwise, nil.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV8contains5whereS2bxXE_tF":{"name":"contains(where:)","abstract":"

Check whether the sequence contains an element that satisfies the given predicate.

","parent_name":"Stack"},"Structs/Stack.html#/s:13SwiftLintCore5StackV10modifyLast2byyyxzXE_tF":{"name":"modifyLast(by:)","abstract":"

Modify the last element.

","parent_name":"Stack"},"Structs/Stack.html#/s:ST12makeIterator0B0QzyF":{"name":"makeIterator()","parent_name":"Stack"},"Structs/Stack.html#/s:s28CustomDebugStringConvertibleP16debugDescriptionSSvp":{"name":"debugDescription","parent_name":"Stack"},"Structs/RuleListDocumentation.html#/s:13SwiftLintCore21RuleListDocumentationVyAcA0dE0Vcfc":{"name":"init(_:)","abstract":"

Creates a RuleListDocumentation instance from a RuleList.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html#/s:13SwiftLintCore21RuleListDocumentationV5write2toy10Foundation3URLV_tKF":{"name":"write(to:)","abstract":"

Write the rule list documentation as markdown files to the specified directory.

","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html":{"name":"RuleListDocumentation","abstract":"

User-facing documentation for a SwiftLint RuleList.

"},"Structs/Stack.html":{"name":"Stack","abstract":"

A basic stack type implementing the LIFO principle - only the last inserted element can be accessed and removed.

"},"Structs/Baseline.html":{"name":"Baseline","abstract":"

A set of violations that can be used to filter newly detected violations.

"},"Structs/ChildOptionSeverityConfiguration.html":{"name":"ChildOptionSeverityConfiguration","abstract":"

A rule configuration that allows to disable (off) an option of a rule or specify its severity level in which"},"Structs/Command.html":{"name":"Command","abstract":"

A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.

"},"Structs/Configuration.html":{"name":"Configuration","abstract":"

The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.

"},"Structs/Correction.html":{"name":"Correction","abstract":"

A value describing a SwiftLint violation that was corrected.

"},"Structs/Example.html":{"name":"Example","abstract":"

Captures code and context information for an example of a triggering or"},"Structs/Linter.html":{"name":"Linter","abstract":"

Represents a file that can be linted for style violations and corrections after being collected.

"},"Structs/CollectedLinter.html":{"name":"CollectedLinter","abstract":"

Represents a file that can compute style violations and corrections for a list of rules.

"},"Structs/Location.html":{"name":"Location","abstract":"

The placement of a segment of Swift in a collection of source files.

"},"Structs/Region.html":{"name":"Region","abstract":"

A contiguous region of Swift source code.

"},"Structs/RuleConfigurationDescription.html":{"name":"RuleConfigurationDescription","abstract":"

Description of a rule configuration.

"},"Structs/RuleConfigurationOption.html":{"name":"RuleConfigurationOption","abstract":"

A single option of a RuleConfigurationDescription.

"},"Structs.html#/s:13SwiftLintCore35RuleConfigurationDescriptionBuilderV":{"name":"RuleConfigurationDescriptionBuilder","abstract":"

A result builder creating configuration descriptions.

"},"Structs/ConfigurationElement.html":{"name":"ConfigurationElement","abstract":"

A single parameter of a rule configuration.

"},"Structs/SeverityConfiguration.html":{"name":"SeverityConfiguration","abstract":"

A rule configuration that allows specifying the desired severity level for violations.

"},"Structs/RuleDescription.html":{"name":"RuleDescription","abstract":"

A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.

"},"Structs/RuleList.html":{"name":"RuleList","abstract":"

A list of available SwiftLint rules.

"},"Structs/RuleParameter.html":{"name":"RuleParameter","abstract":"

A configuration parameter for rules.

"},"Structs/StyleViolation.html":{"name":"StyleViolation","abstract":"

A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.

"},"Structs/SwiftLintSyntaxMap.html":{"name":"SwiftLintSyntaxMap","abstract":"

Represents a Swift file’s syntax information.

"},"Structs/SwiftLintSyntaxToken.html":{"name":"SwiftLintSyntaxToken","abstract":"

A SwiftLint-aware Swift syntax token.

"},"Structs/SwiftVersion.html":{"name":"SwiftVersion","abstract":"

A value describing the version of the Swift compiler.

"},"Structs/Version.html":{"name":"Version","abstract":"

A type describing the SwiftLint version.

"},"Structs/YamlParser.html":{"name":"YamlParser","abstract":"

An interface for parsing YAML.

"},"Structs/ReasonedRuleViolation.html":{"name":"ReasonedRuleViolation","abstract":"

A violation produced by ViolationsSyntaxVisitors.

"},"Structs/RegexConfiguration.html":{"name":"RegexConfiguration","abstract":"

A rule configuration used for defining custom rules in yaml.

"},"Structs/SeverityLevelsConfiguration.html":{"name":"SeverityLevelsConfiguration","abstract":"

A rule configuration that allows specifying thresholds for warning and error severities.

"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore0A10SyntaxRuleP11makeVisitor4fileAA010ViolationsdG0Cy17ConfigurationTypeQzGAA0aB4FileC_tF":{"name":"makeVisitor(file:)","abstract":"

Produce a ViolationsSyntaxVisitor for the given file.

","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore0A10SyntaxRuleP13makeViolation4file9violationAA05StyleG0VAA0aB4FileC_AA08ReasonedeG0VtF":{"name":"makeViolation(file:violation:)","abstract":"

Produce a violation for the given file and absolute position.

","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore0A10SyntaxRuleP10preprocess4file0aD0010SourceFileD0VSgAA0abI0C_tF":{"name":"preprocess(file:)","abstract":"

Gives a chance for the rule to do some pre-processing on the syntax tree.","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"SwiftSyntaxRule"},"Protocols/SwiftSyntaxCorrectableRule.html#/s:13SwiftLintCore0A21SyntaxCorrectableRuleP12makeRewriter4fileAA010ViolationsdH0Cy17ConfigurationTypeQzGSgAA0aB4FileC_tF":{"name":"makeRewriter(file:)","abstract":"

Produce a ViolationsSyntaxRewriter for the given file.

","parent_name":"SwiftSyntaxCorrectableRule"},"Protocols/SwiftSyntaxCorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"SwiftSyntaxCorrectableRule"},"Protocols/SeverityBasedRuleConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationP08severityG0AA0dG0Vy6ParentQzGvp":{"name":"severityConfiguration","abstract":"

The configuration of a rule’s severity.

","parent_name":"SeverityBasedRuleConfiguration"},"Protocols/SeverityBasedRuleConfiguration.html#/s:13SwiftLintCore30SeverityBasedRuleConfigurationPAAE8severityAA09ViolationD0Ovp":{"name":"severity","abstract":"

The severity of a rule.

","parent_name":"SeverityBasedRuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP6ParentQa":{"name":"Parent","abstract":"

The type of the rule that’s using this configuration.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP20parameterDescriptionAA0deG0VSgvp":{"name":"parameterDescription","abstract":"

A description for this configuration’s parameters. It can be built using the annotated result builder.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","abstract":"

Apply an untyped configuration to the current value.

","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationP8validateyyKF":{"name":"validate()","abstract":"

Run a sanity check on the configuration, perform optional postprocessing steps and/or warn about potential","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:13SwiftLintCore17RuleConfigurationPAAE13supportedKeysShySSGvp":{"name":"supportedKeys","abstract":"

All keys supported by this configuration.

","parent_name":"RuleConfiguration"},"Protocols/AnalyzerRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"AnalyzerRule"},"Protocols/SubstitutionCorrectableRule.html#/s:13SwiftLintCore27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","abstract":"

Returns the NSString-based NSRanges to be replaced in the specified file.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:13SwiftLintCore27SubstitutionCorrectableRuleP12substitution3for2inSo8_NSRangeV_SStSgAH_AA0aB4FileCtF":{"name":"substitution(for:in:)","abstract":"

Returns the substitution to apply for the given range.

","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"SubstitutionCorrectableRule"},"Protocols/CorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","abstract":"

Attempts to correct the violations to this rule in the specified file.

","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:13SwiftLintCore15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","abstract":"

Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CorrectableRule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP17ConfigurationTypeQa":{"name":"ConfigurationType","abstract":"

The type of the configuration used to configure this rule.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP11descriptionAA0D11DescriptionVvpZ":{"name":"description","abstract":"

A verbose description of many of this rule’s properties.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP13configuration17ConfigurationTypeQzvp":{"name":"configuration","abstract":"

This rule’s configuration.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP06shouldB10EmptyFilesSbvp":{"name":"shouldLintEmptyFiles","abstract":"

Whether this rule should be used on empty files. Defaults to false.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RulePxycfc":{"name":"init()","abstract":"

A default initializer for rules. All rules need to be trivially initializable.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","abstract":"

Creates a rule by applying its configuration.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP30createConfigurationDescription16exclusiveOptionsAA0dfG0VShySSG_tF":{"name":"createConfigurationDescription(exclusiveOptions:)","abstract":"

Create a description of how this rule has been configured to run.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","abstract":"

Executes the rule on a file and returns any violations to the rule’s expectations.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"

Whether or not the specified rule is equivalent to the current rule.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","abstract":"

Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter.

","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP13canBeDisabled9violation2bySbAA14StyleViolationV_AA0D10IdentifierOtF":{"name":"canBeDisabled(violation:by:)","abstract":"

Checks if a style violation can be disabled by a command specifying a rule ID. Only the rule can claim that for","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RuleP9isEnabled2in3forSbAA6RegionV_SStF":{"name":"isEnabled(in:for:)","abstract":"

Checks if a the rule is enabled in a given region. A specific rule ID can be provided in case a rule supports","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RulePAAE16cacheDescriptionSSvp":{"name":"cacheDescription","abstract":"

The cache description which will be used to determine if a previous","parent_name":"Rule"},"Protocols/Rule.html#/s:13SwiftLintCore4RulePAAE10identifierSSvpZ":{"name":"identifier","abstract":"

The rule’s unique identifier which is the same as Rule.description.identifier.

","parent_name":"Rule"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP10identifierSSvpZ":{"name":"identifier","abstract":"

The unique identifier for this reporter.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","abstract":"

Whether or not this reporter can output incrementally as violations are found or if all violations must be","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP11descriptionSSvpZ":{"name":"description","abstract":"

A more detailed description of the reporter’s output.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP11descriptionSSvp":{"name":"description","abstract":"

For CustomStringConvertible conformance.

","parent_name":"Reporter"},"Protocols/Reporter.html#/s:13SwiftLintCore8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","abstract":"

Return a string with the report for the specified violations.

","parent_name":"Reporter"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP8FileInfoQa":{"name":"FileInfo","abstract":"

The kind of information to collect for each file being linted for this rule.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP11collectInfo3for17compilerArguments04FileG0QzAA0abK0C_SaySSGtF":{"name":"collectInfo(for:compilerArguments:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP11collectInfo3for04FileG0QzAA0abI0C_tF":{"name":"collectInfo(for:)","abstract":"

Collects information for the specified file, to be analyzed by a CollectedLinter.

","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP8validate4file13collectedInfo17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SDyAL0nI0QzGSaySSGtF":{"name":"validate(file:collectedInfo:compilerArguments:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore14CollectingRuleP8validate4file13collectedInfoSayAA14StyleViolationVGAA0aB4FileC_SDyAK0lI0QzGtF":{"name":"validate(file:collectedInfo:)","abstract":"

Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:13SwiftLintCore4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CacheDescriptionProvider.html#/s:13SwiftLintCore24CacheDescriptionProviderP05cacheE0SSvp":{"name":"cacheDescription","abstract":"

The cache description which will be used to determine if a previous","parent_name":"CacheDescriptionProvider"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRuleP8KindTypeQa":{"name":"KindType","abstract":"

The kind of token being recursed over.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRuleP8validate4file4kind10dictionarySayAA14StyleViolationVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"validate(file:kind:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRuleP4kind4from8KindTypeQzSgAA22SourceKittenDictionaryV_tF":{"name":"kind(from:)","abstract":"

Get the kind from the specified dictionary.

","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:13SwiftLintCore7ASTRulePAAE8validate4file10dictionarySayAA14StyleViolationVGAA0aB4FileC_AA22SourceKittenDictionaryVtF":{"name":"validate(file:dictionary:)","abstract":"

Executes the rule on a file and a subset of its AST structure, returning any violations to the rule’s","parent_name":"ASTRule"},"Protocols/VersionComparable.html#/s:13SwiftLintCore17VersionComparableP8rawValueSSvp":{"name":"rawValue","abstract":"

The version string.

","parent_name":"VersionComparable"},"Protocols/VersionComparable.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"VersionComparable"},"Protocols/VersionComparable.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"VersionComparable"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","abstract":"

Initializer taking a value from a configuration to create an element of Self.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","abstract":"

Make the object an option.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP13asDescription4withAA04RulefI0VSS_tF":{"name":"asDescription(with:)","abstract":"

Make the object a description.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/AcceptableByConfigurationElement.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP5apply_6ruleIDyyp_SStKF":{"name":"apply(_:ruleID:)","abstract":"

Update the object.

","parent_name":"AcceptableByConfigurationElement"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","abstract":"

Convert an object to Markdown.

","parent_name":"Documentable"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","abstract":"

Convert an object to a single line string.

","parent_name":"Documentable"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","abstract":"

Indicate if the item has some content that is useful to document.

","parent_name":"Documentable"},"Protocols/Documentable.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","abstract":"

Convert an object to YAML as used in .swiftlint.yml.

","parent_name":"Documentable"},"Protocols/Documentable.html":{"name":"Documentable","abstract":"

A type that can be converted into a human-readable representation.

"},"Protocols/AcceptableByConfigurationElement.html":{"name":"AcceptableByConfigurationElement","abstract":"

Type of an object that can be used as a configuration element.

"},"Protocols.html#/s:13SwiftLintCore19InlinableOptionTypeP":{"name":"InlinableOptionType","abstract":"

An option type that can appear inlined into its using configuration.

"},"Protocols/VersionComparable.html":{"name":"VersionComparable","abstract":"

A comparable major.minor.patch version number.

"},"Protocols/ASTRule.html":{"name":"ASTRule","abstract":"

A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s"},"Protocols/CacheDescriptionProvider.html":{"name":"CacheDescriptionProvider","abstract":"

Interface providing access to a cache description.

"},"Protocols.html#/s:13SwiftLintCore17AnyCollectingRuleP":{"name":"AnyCollectingRule","abstract":"

Type-erased protocol used to check whether a rule is collectable.

"},"Protocols/CollectingRule.html":{"name":"CollectingRule","abstract":"

A rule that requires knowledge of all other files being linted.

"},"Protocols/Reporter.html":{"name":"Reporter","abstract":"

An interface for reporting violations as strings.

"},"Protocols/Rule.html":{"name":"Rule","abstract":"

An executable value that can identify issues (violations) in Swift source code.

"},"Protocols.html#/s:13SwiftLintCore9OptInRuleP":{"name":"OptInRule","abstract":"

A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.

"},"Protocols/CorrectableRule.html":{"name":"CorrectableRule","abstract":"

A rule that can correct violations.

"},"Protocols/SubstitutionCorrectableRule.html":{"name":"SubstitutionCorrectableRule","abstract":"

A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with"},"Protocols.html#/s:13SwiftLintCore17SourceKitFreeRuleP":{"name":"SourceKitFreeRule","abstract":"

A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.

"},"Protocols/AnalyzerRule.html":{"name":"AnalyzerRule","abstract":"

A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like"},"Protocols/RuleConfiguration.html":{"name":"RuleConfiguration","abstract":"

A configuration value for a rule to allow users to modify its behavior.

"},"Protocols/SeverityBasedRuleConfiguration.html":{"name":"SeverityBasedRuleConfiguration","abstract":"

A configuration for a rule that allows to configure at least the severity.

"},"Protocols/SwiftSyntaxCorrectableRule.html":{"name":"SwiftSyntaxCorrectableRule","abstract":"

A SwiftLint CorrectableRule that performs its corrections using a SwiftSyntax SyntaxRewriter.

"},"Protocols/SwiftSyntaxRule.html":{"name":"SwiftSyntaxRule","abstract":"

A SwiftLint Rule backed by SwiftSyntax that does not use SourceKit requests.

"},"Functions.html#/s:13SwiftLintCore12reporterFrom10identifierAA8Reporter_pXpSSSg_tF":{"name":"reporterFrom(identifier:)","abstract":"

Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any"},"Extensions/Double.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Double"},"Extensions/Double.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Double"},"Extensions/Int.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Int"},"Extensions/Int.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Int"},"Extensions/Set.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Set"},"Extensions/Set.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Set"},"Extensions/String.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"String"},"Extensions/String.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"String"},"Extensions/Bool.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Bool"},"Extensions/Bool.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Bool"},"Extensions/Optional.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Optional"},"Extensions/Optional.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Optional"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE26skipWrappingInCommentTestsSayACGyF":{"name":"skipWrappingInCommentTests()","abstract":"

Make these examples skip wrapping in comment tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE25skipWrappingInStringTestsSayACGyF":{"name":"skipWrappingInStringTests()","abstract":"

Make these examples skip wrapping in string tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE24skipMultiByteOffsetTestsSayACGyF":{"name":"skipMultiByteOffsetTests()","abstract":"

Make these examples skip multi-byte offset tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE23skipDisableCommandTestsSayACGyF":{"name":"skipDisableCommandTests()","abstract":"

Make these examples skip disable command tests.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA7ExampleVRszlE23removingViolationMarkerSayACGyF":{"name":"removingViolationMarker()","abstract":"

Remove all violation markers from the examples.

","parent_name":"Array"},"Extensions/Array.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP8asOptionAA0I4TypeOyF":{"name":"asOption()","parent_name":"Array"},"Extensions/Array.html#/s:13SwiftLintCore32AcceptableByConfigurationElementP7fromAny7contextxyp_SStKcfc":{"name":"init(fromAny:context:)","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA0aB11SyntaxTokenVRszlE5kindsSay21SourceKittenFramework0D4KindOGvp":{"name":"kinds","abstract":"

The kinds for these tokens.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA21ReasonedRuleViolationVRszlE6appendyy0A6Syntax16AbsolutePositionVF":{"name":"append(_:)","abstract":"

Add a violation at the specified position using the default description and severity.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA21ReasonedRuleViolationVRszlE6append2at10correctiony0A6Syntax16AbsolutePositionV_AC0F10CorrectionVSgtF":{"name":"append(at:correction:)","abstract":"

Add a violation and the correction at the specified position using the default description and severity.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCoreAA21ReasonedRuleViolationVRszlE6append10contentsOfySay0A6Syntax16AbsolutePositionVG_tF":{"name":"append(contentsOf:)","abstract":"

Add violations for the specified positions using the default description and severity.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCore0A6Syntax04DeclD8Protocol_pXpRszlE3allSayAbC_pXpGvpZ":{"name":"all","abstract":"

All visitable declaration syntax types.

","parent_name":"Array"},"Extensions/Array.html#/s:Sa13SwiftLintCore0A6Syntax04DeclD8Protocol_pXpRszlE9allExceptySayAbC_pXpGAbC_pXpd_tFZ":{"name":"allExcept(_:)","abstract":"

All declarations except for the specified ones.

","parent_name":"Array"},"Extensions/Array.html":{"name":"Array"},"Extensions/Optional.html":{"name":"Optional"},"Extensions/Bool.html":{"name":"Bool"},"Extensions/String.html":{"name":"String"},"Extensions/Set.html":{"name":"Set"},"Extensions/Int.html":{"name":"Int"},"Extensions/Double.html":{"name":"Double"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO9parameteryAC0A6Syntax05TokenG0V_tcACmF":{"name":"parameter(name:)","abstract":"

Parameter declaration with a name token.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO13localVariableyAC0A6Syntax05TokenH0V_tcACmF":{"name":"localVariable(name:)","abstract":"

Local variable declaration with a name token.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO16implicitVariableyACSS_tcACmF":{"name":"implicitVariable(name:)","abstract":"

A variable that is implicitly added by the compiler (e.g. error in catch clauses).

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO8wildcardyA2CmF":{"name":"wildcard","abstract":"

A variable hidden from scope because its name is a wildcard _.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO14lookupBoundaryyA2CmF":{"name":"lookupBoundary","abstract":"

Special case that marks a type boundary at which name lookup stops.

","parent_name":"IdentifierDeclaration"},"Enums/IdentifierDeclaration.html#/s:13SwiftLintCore21IdentifierDeclarationO8declares2id18disregardBackticksSbSS_SbtF":{"name":"declares(id:disregardBackticks:)","abstract":"

Check whether self declares a variable given by name.

","parent_name":"IdentifierDeclaration"},"Enums/ViolationSeverity.html#/s:13SwiftLintCore17ViolationSeverityO7warningyA2CmF":{"name":"warning","abstract":"

Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:13SwiftLintCore17ViolationSeverityO5erroryA2CmF":{"name":"error","abstract":"

Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.

","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"ViolationSeverity"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO4callyA2CmF":{"name":"call","abstract":"

A call to a named function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO8argumentyA2CmF":{"name":"argument","abstract":"

An argument value for a function or closure.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO5arrayyA2CmF":{"name":"array","abstract":"

An Array expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO10dictionaryyA2CmF":{"name":"dictionary","abstract":"

A Dictionary expression.

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO13objectLiteralyA2CmF":{"name":"objectLiteral","abstract":"

An object literal expression. https://developer.apple.com/swift/blog/?id=33

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO7closureyA2CmF":{"name":"closure","abstract":"

A closure expression. https://docs.swift.org/swift-book/LanguageGuide/Closures.html

","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:13SwiftLintCore0A14ExpressionKindO5tupleyA2CmF":{"name":"tuple","abstract":"

A tuple expression. https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID448

","parent_name":"SwiftExpressionKind"},"Enums/RuleListError.html#/s:13SwiftLintCore13RuleListErrorO24duplicatedConfigurationsyAcA0D0_pXp_tcACmF":{"name":"duplicatedConfigurations(rule:)","abstract":"

The rule list contains more than one configuration for the specified rule.

","parent_name":"RuleListError"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO4lintyA2CmF":{"name":"lint","abstract":"

Describes rules that validate Swift source conventions.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO9idiomaticyA2CmF":{"name":"idiomatic","abstract":"

Describes rules that validate common practices in the Swift community.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO5styleyA2CmF":{"name":"style","abstract":"

Describes rules that validate stylistic choices.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO7metricsyA2CmF":{"name":"metrics","abstract":"

Describes rules that validate magnitudes or measurements of Swift source.

","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:13SwiftLintCore8RuleKindO11performanceyA2CmF":{"name":"performance","abstract":"

Describes rules that validate that code patterns with poor performance are avoided.

","parent_name":"RuleKind"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierO3allyA2CmF":{"name":"all","abstract":"

Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierO6singleyACSS_tcACmF":{"name":"single(identifier:)","abstract":"

Represents a single SwiftLint rule with the specified identifier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierO20stringRepresentationSSvp":{"name":"stringRepresentation","abstract":"

The spelling of the string for this identifier.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:13SwiftLintCore14RuleIdentifierOyACSScfc":{"name":"init(_:)","abstract":"

Creates a RuleIdentifier by its string representation.

","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"RuleIdentifier"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO5emptyyA2CmF":{"name":"empty","abstract":"

An irrelevant option. It will be ignored in documentation serialization.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO4flagyACSbcACmF":{"name":"flag(_:)","abstract":"

A boolean flag.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO6stringyACSScACmF":{"name":"string(_:)","abstract":"

A string option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO6symbolyACSScACmF":{"name":"symbol(_:)","abstract":"

Like a string option but without quotes in the serialized output.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO7integeryACSicACmF":{"name":"integer(_:)","abstract":"

An integer option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO5floatyACSdcACmF":{"name":"float(_:)","abstract":"

A floating point number option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO8severityyAcA17ViolationSeverityOcACmF":{"name":"severity(_:)","abstract":"

Special option for a ViolationSeverity.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO4listyACSayACGcACmF":{"name":"list(_:)","abstract":"

A list of options.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO6nestedyAcA28RuleConfigurationDescriptionVcACmF":{"name":"nested(_:)","abstract":"

An option which is another set of configuration options to be nested in the serialized output.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP10hasContentSbvp":{"name":"hasContent","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP8markdownSSyF":{"name":"markdown()","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP8oneLinerSSyF":{"name":"oneLiner()","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore12DocumentableP4yamlSSyF":{"name":"yaml()","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO2egoiyAA017RuleConfigurationD0VSS_ACtFZ":{"name":"=>(_:_:)","abstract":"

Operator enabling an easy way to create a configuration option.

","parent_name":"OptionType"},"Enums/OptionType.html#/s:13SwiftLintCore10OptionTypeO4nestyAcA28RuleConfigurationDescriptionVyXEFZ":{"name":"nest(_:)","abstract":"

Create an option defined by nested configuration description.

","parent_name":"OptionType"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO20invalidConfigurationyACSS_SSSgtcACmF":{"name":"invalidConfiguration(ruleID:message:)","abstract":"

The configuration didn’t match internal expectations.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO29deprecatedConfigurationOptionyACSS_S2SSgtcACmF":{"name":"deprecatedConfigurationOption(ruleID:key:alternative:)","abstract":"

Issued when an option is deprecated. Suggests an alternative optionally.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14nothingAppliedyACSS_tcACmF":{"name":"nothingApplied(ruleID:)","abstract":"

Used in configuration parsing when no changes have been applied. Use only internally!

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO18listedMultipleTimeyACSS_SitcACmF":{"name":"listedMultipleTime(ruleID:times:)","abstract":"

Rule is listed multiple times in the configuration.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO17renamedIdentifieryACSS_SStcACmF":{"name":"renamedIdentifier(old:new:)","abstract":"

An identifier old has been renamed to new.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO24invalidConfigurationKeysyACSS_ShySSGtcACmF":{"name":"invalidConfigurationKeys(ruleID:keys:)","abstract":"

Some configuration keys are invalid.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO25inconsistentConfigurationyACSS_SStcACmF":{"name":"inconsistentConfiguration(ruleID:message:)","abstract":"

The configuration is inconsistent, that is options are mutually exclusive or one drives other values","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14invalidRuleIDsyACShySSGcACmF":{"name":"invalidRuleIDs(_:)","abstract":"

Used rule IDs are invalid.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO25ruleNotPresentInOnlyRulesyACSS_tcACmF":{"name":"ruleNotPresentInOnlyRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is not present in only_rules.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO014ruleDisabledInF5RulesyACSS_tcACmF":{"name":"ruleDisabledInDisabledRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is disabled.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO33ruleDisabledInParentConfigurationyACSS_tcACmF":{"name":"ruleDisabledInParentConfiguration(ruleID:)","abstract":"

Found a rule configuration for a rule that is disabled in the parent configuration.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO019ruleNotEnabledInOptH5RulesyACSS_tcACmF":{"name":"ruleNotEnabledInOptInRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is not enabled in opt_in_rules.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO31ruleNotEnabledInParentOnlyRulesyACSS_tcACmF":{"name":"ruleNotEnabledInParentOnlyRules(ruleID:)","abstract":"

Found a rule configuration for a rule that is not enabled in parent only_rules.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14genericWarningyACSScACmF":{"name":"genericWarning(_:)","abstract":"

A generic warning specified by a string.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO12genericErroryACSScACmF":{"name":"genericError(_:)","abstract":"

A generic error specified by a string.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO14ruleDeprecatedyACSS_tcACmF":{"name":"ruleDeprecated(ruleID:)","abstract":"

A deprecation warning for a rule.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO19initialFileNotFoundyACSS_tcACmF":{"name":"initialFileNotFound(path:)","abstract":"

The initial configuration file was not found.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO12fileNotFoundyACSS_tcACmF":{"name":"fileNotFound(path:)","abstract":"

A file at specified path was not found.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO15fileNotReadableyACSSSg_SStcACmF":{"name":"fileNotReadable(path:ruleID:)","abstract":"

The file at path is not readable or cannot be opened.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO15fileNotWritableyACSS_tcACmF":{"name":"fileNotWritable(path:)","abstract":"

The file at path is not writable.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO13indexingErroryACSSSg_SStcACmF":{"name":"indexingError(path:ruleID:)","abstract":"

The file at path cannot be indexed by a specific rule.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO24missingCompilerArgumentsyACSSSg_SStcACmF":{"name":"missingCompilerArguments(path:ruleID:)","abstract":"

No arguments were provided to compile a file at path within a specific rule.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO17missingCursorInfoyACSSSg_SStcACmF":{"name":"missingCursorInfo(path:ruleID:)","abstract":"

Cursor information cannot be extracted from a specific location.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO11yamlParsingyACSScACmF":{"name":"yamlParsing(_:)","abstract":"

An error that occurred when parsing YAML.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO19baselineNotReadableyACSS_tcACmF":{"name":"baselineNotReadable(path:)","abstract":"

The baseline file at path is not readable or cannot be opened.

","parent_name":"Issue"},"Enums/Issue.html#/s:13SwiftLintCore5IssueO5printyyF":{"name":"print()","abstract":"

Print the issue to the console.

","parent_name":"Issue"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO7privateyA2CmF":{"name":"private","abstract":"

Accessible by the declaration’s immediate lexical scope.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO11fileprivateyA2CmF":{"name":"fileprivate","abstract":"

Accessible by the declaration’s same file.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO8internalyA2CmF":{"name":"internal","abstract":"

Accessible by the declaration’s same module, or modules importing it with the @testable attribute.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO7packageyA2CmF":{"name":"package","abstract":"

Accessible by all the modules defined in the same Swift package.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO6publicyA2CmF":{"name":"public","abstract":"

Accessible by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO4openyA2CmF":{"name":"open","abstract":"

Accessible and customizable (via subclassing or overrides) by the declaration’s same program.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO11descriptionACSgSS_tcfc":{"name":"init(description:)","abstract":"

Initializes an access control level by its Swift source keyword value.

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:13SwiftLintCore18AccessControlLevelO9isPrivateSbvp":{"name":"isPrivate","abstract":"

Returns true if is private or fileprivate

","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"AccessControlLevel"},"Enums/ExecutableInfo.html#/s:13SwiftLintCore14ExecutableInfoO7buildIDSSSgvpZ":{"name":"buildID","abstract":"

A stable identifier for this executable. Uses the Mach-O header UUID on macOS. Nil on Linux.

","parent_name":"ExecutableInfo"},"Enums/ExecutableInfo.html":{"name":"ExecutableInfo","abstract":"

Information about this executable.

"},"Enums/AccessControlLevel.html":{"name":"AccessControlLevel","abstract":"

The accessibility of a Swift source declaration.

"},"Enums/Issue.html":{"name":"Issue","abstract":"

All possible SwiftLint issues which are printed as warnings by default.

"},"Enums/OptionType.html":{"name":"OptionType","abstract":"

Type of an option.

"},"Enums/RuleIdentifier.html":{"name":"RuleIdentifier","abstract":"

An identifier representing a SwiftLint rule, or all rules.

"},"Enums/RuleKind.html":{"name":"RuleKind","abstract":"

All the possible rule kinds (categories).

"},"Enums/RuleListError.html":{"name":"RuleListError","abstract":"

All possible rule list configuration errors.

"},"Enums/SwiftExpressionKind.html":{"name":"SwiftExpressionKind","abstract":"

The kind of expression for a contiguous set of Swift source tokens.

"},"Enums/ViolationSeverity.html":{"name":"ViolationSeverity","abstract":"

The magnitude of a StyleViolation.

"},"Enums/IdentifierDeclaration.html":{"name":"IdentifierDeclaration","abstract":"

An identifier declaration.

"},"Global%20Variables.html#/s:13SwiftLintCore13reportersListSayAA8Reporter_pXpGvp":{"name":"reportersList","abstract":"

The reporters list containing all the reporters built into SwiftLint.

"},"Global%20Variables.html#/s:13SwiftLintCore9coreRulesSayAA4Rule_pXpGvp":{"name":"coreRules","abstract":"

The rule list containing all available rules built into SwiftLintCore.

"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC13configurationxvp":{"name":"configuration","abstract":"

A rule’s configuration.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file from which the traversed syntax tree stems from.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC17locationConverter0aE0014SourceLocationH0Cvp":{"name":"locationConverter","abstract":"

A source location converter associated with the syntax tree being traversed.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC13configuration4fileACyxGx_AA0aB4FileCtcfc":{"name":"init(configuration:file:)","abstract":"

Initializer for a ViolationsSyntaxVisitor.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC10violationsSayAA21ReasonedRuleViolationVGvp":{"name":"violations","abstract":"

Positions in a source file where violations should be reported.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC21skippableDeclarationsSay0aE004DeclE8Protocol_pXpGvp":{"name":"skippableDeclarations","abstract":"

List of declaration types that shall be skipped while traversing the AST.

","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE09ActorDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE09ClassDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE08EnumDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE013ExtensionDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE012FunctionDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE015InitializerDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE012ProtocolDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE010StructDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE013SubscriptDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/ViolationsSyntaxVisitor.html#/s:13SwiftLintCore23ViolationsSyntaxVisitorC5visity0aE00eF12ContinueKindOAE012VariableDeclE0VF":{"name":"visit(_:)","parent_name":"ViolationsSyntaxVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5Scopea":{"name":"Scope","abstract":"

A type that remembers the declared identifiers (in order) up to the current position in the code.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5scopeAA5StackVySayAA21IdentifierDeclarationOGGvp":{"name":"scope","abstract":"

The hierarchical stack of identifiers declared up to the current position in the code.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC13configuration4file5scopeACyxGx_AA0aB4FileCAA5StackVySayAA21IdentifierDeclarationOGGtcfc":{"name":"init(configuration:file:scope:)","abstract":"

Initializer.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC18hasSeenDeclaration3forSbSS_tF":{"name":"hasSeenDeclaration(for:)","abstract":"

Indicate whether a given identifier is in scope.

","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5visity0A6Syntax0iG12ContinueKindOAE017CodeBlockItemListI0VF":{"name":"visit(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax017CodeBlockItemListJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax012VariableDeclJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax09GuardStmtJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC5visity0A6Syntax0iG12ContinueKindOAE011MemberBlockI0VF":{"name":"visit(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/DeclaredIdentifiersTrackingVisitor.html#/s:13SwiftLintCore34DeclaredIdentifiersTrackingVisitorC9visitPostyy0A6Syntax011MemberBlockJ0VF":{"name":"visitPost(_:)","parent_name":"DeclaredIdentifiersTrackingVisitor"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO12indentSpacesyAESicAEmF":{"name":"indentSpaces(_:)","abstract":"

Indentation with a number of spaces.

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO14unindentSpacesyAESicAEmF":{"name":"unindentSpaces(_:)","abstract":"

Reverse indentation of a number of spaces.

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO10indentTabsyAESicAEmF":{"name":"indentTabs(_:)","abstract":"

Indentation with a number of tabs

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html#/s:13SwiftLintCore21CodeIndentingRewriterC16IndentationStyleO12unindentTabsyAESicAEmF":{"name":"unindentTabs(_:)","abstract":"

Reverse indentation of a number of tabs.

","parent_name":"IndentationStyle"},"Classes/CodeIndentingRewriter/IndentationStyle.html":{"name":"IndentationStyle","abstract":"

Style defining whether the rewriter shall indent or unindent and whether it shall use tabs or spaces and","parent_name":"CodeIndentingRewriter"},"Classes/CodeIndentingRewriter.html#/s:13SwiftLintCore21CodeIndentingRewriterC5styleA2C16IndentationStyleO_tcfc":{"name":"init(style:)","abstract":"

Initializer accepting an indentation style.

","parent_name":"CodeIndentingRewriter"},"Classes/CodeIndentingRewriter.html#/s:13SwiftLintCore21CodeIndentingRewriterC5visity0A6Syntax05TokenH0VAGF":{"name":"visit(_:)","parent_name":"CodeIndentingRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC13configurationxvp":{"name":"configuration","abstract":"

A rule’s configuration.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC4fileAA0aB4FileCvp":{"name":"file","abstract":"

The file from which the traversed syntax tree stems from.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC17locationConverter0aE0014SourceLocationH0Cvp":{"name":"locationConverter","abstract":"

A converter of positions in the traversed source file.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC15disabledRegionsSay0aE011SourceRangeVGvp":{"name":"disabledRegions","abstract":"

The regions in the traversed file that are disabled by a command.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC19correctionPositionsSay0aE016AbsolutePositionVGvp":{"name":"correctionPositions","abstract":"

Positions in a source file where corrections were applied.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC13configuration4fileACyxGx_AA0aB4FileCtcfc":{"name":"init(configuration:file:)","abstract":"

Initializer for a ViolationsSyntaxRewriter.

","parent_name":"ViolationsSyntaxRewriter"},"Classes/ViolationsSyntaxRewriter.html#/s:13SwiftLintCore24ViolationsSyntaxRewriterC8visitAnyy0aE00E0VSgAGF":{"name":"visitAny(_:)","parent_name":"ViolationsSyntaxRewriter"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4file21SourceKittenFramework0D0Cvp":{"name":"file","abstract":"

The underlying SourceKitten file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC2id10Foundation4UUIDVvp":{"name":"id","abstract":"

The associated unique identifier for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC06isTestD0Sbvp":{"name":"isTestFile","abstract":"

Whether or not this is a file generated for testing purposes.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC9isVirtualSbvp":{"name":"isVirtual","abstract":"

A file is virtual if it is not backed by a filesystem path.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4fileAC21SourceKittenFramework0D0C_tcfc":{"name":"init(file:)","abstract":"

Creates a SwiftLintFile with a SourceKitten File.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4pathACSgSS_tcfc":{"name":"init(path:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk.","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC20pathDeferringReadingACSS_tcfc":{"name":"init(pathDeferringReading:)","abstract":"

Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC8contentsACSS_tcfc":{"name":"init(contents:)","abstract":"

Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC4pathSSSgvp":{"name":"path","abstract":"

The path on disk for this file.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC8contentsSSvp":{"name":"contents","abstract":"

The file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC10stringView21SourceKittenFramework06StringF0Vvp":{"name":"stringView","abstract":"

A string view into the contents of this file optimized for string manipulation operations.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:13SwiftLintCore0aB4FileC5linesSay21SourceKittenFramework4LineVGvp":{"name":"lines","abstract":"

The parsed lines for this file’s contents.

","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"SwiftLintFile"},"Classes/RuleStorage.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"RuleStorage"},"Classes/RuleStorage.html#/s:13SwiftLintCore11RuleStorageCACycfc":{"name":"init()","abstract":"

Creates a RuleStorage with no initial stored data.

","parent_name":"RuleStorage"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC6sharedACvpZ":{"name":"shared","abstract":"

Shared rule registry instance.

","parent_name":"RuleRegistry"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC4listAA0D4ListVvp":{"name":"list","abstract":"

Rule list associated with this registry. Lazily created, and","parent_name":"RuleRegistry"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC8register5rulesySayAA0D0_pXpG_tF":{"name":"register(rules:)","abstract":"

Register rules.

","parent_name":"RuleRegistry"},"Classes/RuleRegistry.html#/s:13SwiftLintCore12RuleRegistryC4rule5forIDAA0D0_pXpSgSS_tF":{"name":"rule(forID:)","abstract":"

Look up a rule for a given ID.

","parent_name":"RuleRegistry"},"Classes/LinterCache.html#/s:13SwiftLintCore11LinterCacheC13configuration11fileManagerAcA13ConfigurationV_xtcAA012LintableFileH0Rzlufc":{"name":"init(configuration:fileManager:)","abstract":"

Creates a LinterCache by specifying a SwiftLint configuration and a file manager.

","parent_name":"LinterCache"},"Classes/LinterCache.html#/s:13SwiftLintCore11LinterCacheC4saveyyKF":{"name":"save()","abstract":"

Persists the cache to disk.

","parent_name":"LinterCache"},"Classes/CustomRuleTimer.html#/s:13SwiftLintCore15CustomRuleTimerC6sharedACvpZ":{"name":"shared","abstract":"

Singleton.

","parent_name":"CustomRuleTimer"},"Classes/CustomRuleTimer.html#/s:13SwiftLintCore15CustomRuleTimerC8activateyyF":{"name":"activate()","abstract":"

Tell the timer it should record time spent in rules.

","parent_name":"CustomRuleTimer"},"Classes/CustomRuleTimer.html#/s:13SwiftLintCore15CustomRuleTimerC4dumpSDySSSdGyF":{"name":"dump()","abstract":"

Return all time spent for each custom rule, keyed by rule ID.

","parent_name":"CustomRuleTimer"},"Classes/CustomRuleTimer.html":{"name":"CustomRuleTimer","abstract":"

Utility to measure the time spent in each custom rule.

"},"Classes/LinterCache.html":{"name":"LinterCache","abstract":"

A persisted cache for storing and retrieving linter results.

"},"Classes/RuleRegistry.html":{"name":"RuleRegistry","abstract":"

Container to register and look up SwiftLint rules.

"},"Classes/RuleStorage.html":{"name":"RuleStorage","abstract":"

A storage mechanism for aggregating the results of CollectingRules.

"},"Classes/SwiftLintFile.html":{"name":"SwiftLintFile","abstract":"

A unit of Swift source code, either on disk or in memory.

"},"Classes/ViolationsSyntaxRewriter.html":{"name":"ViolationsSyntaxRewriter","abstract":"

A SwiftSyntax SyntaxRewriter that produces absolute positions where corrections were applied.

"},"Classes/CodeIndentingRewriter.html":{"name":"CodeIndentingRewriter","abstract":"

Rewriter that indents or unindents a syntax piece including comments and nested"},"Classes/DeclaredIdentifiersTrackingVisitor.html":{"name":"DeclaredIdentifiersTrackingVisitor","abstract":"

A specialized ViolationsSyntaxVisitor that tracks declared identifiers per scope while traversing the AST.

"},"Classes/ViolationsSyntaxVisitor.html":{"name":"ViolationsSyntaxVisitor","abstract":"

A SwiftSyntax SyntaxVisitor that produces absolute positions where violations should be reported.

"},"swift-syntax-dashboard.html":{"name":"Swift Syntax Dashboard"},"accessibility_label_for_image.html":{"name":"accessibility_label_for_image"},"accessibility_trait_for_button.html":{"name":"accessibility_trait_for_button"},"anonymous_argument_in_multiline_closure.html":{"name":"anonymous_argument_in_multiline_closure"},"array_init.html":{"name":"array_init"},"attribute_name_spacing.html":{"name":"attribute_name_spacing"},"attributes.html":{"name":"attributes"},"balanced_xctest_lifecycle.html":{"name":"balanced_xctest_lifecycle"},"blanket_disable_command.html":{"name":"blanket_disable_command"},"block_based_kvo.html":{"name":"block_based_kvo"},"capture_variable.html":{"name":"capture_variable"},"class_delegate_protocol.html":{"name":"class_delegate_protocol"},"closing_brace.html":{"name":"closing_brace"},"closure_body_length.html":{"name":"closure_body_length"},"closure_end_indentation.html":{"name":"closure_end_indentation"},"closure_parameter_position.html":{"name":"closure_parameter_position"},"closure_spacing.html":{"name":"closure_spacing"},"collection_alignment.html":{"name":"collection_alignment"},"colon.html":{"name":"colon"},"comma.html":{"name":"comma"},"comma_inheritance.html":{"name":"comma_inheritance"},"comment_spacing.html":{"name":"comment_spacing"},"compiler_protocol_init.html":{"name":"compiler_protocol_init"},"computed_accessors_order.html":{"name":"computed_accessors_order"},"conditional_returns_on_newline.html":{"name":"conditional_returns_on_newline"},"contains_over_filter_count.html":{"name":"contains_over_filter_count"},"contains_over_filter_is_empty.html":{"name":"contains_over_filter_is_empty"},"contains_over_first_not_nil.html":{"name":"contains_over_first_not_nil"},"contains_over_range_nil_comparison.html":{"name":"contains_over_range_nil_comparison"},"contrasted_opening_brace.html":{"name":"contrasted_opening_brace"},"control_statement.html":{"name":"control_statement"},"convenience_type.html":{"name":"convenience_type"},"custom_rules.html":{"name":"custom_rules"},"cyclomatic_complexity.html":{"name":"cyclomatic_complexity"},"deployment_target.html":{"name":"deployment_target"},"direct_return.html":{"name":"direct_return"},"discarded_notification_center_observer.html":{"name":"discarded_notification_center_observer"},"discouraged_assert.html":{"name":"discouraged_assert"},"discouraged_direct_init.html":{"name":"discouraged_direct_init"},"discouraged_none_name.html":{"name":"discouraged_none_name"},"discouraged_object_literal.html":{"name":"discouraged_object_literal"},"discouraged_optional_boolean.html":{"name":"discouraged_optional_boolean"},"discouraged_optional_collection.html":{"name":"discouraged_optional_collection"},"duplicate_conditions.html":{"name":"duplicate_conditions"},"duplicate_enum_cases.html":{"name":"duplicate_enum_cases"},"duplicate_imports.html":{"name":"duplicate_imports"},"duplicated_key_in_dictionary_literal.html":{"name":"duplicated_key_in_dictionary_literal"},"dynamic_inline.html":{"name":"dynamic_inline"},"empty_collection_literal.html":{"name":"empty_collection_literal"},"empty_count.html":{"name":"empty_count"},"empty_enum_arguments.html":{"name":"empty_enum_arguments"},"empty_parameters.html":{"name":"empty_parameters"},"empty_parentheses_with_trailing_closure.html":{"name":"empty_parentheses_with_trailing_closure"},"empty_string.html":{"name":"empty_string"},"empty_xctest_method.html":{"name":"empty_xctest_method"},"enum_case_associated_values_count.html":{"name":"enum_case_associated_values_count"},"expiring_todo.html":{"name":"expiring_todo"},"explicit_acl.html":{"name":"explicit_acl"},"explicit_enum_raw_value.html":{"name":"explicit_enum_raw_value"},"explicit_init.html":{"name":"explicit_init"},"explicit_self.html":{"name":"explicit_self"},"explicit_top_level_acl.html":{"name":"explicit_top_level_acl"},"explicit_type_interface.html":{"name":"explicit_type_interface"},"extension_access_modifier.html":{"name":"extension_access_modifier"},"fallthrough.html":{"name":"fallthrough"},"fatal_error_message.html":{"name":"fatal_error_message"},"file_header.html":{"name":"file_header"},"file_length.html":{"name":"file_length"},"file_name.html":{"name":"file_name"},"file_name_no_space.html":{"name":"file_name_no_space"},"file_types_order.html":{"name":"file_types_order"},"final_test_case.html":{"name":"final_test_case"},"first_where.html":{"name":"first_where"},"flatmap_over_map_reduce.html":{"name":"flatmap_over_map_reduce"},"for_where.html":{"name":"for_where"},"force_cast.html":{"name":"force_cast"},"force_try.html":{"name":"force_try"},"force_unwrapping.html":{"name":"force_unwrapping"},"function_body_length.html":{"name":"function_body_length"},"function_default_parameter_at_end.html":{"name":"function_default_parameter_at_end"},"function_parameter_count.html":{"name":"function_parameter_count"},"generic_type_name.html":{"name":"generic_type_name"},"ibinspectable_in_extension.html":{"name":"ibinspectable_in_extension"},"identical_operands.html":{"name":"identical_operands"},"identifier_name.html":{"name":"identifier_name"},"implicit_getter.html":{"name":"implicit_getter"},"implicit_return.html":{"name":"implicit_return"},"implicitly_unwrapped_optional.html":{"name":"implicitly_unwrapped_optional"},"inclusive_language.html":{"name":"inclusive_language"},"indentation_width.html":{"name":"indentation_width"},"inert_defer.html":{"name":"inert_defer"},"invalid_swiftlint_command.html":{"name":"invalid_swiftlint_command"},"is_disjoint.html":{"name":"is_disjoint"},"joined_default_parameter.html":{"name":"joined_default_parameter"},"large_tuple.html":{"name":"large_tuple"},"last_where.html":{"name":"last_where"},"leading_whitespace.html":{"name":"leading_whitespace"},"legacy_cggeometry_functions.html":{"name":"legacy_cggeometry_functions"},"legacy_constant.html":{"name":"legacy_constant"},"legacy_constructor.html":{"name":"legacy_constructor"},"legacy_hashing.html":{"name":"legacy_hashing"},"legacy_multiple.html":{"name":"legacy_multiple"},"legacy_nsgeometry_functions.html":{"name":"legacy_nsgeometry_functions"},"legacy_objc_type.html":{"name":"legacy_objc_type"},"legacy_random.html":{"name":"legacy_random"},"let_var_whitespace.html":{"name":"let_var_whitespace"},"line_length.html":{"name":"line_length"},"literal_expression_end_indentation.html":{"name":"literal_expression_end_indentation"},"local_doc_comment.html":{"name":"local_doc_comment"},"lower_acl_than_parent.html":{"name":"lower_acl_than_parent"},"mark.html":{"name":"mark"},"missing_docs.html":{"name":"missing_docs"},"modifier_order.html":{"name":"modifier_order"},"multiline_arguments.html":{"name":"multiline_arguments"},"multiline_arguments_brackets.html":{"name":"multiline_arguments_brackets"},"multiline_function_chains.html":{"name":"multiline_function_chains"},"multiline_literal_brackets.html":{"name":"multiline_literal_brackets"},"multiline_parameters.html":{"name":"multiline_parameters"},"multiline_parameters_brackets.html":{"name":"multiline_parameters_brackets"},"multiple_closures_with_trailing_closure.html":{"name":"multiple_closures_with_trailing_closure"},"nesting.html":{"name":"nesting"},"nimble_operator.html":{"name":"nimble_operator"},"no_empty_block.html":{"name":"no_empty_block"},"no_extension_access_modifier.html":{"name":"no_extension_access_modifier"},"no_fallthrough_only.html":{"name":"no_fallthrough_only"},"no_grouping_extension.html":{"name":"no_grouping_extension"},"no_magic_numbers.html":{"name":"no_magic_numbers"},"no_space_in_method_call.html":{"name":"no_space_in_method_call"},"non_optional_string_data_conversion.html":{"name":"non_optional_string_data_conversion"},"non_overridable_class_declaration.html":{"name":"non_overridable_class_declaration"},"notification_center_detachment.html":{"name":"notification_center_detachment"},"ns_number_init_as_function_reference.html":{"name":"ns_number_init_as_function_reference"},"nslocalizedstring_key.html":{"name":"nslocalizedstring_key"},"nslocalizedstring_require_bundle.html":{"name":"nslocalizedstring_require_bundle"},"nsobject_prefer_isequal.html":{"name":"nsobject_prefer_isequal"},"number_separator.html":{"name":"number_separator"},"object_literal.html":{"name":"object_literal"},"one_declaration_per_file.html":{"name":"one_declaration_per_file"},"opening_brace.html":{"name":"opening_brace"},"operator_usage_whitespace.html":{"name":"operator_usage_whitespace"},"operator_whitespace.html":{"name":"operator_whitespace"},"optional_data_string_conversion.html":{"name":"optional_data_string_conversion"},"optional_enum_case_matching.html":{"name":"optional_enum_case_matching"},"orphaned_doc_comment.html":{"name":"orphaned_doc_comment"},"overridden_super_call.html":{"name":"overridden_super_call"},"override_in_extension.html":{"name":"override_in_extension"},"pattern_matching_keywords.html":{"name":"pattern_matching_keywords"},"period_spacing.html":{"name":"period_spacing"},"prefer_key_path.html":{"name":"prefer_key_path"},"prefer_nimble.html":{"name":"prefer_nimble"},"prefer_self_in_static_references.html":{"name":"prefer_self_in_static_references"},"prefer_self_type_over_type_of_self.html":{"name":"prefer_self_type_over_type_of_self"},"prefer_type_checking.html":{"name":"prefer_type_checking"},"prefer_zero_over_explicit_init.html":{"name":"prefer_zero_over_explicit_init"},"prefixed_toplevel_constant.html":{"name":"prefixed_toplevel_constant"},"private_action.html":{"name":"private_action"},"private_outlet.html":{"name":"private_outlet"},"private_over_fileprivate.html":{"name":"private_over_fileprivate"},"private_subject.html":{"name":"private_subject"},"private_swiftui_state.html":{"name":"private_swiftui_state"},"private_unit_test.html":{"name":"private_unit_test"},"prohibited_interface_builder.html":{"name":"prohibited_interface_builder"},"prohibited_super_call.html":{"name":"prohibited_super_call"},"protocol_property_accessors_order.html":{"name":"protocol_property_accessors_order"},"quick_discouraged_call.html":{"name":"quick_discouraged_call"},"quick_discouraged_focused_test.html":{"name":"quick_discouraged_focused_test"},"quick_discouraged_pending_test.html":{"name":"quick_discouraged_pending_test"},"raw_value_for_camel_cased_codable_enum.html":{"name":"raw_value_for_camel_cased_codable_enum"},"reduce_boolean.html":{"name":"reduce_boolean"},"reduce_into.html":{"name":"reduce_into"},"redundant_discardable_let.html":{"name":"redundant_discardable_let"},"redundant_nil_coalescing.html":{"name":"redundant_nil_coalescing"},"redundant_objc_attribute.html":{"name":"redundant_objc_attribute"},"redundant_optional_initialization.html":{"name":"redundant_optional_initialization"},"redundant_self_in_closure.html":{"name":"redundant_self_in_closure"},"redundant_set_access_control.html":{"name":"redundant_set_access_control"},"redundant_string_enum_value.html":{"name":"redundant_string_enum_value"},"redundant_type_annotation.html":{"name":"redundant_type_annotation"},"redundant_void_return.html":{"name":"redundant_void_return"},"required_deinit.html":{"name":"required_deinit"},"required_enum_case.html":{"name":"required_enum_case"},"return_arrow_whitespace.html":{"name":"return_arrow_whitespace"},"return_value_from_void_function.html":{"name":"return_value_from_void_function"},"self_binding.html":{"name":"self_binding"},"self_in_property_initialization.html":{"name":"self_in_property_initialization"},"shorthand_argument.html":{"name":"shorthand_argument"},"shorthand_operator.html":{"name":"shorthand_operator"},"shorthand_optional_binding.html":{"name":"shorthand_optional_binding"},"single_test_class.html":{"name":"single_test_class"},"sorted_enum_cases.html":{"name":"sorted_enum_cases"},"sorted_first_last.html":{"name":"sorted_first_last"},"sorted_imports.html":{"name":"sorted_imports"},"statement_position.html":{"name":"statement_position"},"static_operator.html":{"name":"static_operator"},"static_over_final_class.html":{"name":"static_over_final_class"},"strict_fileprivate.html":{"name":"strict_fileprivate"},"strong_iboutlet.html":{"name":"strong_iboutlet"},"superfluous_disable_command.html":{"name":"superfluous_disable_command"},"superfluous_else.html":{"name":"superfluous_else"},"switch_case_alignment.html":{"name":"switch_case_alignment"},"switch_case_on_newline.html":{"name":"switch_case_on_newline"},"syntactic_sugar.html":{"name":"syntactic_sugar"},"test_case_accessibility.html":{"name":"test_case_accessibility"},"todo.html":{"name":"todo"},"toggle_bool.html":{"name":"toggle_bool"},"trailing_closure.html":{"name":"trailing_closure"},"trailing_comma.html":{"name":"trailing_comma"},"trailing_newline.html":{"name":"trailing_newline"},"trailing_semicolon.html":{"name":"trailing_semicolon"},"trailing_whitespace.html":{"name":"trailing_whitespace"},"type_body_length.html":{"name":"type_body_length"},"type_contents_order.html":{"name":"type_contents_order"},"type_name.html":{"name":"type_name"},"typesafe_array_init.html":{"name":"typesafe_array_init"},"unavailable_condition.html":{"name":"unavailable_condition"},"unavailable_function.html":{"name":"unavailable_function"},"unhandled_throwing_task.html":{"name":"unhandled_throwing_task"},"unneeded_break_in_switch.html":{"name":"unneeded_break_in_switch"},"unneeded_override.html":{"name":"unneeded_override"},"unneeded_parentheses_in_closure_argument.html":{"name":"unneeded_parentheses_in_closure_argument"},"unneeded_synthesized_initializer.html":{"name":"unneeded_synthesized_initializer"},"unowned_variable_capture.html":{"name":"unowned_variable_capture"},"untyped_error_in_catch.html":{"name":"untyped_error_in_catch"},"unused_capture_list.html":{"name":"unused_capture_list"},"unused_closure_parameter.html":{"name":"unused_closure_parameter"},"unused_control_flow_label.html":{"name":"unused_control_flow_label"},"unused_declaration.html":{"name":"unused_declaration"},"unused_enumerated.html":{"name":"unused_enumerated"},"unused_import.html":{"name":"unused_import"},"unused_optional_binding.html":{"name":"unused_optional_binding"},"unused_parameter.html":{"name":"unused_parameter"},"unused_setter_value.html":{"name":"unused_setter_value"},"valid_ibinspectable.html":{"name":"valid_ibinspectable"},"vertical_parameter_alignment.html":{"name":"vertical_parameter_alignment"},"vertical_parameter_alignment_on_call.html":{"name":"vertical_parameter_alignment_on_call"},"vertical_whitespace.html":{"name":"vertical_whitespace"},"vertical_whitespace_between_cases.html":{"name":"vertical_whitespace_between_cases"},"vertical_whitespace_closing_braces.html":{"name":"vertical_whitespace_closing_braces"},"vertical_whitespace_opening_braces.html":{"name":"vertical_whitespace_opening_braces"},"void_function_in_ternary.html":{"name":"void_function_in_ternary"},"void_return.html":{"name":"void_return"},"weak_delegate.html":{"name":"weak_delegate"},"xct_specific_matcher.html":{"name":"xct_specific_matcher"},"xctfail_message.html":{"name":"xctfail_message"},"yoda_condition.html":{"name":"yoda_condition"},"rule-directory.html":{"name":"Rule Directory"},"Rules.html":{"name":"Rules"},"Guides.html":{"name":"Guides","abstract":"

The following guides are available globally.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Global%20Variables.html":{"name":"Global Variables","abstract":"

The following global variables are available globally.

"},"Enums.html":{"name":"Enumerations","abstract":"

The following enumerations are available globally.

"},"Extensions.html":{"name":"Extensions","abstract":"

The following extensions are available globally.

"},"Functions.html":{"name":"Functions","abstract":"

The following functions are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structures","abstract":"

The following structures are available globally.

"},"Macros.html":{"name":"Macros","abstract":"

The following macros are available globally.

"}} \ No newline at end of file diff --git a/self_binding.html b/self_binding.html deleted file mode 100644 index 7b712c810..000000000 --- a/self_binding.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - self_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Self Binding

- -

Re-bind self to a consistent identifier name.

- -
    -
  • Identifier: self_binding
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -bind_identifier - -“self” -
  • -
-

Non Triggering Examples

-
if let self = self { return }
-
-
guard let self = self else { return }
-
-
if let this = this { return }
-
-
guard let this = this else { return }
-
-
//
-// bind_identifier: "this"
-//
-
-if let this = self { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-guard let this = self else { return }
-
-
-

Triggering Examples

-
if let ↓`self` = self { return }
-
-
guard let ↓`self` = self else { return }
-
-
if let ↓this = self { return }
-
-
guard let ↓this = self else { return }
-
-
//
-// bind_identifier: "this"
-//
-
-if let ↓self = self { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-guard let ↓self = self else { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-if let ↓self { return }
-
-
-
//
-// bind_identifier: "this"
-//
-
-guard let ↓self else { return }
-
-
- -
-
- - -
-
- - - diff --git a/self_in_property_initialization.html b/self_in_property_initialization.html deleted file mode 100644 index 5b63e3ed8..000000000 --- a/self_in_property_initialization.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - self_in_property_initialization Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Self in Property Initialization

- -

self refers to the unapplied NSObject.self() method, which is likely not expected; make the variable lazy to be able to refer to the current instance or use ClassName.self

- -
    -
  • Identifier: self_in_property_initialization
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class View: UIView {
-    let button: UIButton = {
-        return UIButton()
-    }()
-}
-
-
class View: UIView {
-    lazy var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(otherObject, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    private let collectionView: UICollectionView = {
-        let layout = UICollectionViewFlowLayout()
-        let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
-        collectionView.registerReusable(Cell.self)
-
-        return collectionView
-    }()
-}
-
-

Triggering Examples

-
class View: UIView {
-    ↓var button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
-
class View: UIView {
-    ↓let button: UIButton = {
-        let button = UIButton()
-        button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
-        return button
-    }()
-}
-
- -
-
- - -
-
- - - diff --git a/shorthand_argument.html b/shorthand_argument.html deleted file mode 100644 index 49c4b5e3c..000000000 --- a/shorthand_argument.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - shorthand_argument Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Argument

- -

Shorthand arguments like $0, $1, etc. in closures can be confusing. Avoid using them too far away from the beginning of the closure. Optionally, while usage of a single shorthand argument is okay, more than one or complex ones with field accesses might increase the risk of obfuscation.

- -
    -
  • Identifier: shorthand_argument
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allow_until_line_after_opening_brace - -4 -
    -always_disallow_more_than_one - -false -
    -always_disallow_member_access - -false -
  • -
-

Non Triggering Examples

-
f { $0 }
-
-
f {
-    $0
-  + $1
-  + $2
-}
-
-
f { $0.a + $0.b }
-
-
//
-// allow_until_line_after_opening_brace: 1
-//
-
-f {
-    $0
-  +  g { $0 }
-
-
-

Triggering Examples

-
f {
-    $0
-  + $1
-  + $2
-
-  + ↓$0
-}
-
-
//
-// allow_until_line_after_opening_brace: 5
-//
-
-f {
-    $0
-  + $1
-  + $2
-  +  5
-  + $0
-  + ↓$1
-}
-
-
-
//
-// always_disallow_more_than_one: true
-//
-
-f { ↓$0 + ↓$1 }
-
-
-
//
-// allow_until_line_after_opening_brace: 3
-// always_disallow_member_access: true
-//
-
-f {
-    ↓$0.a
-  + ↓$0.b
-  + $1
-  + ↓$2.c
-}
-
-
- -
-
- - -
-
- - - diff --git a/shorthand_operator.html b/shorthand_operator.html deleted file mode 100644 index ac1fae5dc..000000000 --- a/shorthand_operator.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - shorthand_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Operator

- -

Prefer shorthand operators (+=, -=, *=, /=) over doing the operation and assigning

- -
    -
  • Identifier: shorthand_operator
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
foo -= 1
-
-
foo += variable
-
-
foo *= bar.method()
-
-
self.foo = foo / 1
-
-
foo = self.foo + 1
-
-
page = ceilf(currentOffset * pageWidth)
-
-
foo = aMethod(foo / bar)
-
-
foo = aMethod(bar + foo)
-
-
public func -= (lhs: inout Foo, rhs: Int) {
-    lhs = lhs - rhs
-}
-
-
var helloWorld = "world!"
- helloWorld = "Hello, " + helloWorld
-
-
angle = someCheck ? angle : -angle
-
-
seconds = seconds * 60 + value
-
-

Triggering Examples

-
↓foo = foo * 1
-
-
↓foo = foo / aVariable
-
-
↓foo = foo - bar.method()
-
-
↓foo.aProperty = foo.aProperty - 1
-
-
↓self.aProperty = self.aProperty * 1
-
-
↓n = n + i / outputLength
-
-
↓n = n - i / outputLength
-
- -
-
- - -
-
- - - diff --git a/shorthand_optional_binding.html b/shorthand_optional_binding.html deleted file mode 100644 index c7e5abcd5..000000000 --- a/shorthand_optional_binding.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - shorthand_optional_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Shorthand Optional Binding

- -

Use shorthand syntax for optional binding

- -
    -
  • Identifier: shorthand_optional_binding
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.7.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if let i {}
-if let i = a {}
-guard let i = f() else {}
-if var i = i() {}
-if let i = i as? Foo {}
-guard let `self` = self else {}
-while var i { i = nil }
-
-

Triggering Examples

-
if ↓let i = i {}
-if ↓let self = self {}
-if ↓var `self` = `self` {}
-if i > 0, ↓let j = j {}
-if ↓let i = i, ↓var j = j {}
-
-
guard ↓let i = i else {}
-guard ↓let self = self else {}
-guard ↓var `self` = `self` else {}
-guard i > 0, ↓let j = j else {}
-guard ↓let i = i, ↓var j = j else {}
-
-
while ↓var i = i { i = nil }
-
- -
-
- - -
-
- - - diff --git a/single_test_class.html b/single_test_class.html deleted file mode 100644 index 36ed7aeef..000000000 --- a/single_test_class.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - single_test_class Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Single Test Class

- -

Test files should contain a single QuickSpec or XCTestCase class.

- -
    -
  • Identifier: single_test_class
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
class FooTests {  }
-
-
class FooTests: QuickSpec {  }
-
-
class FooTests: XCTestCase {  }
-
-

Triggering Examples

-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: QuickSpec {  }
-↓class TotoTests: QuickSpec {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: XCTestCase {  }
-↓class BarTests: XCTestCase {  }
-↓class TotoTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-
-
↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-class TotoTests {  }
-
-
final ↓class FooTests: QuickSpec {  }
-↓class BarTests: XCTestCase {  }
-class TotoTests {  }
-
- -
-
- - -
-
- - - diff --git a/sorted_enum_cases.html b/sorted_enum_cases.html deleted file mode 100644 index 0a08e3538..000000000 --- a/sorted_enum_cases.html +++ /dev/null @@ -1,490 +0,0 @@ - - - - sorted_enum_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Sorted Enum Cases

- -

Enum cases should be sorted

- -
    -
  • Identifier: sorted_enum_cases
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum foo {
-    case a
-    case b
-    case c
-}
-
-
enum foo {
-    case example
-    case exBoyfriend
-}
-
-
enum foo {
-    case a
-    case B
-    case c
-}
-
-
enum foo {
-    case a, b, c
-}
-
-
enum foo {
-    case a
-    case b, c
-}
-
-
enum foo {
-    case a(foo: Foo)
-    case b(String), c
-}
-
-
enum foo {
-    case a
-    case b, C, d
-}
-
-
@frozen
-enum foo {
-    case b
-    case a
-    case c, f, d
-}
-
-

Triggering Examples

-
enum foo {
-    ↓case b
-    ↓case a
-    case c
-}
-
-
enum foo {
-    ↓case B
-    ↓case a
-    case c
-}
-
-
enum foo {
-    case ↓b, ↓a, c
-}
-
-
enum foo {
-    case ↓B, ↓a, c
-}
-
-
enum foo {
-    ↓case b, c
-    ↓case a
-}
-
-
enum foo {
-    case a
-    case b, ↓d, ↓c
-}
-
-
enum foo {
-    case a(foo: Foo)
-    case ↓c, ↓b(String)
-}
-
- -
-
- - -
-
- - - diff --git a/sorted_first_last.html b/sorted_first_last.html deleted file mode 100644 index 6a00131aa..000000000 --- a/sorted_first_last.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - sorted_first_last Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Min or Max over Sorted First or Last

- -

Prefer using min() or max() over sorted().first or sorted().last

- -
    -
  • Identifier: sorted_first_last
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: performance
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let min = myList.min()
-
-
let min = myList.min(by: { $0 < $1 })
-
-
let min = myList.min(by: >)
-
-
let max = myList.max()
-
-
let max = myList.max(by: { $0 < $1 })
-
-
let message = messages.sorted(byKeyPath: #keyPath(Message.timestamp)).last
-
-
let message = messages.sorted(byKeyPath: "timestamp", ascending: false).first
-
-
myList.sorted().firstIndex(of: key)
-
-
myList.sorted().lastIndex(of: key)
-
-
myList.sorted().firstIndex(where: someFunction)
-
-
myList.sorted().lastIndex(where: someFunction)
-
-
myList.sorted().firstIndex { $0 == key }
-
-
myList.sorted().lastIndex { $0 == key }
-
-
myList.sorted().first(where: someFunction)
-
-
myList.sorted().last(where: someFunction)
-
-
myList.sorted().first { $0 == key }
-
-
myList.sorted().last { $0 == key }
-
-

Triggering Examples

-
↓myList.sorted().first
-
-
↓myList.sorted(by: { $0.description < $1.description }).first
-
-
↓myList.sorted(by: >).first
-
-
↓myList.map { $0 + 1 }.sorted().first
-
-
↓myList.sorted(by: someFunction).first
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.first
-
-
↓myList.sorted().last
-
-
↓myList.sorted().last?.something()
-
-
↓myList.sorted(by: { $0.description < $1.description }).last
-
-
↓myList.map { $0 + 1 }.sorted().last
-
-
↓myList.sorted(by: someFunction).last
-
-
↓myList.map { $0 + 1 }.sorted { $0.description < $1.description }.last
-
-
↓myList.map { $0 + 1 }.sorted { $0.first < $1.first }.last
-
- -
-
- - -
-
- - - diff --git a/sorted_imports.html b/sorted_imports.html deleted file mode 100644 index e31b9d459..000000000 --- a/sorted_imports.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - sorted_imports Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Sorted Imports

- -

Imports should be sorted

- -
    -
  • Identifier: sorted_imports
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -grouping - -names -
  • -
-

Non Triggering Examples

-
import AAA
-import BBB
-import CCC
-import DDD
-
-
import Alamofire
-import API
-
-
import labc
-import Ldef
-
-
import BBB
-// comment
-import AAA
-import CCC
-
-
@testable import AAA
-import   CCC
-
-
import AAA
-@testable import   CCC
-
-
import EEE.A
-import FFF.B
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import CCC
-import DDD.B
-#endif
-import AAA
-import BBB
-
-

Triggering Examples

-
import AAA
-import ZZZ
-import ↓BBB
-import CCC
-
-
import DDD
-// comment
-import CCC
-import ↓AAA
-
-
@testable import CCC
-import   ↓AAA
-
-
import CCC
-@testable import   ↓AAA
-
-
import FFF.B
-import ↓EEE.A
-#if os(Linux)
-import DDD.A
-import EEE.B
-#else
-import DDD.B
-import ↓CCC
-#endif
-import AAA
-import BBB
-
- -
-
- - -
-
- - - diff --git a/statement_position.html b/statement_position.html deleted file mode 100644 index c33bf1568..000000000 --- a/statement_position.html +++ /dev/null @@ -1,448 +0,0 @@ - - - - statement_position Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Statement Position

- -

Else and catch should be on the same line, one space after the previous declaration

- -
    -
  • Identifier: statement_position
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -statement_mode - -default -
  • -
-

Non Triggering Examples

-
} else if {
-
-
} else {
-
-
} catch {
-
-
"}else{"
-
-
struct A { let catchphrase: Int }
-let a = A(
- catchphrase: 0
-)
-
-
struct A { let `catch`: Int }
-let a = A(
- `catch`: 0
-)
-
-

Triggering Examples

-
↓}else if {
-
-
↓}  else {
-
-
↓}
-catch {
-
-
↓}
-      catch {
-
- -
-
- - -
-
- - - diff --git a/static_operator.html b/static_operator.html deleted file mode 100644 index 645bc52b8..000000000 --- a/static_operator.html +++ /dev/null @@ -1,466 +0,0 @@ - - - - static_operator Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Static Operator

- -

Operators should be declared as static functions, not free functions

- -
    -
  • Identifier: static_operator
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class A: Equatable {
-  static func == (lhs: A, rhs: A) -> Bool {
-    return false
-  }
-
-
class A<T>: Equatable {
-    static func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-        return false
-    }
-
-
public extension Array where Element == Rule {
-  static func == (lhs: Array, rhs: Array) -> Bool {
-    if lhs.count != rhs.count { return false }
-    return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-  }
-}
-
-
private extension Optional where Wrapped: Comparable {
-  static func < (lhs: Optional, rhs: Optional) -> Bool {
-    switch (lhs, rhs) {
-    case let (lhs?, rhs?):
-      return lhs < rhs
-    case (nil, _?):
-      return true
-    default:
-      return false
-    }
-  }
-}
-
-

Triggering Examples

-
↓func == (lhs: A, rhs: A) -> Bool {
-  return false
-}
-
-
↓func == <T>(lhs: A<T>, rhs: A<T>) -> Bool {
-  return false
-}
-
-
↓func == (lhs: [Rule], rhs: [Rule]) -> Bool {
-  if lhs.count != rhs.count { return false }
-  return !zip(lhs, rhs).contains { !$0.0.isEqualTo($0.1) }
-}
-
-
private ↓func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool {
-  switch (lhs, rhs) {
-  case let (lhs?, rhs?):
-    return lhs < rhs
-  case (nil, _?):
-    return true
-  default:
-    return false
-  }
-}
-
- -
-
- - -
-
- - - diff --git a/static_over_final_class.html b/static_over_final_class.html deleted file mode 100644 index 7b3a6774f..000000000 --- a/static_over_final_class.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - static_over_final_class Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Static Over Final Class

- -

Prefer static over class when the declaration is not allowed to be overridden in child classes due to its context being final. Likewise, the compiler complains about open being used in final classes.

- -
    -
  • Identifier: static_over_final_class
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class C {
-    static func f() {}
-}
-
-
class C {
-    static var i: Int { 0 }
-}
-
-
class C {
-    static subscript(_: Int) -> Int { 0 }
-}
-
-
class C {
-    class func f() {}
-}
-
-
final class C {}
-
-
final class C {
-    class D {
-      class func f() {}
-    }
-}
-
-

Triggering Examples

-
class C {
-    ↓final class func f() {}
-}
-
-
class C {
-    ↓final class var i: Int { 0 }
-}
-
-
class C {
-    ↓final class subscript(_: Int) -> Int { 0 }
-}
-
-
final class C {
-    ↓class func f() {}
-}
-
-
class C {
-    final class D {
-        ↓class func f() {}
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/strict_fileprivate.html b/strict_fileprivate.html deleted file mode 100644 index 02d27dd91..000000000 --- a/strict_fileprivate.html +++ /dev/null @@ -1,457 +0,0 @@ - - - - strict_fileprivate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strict Fileprivate

- -

fileprivate should be avoided

- -
    -
  • Identifier: strict_fileprivate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
extension String {}
-
-
private extension String {}
-
-
public
-    extension String {
-        var i: Int { 1 }
-    }
-
-
    private enum E {
-        func f() {}
-    }
-
-
    public struct S {
-        internal let i: Int
-    }
-
-
    open class C {
-        private func f() {}
-    }
-
-
    internal actor A {}
-
-

Triggering Examples

-
    ↓fileprivate class C {
-        ↓fileprivate func f() {}
-    }
-
-
    ↓fileprivate extension String {
-        ↓fileprivate var isSomething: Bool { self == "something" }
-    }
-
-
    ↓fileprivate actor A {
-        ↓fileprivate let i = 1
-    }
-
-
    ↓fileprivate struct C {
-        ↓fileprivate(set) var myInt = 4
-    }
-
-
    struct Outter {
-        struct Inter {
-            ↓fileprivate struct Inner {}
-        }
-    }
-
- -
-
- - -
-
- - - diff --git a/strong_iboutlet.html b/strong_iboutlet.html deleted file mode 100644 index ea6d71c93..000000000 --- a/strong_iboutlet.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - strong_iboutlet Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Strong IBOutlet

- -

@IBOutlets shouldn’t be declared as weak

- -
    -
  • Identifier: strong_iboutlet
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    weak var label: UILabel?
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var label: UILabel?
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓unowned var label: UILabel!
-}
-
-
class ViewController: UIViewController {
-    @IBOutlet ↓weak var textField: UITextField?
-}
-
- -
-
- - -
-
- - - diff --git a/superfluous_disable_command.html b/superfluous_disable_command.html deleted file mode 100644 index f89c69abf..000000000 --- a/superfluous_disable_command.html +++ /dev/null @@ -1,424 +0,0 @@ - - - - superfluous_disable_command Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Superfluous Disable Command

- -

SwiftLint ‘disable’ commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use “ - ” if you wish to document a command.

- -
    -
  • Identifier: superfluous_disable_command
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let abc:Void // swiftlint:disable:this colon
-
-
// swiftlint:disable colon
-let abc:Void
-// swiftlint:enable colon
-
-

Triggering Examples

-
let abc: Void // swiftlint:disable:this colon
-
-
// swiftlint:disable colon
-let abc: Void
-// swiftlint:enable colon
-
- -
-
- - -
-
- - - diff --git a/superfluous_else.html b/superfluous_else.html deleted file mode 100644 index 58dba1b3a..000000000 --- a/superfluous_else.html +++ /dev/null @@ -1,504 +0,0 @@ - - - - superfluous_else Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Superfluous Else

- -

Else branches should be avoided when the previous if-block exits the current scope

- -
    -
  • Identifier: superfluous_else
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if i > 0 {
-    // comment
-} else if i < 12 {
-    return 2
-} else {
-    return 3
-}
-
-
if i > 0 {
-    let a = 1
-    if a > 1 {
-        // comment
-    } else {
-        return 1
-    }
-    // comment
-} else {
-    return 3
-}
-
-
if i > 0 {
-    if a > 1 {
-        return 1
-    }
-} else {
-    return 3
-}
-
-
for i in list {
-    if i > 12 {
-        // Do nothing
-    } else {
-        continue
-    }
-    if i > 14 {
-        // Do nothing
-    } else if i > 13 {
-        break
-    }
-}
-
-
if #available(iOS 13, *) {
-    return
-} else {
-    deprecatedFunction()
-}
-
-

Triggering Examples

-
if i > 0 {
-    return 1
-    // comment
-} ↓else {
-    return 2
-}
-
-
if i > 0 {
-    return 1
-} ↓else if i < 12 {
-    return 2
-} ↓else if i > 18 {
-    return 3
-}
-
-
if i > 0 {
-    if i < 12 {
-        return 5
-    } ↓else {
-        if i > 11 {
-            return 6
-        } ↓else {
-            return 7
-        }
-    }
-} ↓else if i < 12 {
-    return 2
-} ↓else if i < 24 {
-    return 8
-} ↓else {
-    return 3
-}
-
-
for i in list {
-    if i > 13 {
-        return
-    } ↓else if i > 12 {
-        continue
-    } ↓else if i > 11 {
-        break
-    } ↓else {
-        throw error
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/swift-syntax-dashboard.html b/swift-syntax-dashboard.html deleted file mode 100644 index 18446c2a1..000000000 --- a/swift-syntax-dashboard.html +++ /dev/null @@ -1,648 +0,0 @@ - - - - Swift Syntax Dashboard Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Swift Syntax Dashboard

- -

Efforts are actively under way to migrate most rules off SourceKit to use SwiftSyntax instead.

- -

Rules written using SwiftSyntax tend to be significantly faster and have fewer false positives -than rules that use SourceKit to get source structure information.

- -

23 out of 239 (9%) -of SwiftLint’s linter rules use SourceKit.

-

Rules Using SourceKit

-

Default Rules (6)

- - -

Opt-in Rules (17)

- - -

Rules not Using SourceKit

-

Default Rules (93)

- - -

Opt-in Rules (123)

- - - -
-
- - -
-
- - - diff --git a/switch_case_alignment.html b/switch_case_alignment.html deleted file mode 100644 index 9f75c6a78..000000000 --- a/switch_case_alignment.html +++ /dev/null @@ -1,578 +0,0 @@ - - - - switch_case_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Switch and Case Statement Alignment

- -

Case statements should vertically align with their closing brace, or indented if configured otherwise.

- -
    -
  • Identifier: switch_case_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -indented_cases - -false -
    -ignore_one_liners - -false -
  • -
-

Non Triggering Examples

-
switch someBool {
-case true: // case 1
-    print('red')
-case false:
-    /*
-    case 2
-    */
-    if case let .someEnum(val) = someFunc() {
-        print('blue')
-    }
-}
-enum SomeEnum {
-    case innocent
-}
-
-
if aBool {
-    switch someBool {
-    case true:
-        print('red')
-    case false:
-        print('blue')
-    }
-}
-
-
switch someInt {
-// comments ignored
-case 0:
-    // zero case
-    print('Zero')
-case 1:
-    print('One')
-default:
-    print('Some other number')
-}
-
-
func f() -> Int {
-    return switch i {
-    case 1: 1
-    default: 2
-    }
-}
-
-
//
-// ignore_one_liners: true
-//
-
-switch i { case .x: 1 default: 0 }
-
-
-
//
-// ignore_one_liners: true
-//
-
-let a = switch i { case .x: 1 default: 0 }
-
-
-

Triggering Examples

-
switch someBool {
-    ↓case true:
-        print("red")
-    ↓case false:
-        print("blue")
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-            print('red')
-        ↓case false:
-            print('blue')
-    }
-}
-
-
switch someInt {
-    ↓case 0:
-        print('Zero')
-    ↓case 1:
-        print('One')
-    ↓default:
-        print('Some other number')
-}
-
-
let a = switch i {
-    ↓case 1: 1
-    ↓default: 2
-}
-
-
switch someBool {
-case true:
-    print('red')
-    ↓case false:
-        print('blue')
-}
-
-
if aBool {
-    switch someBool {
-        ↓case true:
-        print('red')
-    case false:
-    print('blue')
-    }
-}
-
-
let a = switch i {
-case 1: 1
-    ↓default: 2
-}
-
-
switch i { ↓case .x: 1 ↓default: 0 }
-
-
//
-// ignore_one_liners: true
-//
-
-switch i {
-↓case .x: 1 ↓default: 0 }
-
-
-
//
-// ignore_one_liners: true
-//
-
-switch i { ↓case .x: 1 ↓default: 0
-}
-
-
-
//
-// ignore_one_liners: true
-//
-
-switch i
-{ ↓case .x: 1 ↓default: 0 }
-
-
-
//
-// ignore_one_liners: true
-//
-
-let a = switch i {
-case .x: 1 ↓default: 0
-}
-
-
-
//
-// ignore_one_liners: true
-//
-
-let a = switch i {
-↓case .x: 1 ↓default: 0 }
-
-
- -
-
- - -
-
- - - diff --git a/switch_case_on_newline.html b/switch_case_on_newline.html deleted file mode 100644 index 37f3b1d55..000000000 --- a/switch_case_on_newline.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - switch_case_on_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Cases on Newline

- -

Cases inside a switch should always be on a newline

- -
    -
  • Identifier: switch_case_on_newline
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
/*case 1: */return true
-
-
//case 1:
- return true
-
-
let x = [caseKey: value]
-
-
let x = [key: .default]
-
-
if case let .someEnum(value) = aFunction([key: 2]) { }
-
-
guard case let .someEnum(value) = aFunction([key: 2]) { }
-
-
for case let .someEnum(value) = aFunction([key: 2]) { }
-
-
enum Environment {
- case development
-}
-
-
enum Environment {
- case development(url: URL)
-}
-
-
enum Environment {
- case development(url: URL) // staging
-}
-
-
switch foo {
-    case 1:
- return true
-}
-
-
switch foo {
-    default:
- return true
-}
-
-
switch foo {
-    case let value:
- return true
-}
-
-
switch foo {
-    case .myCase: // error from network
- return true
-}
-
-
switch foo {
-    case let .myCase(value) where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(value)
- where value > 10:
- return false
-}
-
-
switch foo {
-    case let .myCase(code: lhsErrorCode, description: _)
- where lhsErrorCode > 10:
-return false
-}
-
-
switch foo {
-    case #selector(aFunction(_:)):
- return false
-}
-
-
do {
-  let loadedToken = try tokenManager.decodeToken(from: response)
-  return loadedToken
-} catch { throw error }
-
-

Triggering Examples

-
switch foo {
-    ↓case 1: return true
-}
-
-
switch foo {
-    ↓case let value: return true
-}
-
-
switch foo {
-    ↓default: return true
-}
-
-
switch foo {
-    ↓case "a string": return false
-}
-
-
switch foo {
-    ↓case .myCase: return false // error from network
-}
-
-
switch foo {
-    ↓case let .myCase(value) where value > 10: return false
-}
-
-
switch foo {
-    ↓case #selector(aFunction(_:)): return false
-}
-
-
switch foo {
-    ↓case let .myCase(value)
- where value > 10: return false
-}
-
-
switch foo {
-    ↓case .first,
- .second: return false
-}
-
- -
-
- - -
-
- - - diff --git a/syntactic_sugar.html b/syntactic_sugar.html deleted file mode 100644 index f3d1a08d7..000000000 --- a/syntactic_sugar.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - syntactic_sugar Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Syntactic Sugar

- -

Shorthand syntactic sugar should be used, i.e. [Int] instead of Array.

- -
    -
  • Identifier: syntactic_sugar
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let x: [Int]
-
-
let x: [Int: String]
-
-
let x: Int?
-
-
func x(a: [Int], b: Int) -> [Int: Any]
-
-
let x: Int!
-
-
extension Array {
-  func x() { }
-}
-
-
extension Dictionary {
-  func x() { }
-}
-
-
let x: CustomArray<String>
-
-
var currentIndex: Array<OnboardingPage>.Index?
-
-
func x(a: [Int], b: Int) -> Array<Int>.Index
-
-
unsafeBitCast(nonOptionalT, to: Optional<T>.self)
-
-
unsafeBitCast(someType, to: Swift.Array<T>.self)
-
-
IndexingIterator<Array<Dictionary<String, AnyObject>>>.self
-
-
let y = Optional<String>.Type
-
-
type is Optional<String>.Type
-
-
let x: Foo.Optional<String>
-
-
let x = case Optional<Any>.none = obj
-
-
let a = Swift.Optional<String?>.none
-
-

Triggering Examples

-
let x: ↓Array<String>
-
-
let x: ↓Dictionary<Int, String>
-
-
let x: ↓Optional<Int>
-
-
let x: ↓Swift.Array<String>
-
-
func x(a: ↓Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: ↓Swift.Array<Int>, b: Int) -> [Int: Any]
-
-
func x(a: [Int], b: Int) -> ↓Dictionary<Int, String>
-
-
let x = y as? ↓Array<[String: Any]>
-
-
let x = Box<Array<T>>()
-
-
func x() -> Box<↓Array<T>>
-
-
func x() -> ↓Dictionary<String, Any>?
-
-
typealias Document = ↓Dictionary<String, T?>
-
-
func x(_ y: inout ↓Array<T>)
-
-
let x:↓Dictionary<String, ↓Dictionary<Int, Int>>
-
-
func x() -> Any { return ↓Dictionary<Int, String>()}
-
-
let x = ↓Array<String>.array(of: object)
-
-
let x = ↓Swift.Array<String>.array(of: object)
-
-
@_specialize(where S == ↓Array<Character>)
-public init<S: Sequence>(_ elements: S)
-
-
let dict: [String: Any] = [:]
-_ = dict["key"] as? ↓Optional<String?> ?? Optional<String?>.none
-
- -
-
- - -
-
- - - diff --git a/test_case_accessibility.html b/test_case_accessibility.html deleted file mode 100644 index b59ce8301..000000000 --- a/test_case_accessibility.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - test_case_accessibility Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Test Case Accessibility

- -

Test cases should only contain private non-test members

- -
    -
  • Identifier: test_case_accessibility
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -allowed_prefixes - -[] -
    -test_parent_classes - -[“QuickSpec”, “XCTestCase”] -
  • -
-

Non Triggering Examples

-
let foo: String?
-
-
let foo: String?
-
-class FooTests: XCTestCase {
-    static let allTests: [String] = []
-
-    private let foo: String {
-        let nestedMember = "hi"
-        return nestedMember
-    }
-
-    override static func setUp() {}
-
-    override func setUp() {}
-
-    override func setUpWithError() throws {}
-
-    override static func tearDown() {}
-
-    override func tearDown() {}
-
-    override func tearDownWithError() {}
-
-    override func someFutureXCTestFunction() {
-        super.someFutureXCTestFunction()
-    }
-
-    func testFoo() {
-        XCTAssertTrue(true)
-    }
-
-    func testBar() {
-        func nestedFunc() {}
-    }
-
-    private someFunc(hasParam: Bool) {}
-}
-
-
class FooTests: XCTestCase {
-    private struct MockSomething: Something {}
-}
-
-
class FooTests: XCTestCase {
-    override init() {
-        super.init()
-        let foo = 1
-        var bar = 2
-    }
-}
-
-
//
-// allowed_prefixes: ["allowedPrefix"]
-//
-
-class FooTests: XCTestCase {
-    func allowedPrefixTestFoo() {}
-}
-
-
-
class Foobar {
-    func setUp() {}
-
-    func tearDown() {}
-
-    func testFoo() {}
-}
-
-

Triggering Examples

-
class FooTests: XCTestCase {
-    ↓typealias Bar = Foo.Bar
-
-    ↓var foo: String?
-    ↓let bar: String?
-
-    ↓static func foo() {}
-
-    ↓func setUp(withParam: String) {}
-
-    ↓func foobar() {}
-
-    ↓func not_testBar() {}
-
-    ↓enum Nested {}
-
-    ↓static func testFoo() {}
-
-    ↓static func allTests() {}
-
-    ↓func testFoo(hasParam: Bool) {}
-}
-
-final class BarTests: XCTestCase {
-    ↓class Nested {}
-}
-
- -
-
- - -
-
- - - diff --git a/todo.html b/todo.html deleted file mode 100644 index 035de786e..000000000 --- a/todo.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - todo Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Todo

- -

TODOs and FIXMEs should be resolved.

- -
    -
  • Identifier: todo
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only - -[TODO, FIXME] -
  • -
-

Non Triggering Examples

-
// notaTODO:
-
-
// notaFIXME:
-
-

Triggering Examples

-
// ↓TODO:
-
-
// ↓FIXME:
-
-
// ↓TODO(note)
-
-
// ↓FIXME(note)
-
-
/* ↓FIXME: */
-
-
/* ↓TODO: */
-
-
/** ↓FIXME: */
-
-
/** ↓TODO: */
-
- -
-
- - -
-
- - - diff --git a/toggle_bool.html b/toggle_bool.html deleted file mode 100644 index bac1627f9..000000000 --- a/toggle_bool.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - toggle_bool Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Toggle Bool

- -

Prefer someBool.toggle() over someBool = !someBool

- -
    -
  • Identifier: toggle_bool
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
isHidden.toggle()
-
-
view.clipsToBounds.toggle()
-
-
func foo() { abc.toggle() }
-
-
view.clipsToBounds = !clipsToBounds
-
-
disconnected = !connected
-
-
result = !result.toggle()
-
-

Triggering Examples

-
↓isHidden = !isHidden
-
-
↓view.clipsToBounds = !view.clipsToBounds
-
-
func foo() { ↓abc = !abc }
-
- -
-
- - -
-
- - - diff --git a/trailing_closure.html b/trailing_closure.html deleted file mode 100644 index fedfaeeb4..000000000 --- a/trailing_closure.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - trailing_closure Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Closure

- -

Trailing closure syntax should be used whenever possible

- -
    -
  • Identifier: trailing_closure
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only_single_muted_parameter - -false -
  • -
-

Non Triggering Examples

-
foo.map { $0 + 1 }
-
-
foo.bar()
-
-
foo.reduce(0) { $0 + 1 }
-
-
if let foo = bar.map({ $0 + 1 }) { }
-
-
foo.something(param1: { $0 }, param2: { $0 + 1 })
-
-
offsets.sorted { $0.offset < $1.offset }
-
-
foo.something({ return 1 }())
-
-
foo.something({ return $0 }(1))
-
-
foo.something(0, { return 1 }())
-
-
for x in list.filter({ $0.isValid }) {}
-
-
if list.allSatisfy({ $0.isValid }) {}
-
-
foo(param1: 1, param2: { _ in true }, param3: 0)
-
-
foo(param1: 1, param2: { _ in true }) { $0 + 1 }
-
-
foo(param1: { _ in false }, param2: { _ in true })
-
-
foo(param1: { _ in false }, param2: { _ in true }, param3: { _ in false })
-
-
if f({ true }), g({ true }) {
-    print("Hello")
-}
-
-
for i in h({ [1,2,3] }) {
-    print(i)
-}
-
-

Triggering Examples

-
foo.map(↓{ $0 + 1 })
-
-
foo.reduce(0, combine: ↓{ $0 + 1 })
-
-
offsets.sorted(by: ↓{ $0.offset < $1.offset })
-
-
foo.something(0, ↓{ $0 + 1 })
-
-
foo.something(param1: { _ in true }, param2: 0, param3: ↓{ _ in false })
-
- -
-
- - -
-
- - - diff --git a/trailing_comma.html b/trailing_comma.html deleted file mode 100644 index 8d2c64e40..000000000 --- a/trailing_comma.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - trailing_comma Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Comma

- -

Trailing commas in arrays and dictionaries should be avoided/enforced.

- -
    -
  • Identifier: trailing_comma
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -mandatory_comma - -false -
  • -
-

Non Triggering Examples

-
let foo = [1, 2, 3]
-
-
let foo = []
-
-
let foo = [:]
-
-
let foo = [1: 2, 2: 3]
-
-
let foo = [Void]()
-
-
let example = [ 1,
- 2
- // 3,
-]
-
-
foo([1: "\(error)"])
-
-
let foo = [Int]()
-
-

Triggering Examples

-
let foo = [1, 2, 3↓,]
-
-
let foo = [1, 2, 3↓, ]
-
-
let foo = [1, 2, 3   ↓,]
-
-
let foo = [1: 2, 2: 3↓, ]
-
-
struct Bar {
- let foo = [1: 2, 2: 3↓, ]
-}
-
-
let foo = [1, 2, 3↓,] + [4, 5, 6↓,]
-
-
let example = [ 1,
-2↓,
- // 3,
-]
-
-
let foo = ["אבג", "αβγ", "🇺🇸"↓,]
-
-
class C {
- #if true
- func f() {
- let foo = [1, 2, 3↓,]
- }
- #endif
-}
-
-
foo([1: "\(error)"↓,])
-
- -
-
- - -
-
- - - diff --git a/trailing_newline.html b/trailing_newline.html deleted file mode 100644 index 0a66d1c6d..000000000 --- a/trailing_newline.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - trailing_newline Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Newline

- -

Files should have a single trailing newline

- -
    -
  • Identifier: trailing_newline
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let a = 0
-
-
-

Triggering Examples

-
let a = 0
-
-
let a = 0
-
-
-
- -
-
- - -
-
- - - diff --git a/trailing_semicolon.html b/trailing_semicolon.html deleted file mode 100644 index 38ef06015..000000000 --- a/trailing_semicolon.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - trailing_semicolon Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Semicolon

- -

Lines should not have trailing semicolons

- -
    -
  • Identifier: trailing_semicolon
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let a = 0
-
-
let a = 0; let b = 0
-
-

Triggering Examples

-
let a = 0↓;
-
-
-
let a = 0↓;
-let b = 1
-
-
let a = 0↓; // a comment
-
-
- -
-
- - -
-
- - - diff --git a/trailing_whitespace.html b/trailing_whitespace.html deleted file mode 100644 index 77f100fa9..000000000 --- a/trailing_whitespace.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - trailing_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Trailing Whitespace

- -

Lines should not have trailing whitespace

- -
    -
  • Identifier: trailing_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignores_empty_lines - -false -
    -ignores_comments - -true -
  • -
-

Non Triggering Examples

-
let name: String
-
-
-
//
-
-
-
// 
-
-
-
let name: String //
-
-
-
let name: String // 
-
-
-

Triggering Examples

-
let name: String 
-
-
-
/* */ let name: String 
-
-
- -
-
- - -
-
- - - diff --git a/type_body_length.html b/type_body_length.html deleted file mode 100644 index 6eb519466..000000000 --- a/type_body_length.html +++ /dev/null @@ -1,5516 +0,0 @@ - - - - type_body_length Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Body Length

- -

Type bodies should not span too many lines

- -
    -
  • Identifier: type_body_length
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: metrics
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -warning - -250 -
    -error - -350 -
  • -
-

Non Triggering Examples

-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
class Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
class Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
struct Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
struct Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
enum Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
enum Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-
actor Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
actor Abc {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-
-
-
actor Abc {
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-// this is a comment
-}
-
-
-
actor Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-
-/* this is
-a multiline comment
-*/}
-
-
-

Triggering Examples

-
↓class Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓struct Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓enum Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
-
↓actor Abc {
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-let abc = 0
-}
-
-
- -
-
- - -
-
- - - diff --git a/type_contents_order.html b/type_contents_order.html deleted file mode 100644 index 10de8b7cf..000000000 --- a/type_contents_order.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - type_contents_order Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Contents Order

- -

Specifies the order of subtypes, properties, methods & more within a type.

- -
    -
  • Identifier: type_contents_order
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -order - -[[case], [type_alias, associated_type], [subtype], [type_property], [instance_property], [ib_inspectable], [ib_outlet], [initializer], [type_method], [view_life_cycle_method], [ib_action], [other_method], [subscript], [deinitializer]] -
  • -
-

Non Triggering Examples

-
class TestViewController: UIViewController {
-// Type Aliases
-typealias CompletionHandler = ((TestEnum) -> Void)
-
-// Subtypes
-class TestClass {
-    // 10 lines
-}
-
-struct TestStruct {
-    // 3 lines
-}
-
-enum TestEnum {
-    // 5 lines
-}
-
-// Type Properties
-static let cellIdentifier: String = "AmazingCell"
-
-// Instance Properties
-var shouldLayoutView1: Bool!
-weak var delegate: TestViewControllerDelegate?
-private var hasLayoutedView1: Bool = false
-private var hasLayoutedView2: Bool = false
-
-private var hasAnyLayoutedView: Bool {
-     return hasLayoutedView1 || hasLayoutedView2
-}
-
-// IBOutlets
-@IBOutlet private var view1: UIView!
-@IBOutlet private var view2: UIView!
-
-// Initializers
-override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-}
-
-required init?(coder aDecoder: NSCoder) {
-    fatalError("init(coder:) has not been implemented")
-}
-
-// Type Methods
-static func makeViewController() -> TestViewController {
-    // some code
-}
-
-// View Life-Cycle Methods
-override func viewDidLoad() {
-    super.viewDidLoad()
-
-    view1.setNeedsLayout()
-    view1.layoutIfNeeded()
-    hasLayoutedView1 = true
-}
-
-override func willMove(toParent parent: UIViewController?) {
-    super.willMove(toParent: parent)
-    if parent == nil {
-        viewModel.willMoveToParent()
-    }
-}
-
-override func viewDidLayoutSubviews() {
-    super.viewDidLayoutSubviews()
-
-    view2.setNeedsLayout()
-    view2.layoutIfNeeded()
-    hasLayoutedView2 = true
-}
-
-override func viewIsAppearing(_ animated: Bool) {
-    super.viewIsAppearing(animated)
-}
-
-// IBActions
-@IBAction func goNextButtonPressed() {
-    goToNextVc()
-    delegate?.didPressTrackedButton()
-}
-
-// Other Methods
-func goToNextVc() { /* TODO */ }
-
-func goToInfoVc() { /* TODO */ }
-
-func goToRandomVc() {
-    let viewCtrl = getRandomVc()
-    present(viewCtrl, animated: true)
-}
-
-private func getRandomVc() -> UIViewController { return UIViewController() }
-
-// Subscripts
-subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-    get {
-        return "This is just a test"
-    }
-
-    set {
-        log.warning("Just a test", newValue)
-    }
-}
-
-deinit {
-    log.debug("deinit")
-},
-}
-
-

Triggering Examples

-
class TestViewController: UIViewController {
-    // Subtypes
-    ↓class TestClass {
-        // 10 lines
-    }
-
-    // Type Aliases
-    typealias CompletionHandler = ((TestEnum) -> Void)
-}
-
-
class TestViewController: UIViewController {
-    // Stored Type Properties
-    ↓static let cellIdentifier: String = "AmazingCell"
-
-    // Subtypes
-    class TestClass {
-        // 10 lines
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Stored Instance Properties
-    ↓var shouldLayoutView1: Bool!
-
-    // Stored Type Properties
-    static let cellIdentifier: String = "AmazingCell"
-}
-
-
class TestViewController: UIViewController {
-    // IBOutlets
-    @IBOutlet private ↓var view1: UIView!
-
-    // Computed Instance Properties
-    private var hasAnyLayoutedView: Bool {
-         return hasLayoutedView1 || hasLayoutedView2
-    }
-}
-
-
class TestViewController: UIViewController {
-
-    // deinitializer
-    ↓deinit {
-        log.debug("deinit")
-    }
-
-    // Initializers
-    override ↓init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
-        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
-    }
-
-    // IBOutlets
-    @IBOutlet private var view1: UIView!
-    @IBOutlet private var view2: UIView!
-}
-
-
class TestViewController: UIViewController {
-    // View Life-Cycle Methods
-    override ↓func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-
-    // Type Methods
-    static func makeViewController() -> TestViewController {
-        // some code
-    }
-}
-
-
class TestViewController: UIViewController {
-    // IBActions
-    @IBAction ↓func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-
-    // View Life-Cycle Methods
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        view1.setNeedsLayout()
-        view1.layoutIfNeeded()
-        hasLayoutedView1 = true
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Other Methods
-    ↓func goToNextVc() { /* TODO */ }
-
-    // IBActions
-    @IBAction func goNextButtonPressed() {
-        goToNextVc()
-        delegate?.didPressTrackedButton()
-    }
-}
-
-
class TestViewController: UIViewController {
-    // Subscripts
-    ↓subscript(_ someIndexThatIsNotEvenUsed: Int) -> String {
-        get {
-            return "This is just a test"
-        }
-
-        set {
-            log.warning("Just a test", newValue)
-        }
-    }
-
-    // MARK: Other Methods
-    func goToNextVc() { /* TODO */ }
-}
-
- -
-
- - -
-
- - - diff --git a/type_name.html b/type_name.html deleted file mode 100644 index 5c0a1e3ad..000000000 --- a/type_name.html +++ /dev/null @@ -1,576 +0,0 @@ - - - - type_name Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type Name

- -

Type name should only contain alphanumeric characters, start with an uppercase character and span between 3 and 40 characters in length. -Private types may start with an underscore.

- -
    -
  • Identifier: type_name
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -min_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -3 -
    -error - -0 -
    -
    -max_length - - - - - - - - - - - - - - - -
    KeyValue
    -warning - -40 -
    -error - -1000 -
    -
    -excluded - -[] -
    -allowed_symbols - -[] -
    -unallowed_symbols_severity - -error -
    -validates_start_with_lowercase - -error -
    -validate_protocols - -true -
  • -
-

Non Triggering Examples

-
class MyType {}
-
-
private struct _MyType {}
-
-
enum AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
typealias Foo = Void
-
-
private typealias Foo = Void
-
-
protocol Foo {
-  associatedtype Bar
-}
-
-
protocol Foo {
-  associatedtype Bar: Equatable
-}
-
-
enum MyType {
-case value
-}
-
-
//
-// validate_protocols: false
-//
-
-protocol P {}
-
-
-
struct SomeStruct {
-  enum `Type` {
-    case x, y, z
-  }
-}
-
-

Triggering Examples

-
class ↓myType {}
-
-
enum ↓_MyType {}
-
-
private struct ↓MyType_ {}
-
-
struct ↓My {}
-
-
struct ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
-
-
class ↓MyView_Previews
-
-
private struct ↓_MyView_Previews
-
-
typealias ↓X = Void
-
-
private typealias ↓Foo_Bar = Void
-
-
private typealias ↓foo = Void
-
-
typealias ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = Void
-
-
protocol Foo {
-  associatedtype ↓X
-}
-
-
protocol Foo {
-  associatedtype ↓Foo_Bar: Equatable
-}
-
-
protocol Foo {
-  associatedtype ↓AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-}
-
-
protocol ↓X {}
-
- -
-
- - -
-
- - - diff --git a/typesafe_array_init.html b/typesafe_array_init.html deleted file mode 100644 index 2e8bc9e9e..000000000 --- a/typesafe_array_init.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - typesafe_array_init Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Type-safe Array Init

- -

Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array

- -
    -
  • Identifier: typesafe_array_init
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
enum MyError: Error {}
-let myResult: Result<String, MyError> = .success("")
-let result: Result<Any, MyError> = myResult.map { $0 }
-
-
struct IntArray {
-    let elements = [1, 2, 3]
-    func map<T>(_ transformer: (Int) throws -> T) rethrows -> [T] {
-        try elements.map(transformer)
-    }
-}
-let ints = IntArray()
-let intsCopy = ints.map { $0 }
-
-

Triggering Examples

-
func f<Seq: Sequence>(s: Seq) -> [Seq.Element] {
-    s.↓map({ $0 })
-}
-
-
func f(array: [Int]) -> [Int] {
-    array.↓map { $0 }
-}
-
-
let myInts = [1, 2, 3].↓map { return $0 }
-
-
struct Generator: Sequence, IteratorProtocol {
-    func next() -> Int? { nil }
-}
-let array = Generator().↓map { i in i }
-
- -
-
- - -
-
- - - diff --git a/unavailable_condition.html b/unavailable_condition.html deleted file mode 100644 index bb260213b..000000000 --- a/unavailable_condition.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - unavailable_condition Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unavailable Condition

- -

Use #unavailable/#available instead of #available/#unavailable with an empty body.

- -
    -
  • Identifier: unavailable_condition
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.6.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if #unavailable(iOS 13) {
-  loadMainWindow()
-}
-
-
if #available(iOS 9.0, *) {
-  doSomething()
-} else {
-  legacyDoSomething()
-}
-
-
if #available(macOS 11.0, *) {
-   // Do nothing
-} else if #available(macOS 10.15, *) {
-   print("do some stuff")
-}
-
-

Triggering Examples

-
if ↓#available(iOS 14.0) {
-
-} else {
-  oldIos13TrackingLogic(isEnabled: ASIdentifierManager.shared().isAdvertisingTrackingEnabled)
-}
-
-
if ↓#available(iOS 14.0) {
-  // we don't need to do anything here
-} else {
-  oldIos13TrackingLogic(isEnabled: ASIdentifierManager.shared().isAdvertisingTrackingEnabled)
-}
-
-
if ↓#available(iOS 13, *) {} else {
-  loadMainWindow()
-}
-
-
if ↓#unavailable(iOS 13) {
-  // Do nothing
-} else if i < 2 {
-  loadMainWindow()
-}
-
- -
-
- - -
-
- - - diff --git a/unavailable_function.html b/unavailable_function.html deleted file mode 100644 index 17c83f3a1..000000000 --- a/unavailable_function.html +++ /dev/null @@ -1,461 +0,0 @@ - - - - unavailable_function Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unavailable Function

- -

Unimplemented functions should be marked as unavailable

- -
    -
  • Identifier: unavailable_function
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class ViewController: UIViewController {
-  @available(*, unavailable)
-  public required init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
func jsonValue(_ jsonString: String) -> NSObject {
-   let data = jsonString.data(using: .utf8)!
-   let result = try! JSONSerialization.jsonObject(with: data, options: [])
-   if let dict = (result as? [String: Any])?.bridge() {
-    return dict
-   } else if let array = (result as? [Any])?.bridge() {
-    return array
-   }
-   fatalError()
-}
-
-
func resetOnboardingStateAndCrash() -> Never {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
-

Triggering Examples

-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    fatalError("init(coder:) has not been implemented")
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    let reason = "init(coder:) has not been implemented"
-    fatalError(reason)
-  }
-}
-
-
class ViewController: UIViewController {
-  public required ↓init?(coder aDecoder: NSCoder) {
-    preconditionFailure("init(coder:) has not been implemented")
-  }
-}
-
-
↓func resetOnboardingStateAndCrash() {
-    resetUserDefaults()
-    // Crash the app to re-start the onboarding flow.
-    fatalError("Onboarding re-start crash.")
-}
-
- -
-
- - -
-
- - - diff --git a/undocumented.json b/undocumented.json deleted file mode 100644 index ec7e65616..000000000 --- a/undocumented.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "warnings": [ - - ], - "source_directory": "/Users/runner/work/1/s" -} \ No newline at end of file diff --git a/unhandled_throwing_task.html b/unhandled_throwing_task.html deleted file mode 100644 index 16421d943..000000000 --- a/unhandled_throwing_task.html +++ /dev/null @@ -1,552 +0,0 @@ - - - - unhandled_throwing_task Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unhandled Throwing Task

- -

Errors thrown inside this task are not handled, which may be unexpected. Handle errors inside the task, or use try await to access the Tasks value and handle errors. See this forum thread for more details: https://forums.swift.org/t/task-initializer-with-throwing-closure-swallows-error/56066

- -
    -
  • Identifier: unhandled_throwing_task
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -error -
  • -
-

Non Triggering Examples

-
Task<Void, Never> {
-  try await myThrowingFunction()
-}
-
-
Task {
-  try? await myThrowingFunction()
-}
-
-
Task {
-  try! await myThrowingFunction()
-}
-
-
Task<Void, String> {
-  let text = try myThrowingFunction()
-  return text
-}
-
-
Task {
-  do {
-    try myThrowingFunction()
-  } catch let e {
-    print(e)
-  }
-}
-
-
func someFunction() throws {
-  Task {
-    anotherFunction()
-    do {
-      try myThrowingFunction()
-    } catch {
-      print(error)
-    }
-  }
-
-  try something()
-}
-
-
let task = Task {
-  try await myThrowingFunction()
-}
-
-
var task = Task {
-  try await myThrowingFunction()
-}
-
-
try await Task {
-  try await myThrowingFunction()
-}.value
-
-
executor.task = Task {
-  try await isolatedOpen(.init(executor.asUnownedSerialExecutor()))
-}
-
-
let result = await Task {
-  throw CancellationError()
-}.result
-
-
func makeTask() -> Task<String, Error> {
-  return Task {
-    try await someThrowingFunction()
-  }
-}
-
-
func makeTask() -> Task<String, Error> {
-  // Implicit return
-  Task {
-    try await someThrowingFunction()
-  }
-}
-
-
Task {
-  return Result {
-      try someThrowingFunc()
-  }
-}
-
-

Triggering Examples

-
↓Task {
-  try await myThrowingFunction()
-}
-
-
↓Task {
-  let text = try myThrowingFunction()
-  return text
-}
-
-
↓Task {
-  do {
-    try myThrowingFunction()
-  }
-}
-
-
↓Task {
-  do {
-    try myThrowingFunction()
-  } catch let e as FooError {
-    print(e)
-  }
-}
-
-
↓Task {
-  do {
-    throw FooError.bar
-  }
-}
-
-
↓Task {
-  throw FooError.bar
-}
-
-
↓Task<_, _> {
-  throw FooError.bar
-}
-
-
↓Task<Void,_> {
-  throw FooError.bar
-}
-
-
↓Task {
-  do {
-    try foo()
-  } catch {
-    try bar()
-  }
-}
-
-
↓Task {
-  do {
-    try foo()
-  } catch {
-    throw BarError()
-  }
-}
-
-
func doTask() {
-  ↓Task {
-    try await someThrowingFunction()
-  }
-}
-
- -
-
- - -
-
- - - diff --git a/unneeded_break_in_switch.html b/unneeded_break_in_switch.html deleted file mode 100644 index b784fa637..000000000 --- a/unneeded_break_in_switch.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - unneeded_break_in_switch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Break in Switch

- -

Avoid using unneeded break statements

- -
    -
  • Identifier: unneeded_break_in_switch
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch foo {
-case .bar:
-    break
-}
-
-
switch foo {
-default:
-    break
-}
-
-
switch foo {
-case .bar:
-    for i in [0, 1, 2] { break }
-}
-
-
switch foo {
-case .bar:
-    if true { break }
-}
-
-
switch foo {
-case .bar:
-    something()
-}
-
-
let items = [Int]()
-for item in items {
-    if bar() {
-        do {
-            try foo()
-        } catch {
-            bar()
-            break
-        }
-    }
-}
-
-

Triggering Examples

-
switch foo {
-case .bar:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .bar:
-    something()
-    ↓break // comment
-}
-
-
switch foo {
-default:
-    something()
-    ↓break
-}
-
-
switch foo {
-case .foo, .foo2 where condition:
-    something()
-    ↓break
-}
-
- -
-
- - -
-
- - - diff --git a/unneeded_override.html b/unneeded_override.html deleted file mode 100644 index ed15d7701..000000000 --- a/unneeded_override.html +++ /dev/null @@ -1,570 +0,0 @@ - - - - unneeded_override Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Overridden Functions

- -

Remove overridden functions that don’t do anything except call their super

- -
    -
  • Identifier: unneeded_override
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -affect_initializers - -false -
  • -
-

Non Triggering Examples

-
class Foo {
-    override func bar() {
-        super.bar()
-        print("hi")
-    }
-}
-
-
class Foo {
-    @available(*, unavailable)
-    override func bar() {
-        super.bar()
-    }
-}
-
-
class Foo {
-    @objc override func bar() {
-        super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() {
-        super.bar()
-        super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() throws {
-        // Doing a different variation of 'try' changes behavior
-        try! super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() throws {
-        // Doing a different variation of 'try' changes behavior
-        try? super.bar()
-    }
-}
-
-
class Foo {
-    override func bar() async throws {
-        // Doing a different variation of 'try' changes behavior
-        await try! super.bar()
-    }
-}
-
-
class Foo {
-    override func bar(arg: Bool) {
-        // Flipping the argument changes behavior
-        super.bar(arg: !arg)
-    }
-}
-
-
class Foo {
-    override func bar(_ arg: Int) {
-        // Changing the argument changes behavior
-        super.bar(arg + 1)
-    }
-}
-
-
class Foo {
-    override func bar(arg: Int) {
-        // Changing the argument changes behavior
-        super.bar(arg: arg.var)
-    }
-}
-
-
class Foo {
-    override func bar(_ arg: Int) {
-        // Not passing arguments because they have default values changes behavior
-        super.bar()
-    }
-}
-
-
class Foo {
-    override func bar(arg: Int, _ arg3: Bool) {
-        // Calling a super function with different argument labels changes behavior
-        super.bar(arg2: arg, arg3: arg3)
-    }
-}
-
-
class Foo {
-    override func bar(animated: Bool, completion: () -> Void) {
-        super.bar(animated: animated) {
-            // This likely changes behavior
-        }
-    }
-}
-
-
class Foo {
-    override func bar(animated: Bool, completion: () -> Void) {
-        super.bar(animated: animated, completion: {
-            // This likely changes behavior
-        })
-    }
-}
-
-
class Baz: Foo {
-    // A default argument might be a change
-    override func bar(value: String = "Hello") {
-        super.bar(value: value)
-    }
-}
-
-

Triggering Examples

-
class Foo {
-    ↓override func bar() {
-        super.bar()
-    }
-}
-
-
class Foo {
-    ↓override func bar() {
-        return super.bar()
-    }
-}
-
-
class Foo {
-    ↓override func bar() {
-        super.bar()
-        // comments don't affect this
-    }
-}
-
-
class Foo {
-    ↓override func bar() async {
-        await super.bar()
-    }
-}
-
-
class Foo {
-    ↓override func bar() throws {
-        try super.bar()
-        // comments don't affect this
-    }
-}
-
-
class Foo {
-    ↓override func bar(arg: Bool) throws {
-        try super.bar(arg: arg)
-    }
-}
-
-
class Foo {
-    ↓override func bar(animated: Bool, completion: () -> Void) {
-        super.bar(animated: animated, completion: completion)
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/unneeded_parentheses_in_closure_argument.html b/unneeded_parentheses_in_closure_argument.html deleted file mode 100644 index 443935158..000000000 --- a/unneeded_parentheses_in_closure_argument.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - unneeded_parentheses_in_closure_argument Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Parentheses in Closure Argument

- -

Parentheses are not needed when declaring closure arguments

- -
    -
  • Identifier: unneeded_parentheses_in_closure_argument
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let foo = { (bar: Int) in }
-
-
let foo = { bar, _  in }
-
-
let foo = { bar in }
-
-
let foo = { bar -> Bool in return true }
-
-
DispatchQueue.main.async { () -> Void in
-    doSomething()
-}
-
-

Triggering Examples

-
call(arg: { ↓(bar) in })
-
-
call(arg: { ↓(bar, _) in })
-
-
let foo = { ↓(bar) -> Bool in return true }
-
-
foo.map { ($0, $0) }.forEach { ↓(x, y) in }
-
-
foo.bar { [weak self] ↓(x, y) in }
-
-
[].first { ↓(temp) in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
-
[].first { temp in
-    [].first { ↓(temp) in
-        [].first { ↓(temp) in
-            _ = temp
-            return false
-        }
-        return false
-    }
-    return false
-}
-
- -
-
- - -
-
- - - diff --git a/unneeded_synthesized_initializer.html b/unneeded_synthesized_initializer.html deleted file mode 100644 index 89ed2c737..000000000 --- a/unneeded_synthesized_initializer.html +++ /dev/null @@ -1,742 +0,0 @@ - - - - unneeded_synthesized_initializer Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unneeded Synthesized Initializer

- -

Default or memberwise initializers that will be automatically synthesized do not need to be manually defined.

- -
    -
  • Identifier: unneeded_synthesized_initializer
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
struct Foo {
-    let bar: String
-
-    // Synthesized initializer would not be private.
-    private init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar: String
-
-    // Synthesized initializer would not be private.
-    private init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    let bar: String
-
-    // Synthesized initializer would not be fileprivate.
-    fileprivate init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    let bar: String
-
-    // Synthesized initializer would not prepend "foo".
-    init(bar: String) {
-        self.bar = "foo" + bar
-    }
-}
-
-
internal struct Foo {
-    let bar: String
-
-    // Failable initializer
-    init?(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    let bar: String
-
-    // Initializer throws
-    init(bar: String) throws {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    let bar: String
-
-    // Different argument labels
-    init(_ bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    var bar: String = "foo"
-
-    // Different default values
-    init(bar: String = "bar") {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    private static var bar: String
-
-    // var is static
-    init(bar: String) {
-        Self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    private var bar: String
-
-    // var is private
-    init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    fileprivate var bar: String
-
-    // var is fileprivate
-    init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-    // init has no body
-    init(foo: String, bar: String) {
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-    // foo is not initialized
-    init(foo: String, bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-    // Ordering of args is different from properties.
-    init(bar: String, foo: String) {
-        self.foo = foo
-        self.bar = bar
-    }
-}
-
-
@frozen
-public struct Field {
-    @usableFromInline
-    let index: Int
-
-    @usableFromInline
-    let parent: Metadata
-
-    @inlinable // inlinable
-    init(index: Int, parent: Metadata) {
-       self.index = index
-       self.parent = parent
-    }
-}
-
-
internal struct Foo {
-    var bar: String = ""
-    var baz: Int = 0
-
-    // These initializers must be declared.
-    init() { }
-
-    init(bar: String = "", baz: Int = 0) {
-        self.bar = bar
-        self.baz = baz
-    }
-
-    // Because manually declared initializers block
-    // synthesization.
-    init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    init() {
-        print("perform side effect")
-    }
-}
-
-
struct Foo {
-    var bar: Int = 0
-
-    init(bar: Int = 0) {
-        self.bar = bar
-        print("perform side effect")
-    }
-}
-
-
struct Foo {
-    var bar: Int
-
-    init(@Clamped bar: Int) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    let bar: Int
-
-    init(bar: Int) {
-        self.bar = bar
-    }
-    init?() {
-        return nil
-    }
-}
-
-
struct Foo {
-    @available(*, unavailable)
-    init() {}
-}
-
-

Triggering Examples

-
struct Foo {
-    let bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
private struct Foo {
-    let bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
fileprivate struct Foo {
-    let bar: String
-
-   ↓init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    fileprivate var bar: String
-
-   ↓fileprivate init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    private var bar: String
-
-   ↓private init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var foo: String
-    var bar: String
-
-   ↓init(foo: String, bar: String) {
-        self.foo = foo
-        self.bar = bar
-    }
-}
-
-
internal struct Foo {
-    var bar: String
-
-   ↓internal init(bar: String) {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar: String = ""
-
-   ↓init() {
-        // Empty initializer will be generated automatically
-        // when all vars have default values.
-    }
-}
-
-
struct Foo {
-    var bar: String = ""
-
-   ↓init() {
-        // Empty initializer
-    }
-
-   ↓init(bar: String = "") {
-        self.bar = bar
-    }
-}
-
-
struct Foo {
-    var bar = ""
-
-   ↓init(bar: String = "") {
-        self.bar = bar
-    }
-}
-
-
struct Outer {
-    struct Inner {
-        let prop: Int
-
-       ↓init(prop: Int) {
-            self.prop = prop
-        }
-    }
-}
-
-
class Foo {
-    struct Bar {
-        let baz: Int
-
-       ↓init(baz: Int) {
-            self.baz = baz
-        }
-    }
-}
-
-
struct Foo {
-    let i: Int
-    struct Bar {
-        let j: Int
-        ↓init(j: Int) {
-            self.j = j
-        }
-    }
-    ↓init(i: Int) {
-        self.i = i
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/unowned_variable_capture.html b/unowned_variable_capture.html deleted file mode 100644 index 6e881403e..000000000 --- a/unowned_variable_capture.html +++ /dev/null @@ -1,438 +0,0 @@ - - - - unowned_variable_capture Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unowned Variable Capture

- -

Prefer capturing references as weak to avoid potential crashes

- -
    -
  • Identifier: unowned_variable_capture
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo { [weak self] in _ }
-
-
foo { [weak self] param in _ }
-
-
foo { [weak bar] in _ }
-
-
foo { [weak bar] param in _ }
-
-
foo { bar in _ }
-
-
foo { $0 }
-
-
final class First {}
-final class Second {
-    unowned var value: First
-    init(value: First) {
-        self.value = value
-    }
-}
-
-

Triggering Examples

-
foo { [↓unowned self] in _ }
-
-
foo { [↓unowned bar] in _ }
-
-
foo { [bar, ↓unowned self] in _ }
-
- -
-
- - -
-
- - - diff --git a/untyped_error_in_catch.html b/untyped_error_in_catch.html deleted file mode 100644 index 635db6565..000000000 --- a/untyped_error_in_catch.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - untyped_error_in_catch Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Untyped Error in Catch

- -

Catch statements should not declare error variables without type casting

- -
    -
  • Identifier: untyped_error_in_catch
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
do {
-  try foo()
-} catch {}
-
-
do {
-  try foo()
-} catch Error.invalidOperation {
-} catch {}
-
-
do {
-  try foo()
-} catch let error as MyError {
-} catch {}
-
-
do {
-  try foo()
-} catch var error as MyError {
-} catch {}
-
-
do {
-    try something()
-} catch let e where e.code == .fileError {
-    // can be ignored
-} catch {
-    print(error)
-}
-
-

Triggering Examples

-
do {
-  try foo()
-} ↓catch var error {}
-
-
do {
-  try foo()
-} ↓catch let error {}
-
-
do {
-  try foo()
-} ↓catch let someError {}
-
-
do {
-  try foo()
-} ↓catch var someError {}
-
-
do {
-  try foo()
-} ↓catch let e {}
-
-
do {
-  try foo()
-} ↓catch(let error) {}
-
-
do {
-  try foo()
-} ↓catch (let error) {}
-
- -
-
- - -
-
- - - diff --git a/unused_capture_list.html b/unused_capture_list.html deleted file mode 100644 index 70378e0e3..000000000 --- a/unused_capture_list.html +++ /dev/null @@ -1,517 +0,0 @@ - - - - unused_capture_list Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Capture List

- -

Unused reference in a capture list should be removed

- -
    -
  • Identifier: unused_capture_list
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map {
-    [ weak
-      delegate,
-      unowned
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [weak self] num in
-    self?.handle(num)
-}
-
-
let failure: Failure = { [weak self, unowned delegate = self.delegate!] foo in
-    delegate.handle(foo, self)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    handler?.handle($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) {
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [foo] _ in foo.bar() }()
-
-
sizes.max().flatMap { [(offset: offset, size: $0)] } ?? []
-
-
[1, 2].map { [self] num in
-    handle(num)
-}
-
-
[1, 2].map { [unowned self] num in
-    handle(num)
-}
-
-
[1, 2].map { [self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map { [unowned self, unowned delegate = self.delegate!] num in
-    delegate.handle(num)
-}
-
-
[1, 2].map {
-    [ weak
-      delegate,
-      self
-    ] num in
-    delegate.handle(num)
-}
-
-
rx.onViewDidAppear.subscribe(onNext: { [unowned self] in
-      doSomething()
-}).disposed(by: disposeBag)
-
-
let closure = { [weak self] in
-    guard let self else {
-        return
-    }
-    someInstanceFunction()
-}
-
-

Triggering Examples

-
[1, 2].map { [↓weak self] num in
-    print(num)
-}
-
-
let failure: Failure = { [weak self, ↓unowned delegate = self.delegate!] foo in
-    self?.handle(foo)
-}
-
-
let failure: Failure = { [↓weak self, ↓unowned delegate = self.delegate!] foo in
-    print(foo)
-}
-
-
numbers.forEach({
-    [weak handler] in
-    print($0)
-})
-
-
numbers.forEach({
-    [self, ↓weak handler] in
-    print($0)
-})
-
-
withEnvironment(apiService: MockService(fetchProjectResponse: project)) { [↓foo] in
-    [Device.phone4_7inch, Device.phone5_8inch, Device.pad].forEach { device in
-        device.handle()
-    }
-}
-
-
{ [↓foo] in _ }()
-
-
let closure = { [↓weak a] in
-    // The new `a` immediately shadows the captured `a` which thus isn't needed.
-    guard let a = getOptionalValue() else {
-        return
-    }
-    someInstanceFunction()
-}
-
- -
-
- - -
-
- - - diff --git a/unused_closure_parameter.html b/unused_closure_parameter.html deleted file mode 100644 index 6814a1acd..000000000 --- a/unused_closure_parameter.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - unused_closure_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Closure Parameter

- -

Unused parameter in a closure should be replaced with _

- -
    -
  • Identifier: unused_closure_parameter
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
[1, 2].map { $0 + 1 }
-
-
[1, 2].map({ $0 + 1 })
-
-
[1, 2].map { number in
- number + 1 
-}
-
-
[1, 2].map { _ in
- 3 
-}
-
-
[1, 2].something { number, idx in
- return number * idx
-}
-
-
let isEmpty = [1, 2].isEmpty()
-
-
violations.sorted(by: { lhs, rhs in 
- return lhs.location > rhs.location
-})
-
-
rlmConfiguration.migrationBlock.map { rlmMigration in
-    return { migration, schemaVersion in
-        rlmMigration(migration.rlmMigration, schemaVersion)
-    }
-}
-
-
genericsFunc { (a: Type, b) in
-    a + b
-}
-
-
var label: UILabel = { (lbl: UILabel) -> UILabel in
-    lbl.backgroundColor = .red
-    return lbl
-}(UILabel())
-
-
hoge(arg: num) { num in
-    return num
-}
-
-
({ (manager: FileManager) in
-  print(manager)
-})(FileManager.default)
-
-
withPostSideEffect { input in
-    if true { print("\(input)") }
-}
-
-
viewModel?.profileImage.didSet(weak: self) { (self, profileImage) in
-    self.profileImageView.image = profileImage
-}
-
-
let failure: Failure = { task, error in
-    observer.sendFailed(error, task)
-}
-
-
List($names) { $name in
-    Text(name)
-}
-
-
List($names) { $name in
-    TextField($name)
-}
-
-
_ = ["a"].filter { `class` in `class`.hasPrefix("a") }
-
-
let closure: (Int) -> Void = { `foo` in _ = foo }
-
-
let closure: (Int) -> Void = { foo in _ = `foo` }
-
-

Triggering Examples

-
[1, 2].map { ↓number in
- return 3 }
-
-
[1, 2].map { ↓number in
- return numberWithSuffix }
-
-
[1, 2].map { ↓number in
- return 3 // number }
-
-
[1, 2].map { ↓number in
- return 3 "number" }
-
-
[1, 2].something { number, ↓idx in
- return number }
-
-
genericsFunc { (↓number: TypeA, idx: TypeB) in return idx }
-
-
let c: (Int) -> Void = { foo in _ = .foo }
-
-
hoge(arg: num) { ↓num in
-}
-
-
fooFunc { ↓아 in }
-
-
func foo () {
- bar { ↓number in return 3 }
-
-
viewModel?.profileImage.didSet(weak: self) { (↓self, profileImage) in
-    profileImageView.image = profileImage
-}
-
-
let failure: Failure = { ↓task, error in
-    observer.sendFailed(error)
-}
-
-
List($names) { ↓$name in
-    Text("Foo")
-}
-
-
let class1 = "a"
-_ = ["a"].filter { ↓`class` in `class1`.hasPrefix("a") }
-
- -
-
- - -
-
- - - diff --git a/unused_control_flow_label.html b/unused_control_flow_label.html deleted file mode 100644 index b36d68587..000000000 --- a/unused_control_flow_label.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - unused_control_flow_label Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Control Flow Label

- -

Unused control flow label should be removed

- -
    -
  • Identifier: unused_control_flow_label
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
loop: while true { break loop }
-
-
loop: while true { continue loop }
-
-
loop:
-    while true { break loop }
-
-
while true { break }
-
-
loop: for x in array { break loop }
-
-
label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break label
-}
-
-
loop: repeat {
-    if x == 10 {
-        break loop
-    }
-} while true
-
-

Triggering Examples

-
↓loop: while true { break }
-
-
↓loop: while true { break loop1 }
-
-
↓loop: while true { break outerLoop }
-
-
↓loop: for x in array { break }
-
-
↓label: switch number {
-case 1: print("1")
-case 2: print("2")
-default: break
-}
-
-
↓loop: repeat {
-    if x == 10 {
-        break
-    }
-} while true
-
- -
-
- - -
-
- - - diff --git a/unused_declaration.html b/unused_declaration.html deleted file mode 100644 index 19c970e9b..000000000 --- a/unused_declaration.html +++ /dev/null @@ -1,707 +0,0 @@ - - - - unused_declaration Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Declaration

- -

Declarations should be referenced at least once within all files linted

- -
    -
  • Identifier: unused_declaration
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -error -
    -include_public_and_open - -false -
    -related_usrs_to_skip - -[“s:7SwiftUI15PreviewProviderP”] -
  • -
-

Non Triggering Examples

-
let kConstant = 0
-_ = kConstant
-
-
enum Change<T> {
-  case insert(T)
-  case delete(T)
-}
-
-extension Sequence {
-  func deletes<T>() -> [T] where Element == Change<T> {
-    return compactMap { operation in
-      if case .delete(let value) = operation {
-        return value
-      } else {
-        return nil
-      }
-    }
-  }
-}
-
-let changes = [Change.insert(0), .delete(0)]
-_ = changes.deletes()
-
-
struct Item: Codable {}
-struct ResponseModel: Codable {
-    let items: [Item]
-
-    enum CodingKeys: String, CodingKey {
-        case items = "ResponseItems"
-    }
-}
-
-_ = ResponseModel(items: [Item()]).items
-
-
class ResponseModel {
-    @objc func foo() {
-    }
-}
-_ = ResponseModel()
-
-
public func foo() {}
-
-
protocol Foo {}
-
-extension Foo {
-    func bar() {}
-}
-
-struct MyStruct: Foo {}
-MyStruct().bar()
-
-
import XCTest
-class MyTests: XCTestCase {
-    func testExample() {}
-}
-
-
import XCTest
-open class BestTestCase: XCTestCase {}
-class MyTests: BestTestCase {
-    func testExample() {}
-}
-
-
    struct S {
-        var i: Int? = nil
-        func f() {
-            if let i { print(i) }
-        }
-    }
-    S().f()
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-@resultBuilder
-struct ComponentBuilder {
-  static func buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  static func buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  static func buildOptional(_ component: Component?) -> Component {
-    return .optional(component)
-  }
-
-  static func buildEither(first component: Component) -> Component {
-    return component
-  }
-
-  static func buildEither(second component: Component) -> Component {
-    return component
-  }
-
-  static func buildArray(_ components: [Component]) -> Component {
-    return .array(components)
-  }
-
-  static func buildLimitedAvailability(_ component: Component) -> Component {
-    return component
-  }
-
-  static func buildFinalResult(_ component: Component) -> Component {
-    return component
-  }
-
-  static func buildPartialBlock(first component: Component) -> Component {
-    return component
-  }
-
-  static func buildPartialBlock(accumulated component: Component, next: Component) -> Component {
-    return component
-  }
-}
-
-func acceptComponentBuilder(@ComponentBuilder _ body: () -> Component) {
-  print(body())
-}
-
-acceptComponentBuilder {
-  "hello"
-}
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBAction private func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @objc func foo() {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable private var innerPaddingWidth: Int {
-        set { self.backgroundView.innerPaddingWidth = newValue }
-        get { return self.backgroundView.innerPaddingWidth }
-    }
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet private var bar: NSObject! {
-        set { fatalError() }
-        get { fatalError() }
-    }
-
-    @IBOutlet private var baz: NSObject! {
-        willSet { print("willSet") }
-    }
-
-    @IBOutlet private var buzz: NSObject! {
-        didSet { print("didSet") }
-    }
-}
-
-

Triggering Examples

-
let ↓kConstant = 0
-
-
struct Item {}
-struct ↓ResponseModel: Codable {
-    let ↓items: [Item]
-
-    enum ↓CodingKeys: String {
-        case items = "ResponseItems"
-    }
-}
-
-
class ↓ResponseModel {
-    func ↓foo() {
-    }
-}
-
-
//
-// include_public_and_open: true
-//
-
-public func ↓foo() {}
-
-
-
protocol Foo {
-    func ↓bar1()
-}
-
-extension Foo {
-    func bar1() {}
-    func ↓bar2() {}
-}
-
-struct MyStruct: Foo {}
-_ = MyStruct()
-
-
import XCTest
-class ↓MyTests: NSObject {
-    func ↓testExample() {}
-}
-
-
enum Component {
-  case string(StaticString)
-  indirect case array([Component])
-  indirect case optional(Component?)
-}
-
-struct ComponentBuilder {
-  func ↓buildExpression(_ string: StaticString) -> Component {
-    return .string(string)
-  }
-
-  func ↓buildBlock(_ components: Component...) -> Component {
-    return .array(components)
-  }
-
-  func ↓buildIf(_ value: Component?) -> Component {
-    return .optional(value)
-  }
-
-  static func ↓buildABear(_ components: Component...) -> Component {
-    return .array(components)
-  }
-}
-
-_ = ComponentBuilder()
-
-
protocol ↓Foo {}
-extension Foo {}
-
-
class ↓C<T> {}
-extension C<Int> {}
-
-
import Cocoa
-
-@NSApplicationMain
-final class AppDelegate: NSObject, NSApplicationDelegate {
-    func ↓appWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Cocoa
-
-final class ↓AppDelegate: NSObject, NSApplicationDelegate {
-    func applicationWillFinishLaunching(_ notification: Notification) {}
-    func applicationWillBecomeActive(_ notification: Notification) {}
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBOutlet var ↓bar: NSObject!
-}
-
-
import Foundation
-
-public final class Foo: NSObject {
-    @IBInspectable var ↓bar: String!
-}
-
-
import Foundation
-
-final class Foo: NSObject {}
-final class ↓Bar {
-    var ↓foo = Foo()
-}
-
- -
-
- - -
-
- - - diff --git a/unused_enumerated.html b/unused_enumerated.html deleted file mode 100644 index 0da98bf48..000000000 --- a/unused_enumerated.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - unused_enumerated Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Enumerated

- -

When the index or the item is not used, .enumerated() can be removed.

- -
    -
  • Identifier: unused_enumerated
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
for (idx, foo) in bar.enumerated() { }
-
-
for (_, foo) in bar.enumerated().something() { }
-
-
for (_, foo) in bar.something() { }
-
-
for foo in bar.enumerated() { }
-
-
for foo in bar { }
-
-
for (idx, _) in bar.enumerated().something() { }
-
-
for (idx, _) in bar.something() { }
-
-
for idx in bar.indices { }
-
-
for (section, (event, _)) in data.enumerated() {}
-
-
list.enumerated().map { idx, elem in "\(idx): \(elem)" }
-
-
list.enumerated().map { $0 + $1 }
-
-
list.enumerated().something().map { _, elem in elem }
-
-
list.enumerated().map { ($0.offset, $0.element) }
-
-
list.enumerated().map { ($0.0, $0.1) }
-
-
list.enumerated().map {
-    $1.enumerated().forEach { print($0, $1) }
-    return $0
-}
-
-

Triggering Examples

-
for (↓_, foo) in bar.enumerated() { }
-
-
for (↓_, foo) in abc.bar.enumerated() { }
-
-
for (↓_, foo) in abc.something().enumerated() { }
-
-
for (idx, ↓_) in bar.enumerated() { }
-
-
list.enumerated().map { idx, ↓_ in idx }
-
-
list.enumerated().map { ↓_, elem in elem }
-
-
list.↓enumerated().forEach { print($0) }
-
-
list.↓enumerated().map { $1 }
-
-
list.enumerated().map {
-    $1.↓enumerated().forEach { print($1) }
-    return $0
-}
-
-
list.↓enumerated().map {
-    $1.enumerated().forEach { print($0, $1) }
-    return 1
-}
-
-
list.↓enumerated().forEach {
-    let (i, _) = $0
-}
-
- -
-
- - -
-
- - - diff --git a/unused_import.html b/unused_import.html deleted file mode 100644 index f30b2ff19..000000000 --- a/unused_import.html +++ /dev/null @@ -1,494 +0,0 @@ - - - - unused_import Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Import

- -

All imported modules should be required to make the file compile

- -
    -
  • Identifier: unused_import
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: Yes
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -require_explicit_imports - -false -
    -allowed_transitive_imports - -[] -
    -always_keep_imports - -[] -
  • -
-

Non Triggering Examples

-
import Dispatch // This is used
-dispatchMain()
-
-
@testable import Dispatch
-dispatchMain()
-
-
import Foundation
-@objc
-class A {}
-
-
import UnknownModule
-func foo(error: Swift.Error) {}
-
-
@_exported import UnknownModule
-
-
import Foundation
-let 👨‍👩‍👧‍👦 = #selector(NSArray.contains(_:))
-👨‍👩‍👧‍👦 == 👨‍👩‍👧‍👦
-
-
//
-// allowed_transitive_imports: [Foundation: ["CoreFoundation"]]
-//
-
-import Foundation
-enum E {
-    static let min: CGFloat = 44
-}
-
-
-

Triggering Examples

-
↓import Dispatch
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-
-
↓import Foundation // This is unused
-struct A {
-  static func dispatchMain() {}
-}
-A.dispatchMain()
-↓import Dispatch
-
-
-
↓import Foundation
-dispatchMain()
-
-
↓import Foundation
-// @objc
-class A {}
-
-
↓import Foundation
-import UnknownModule
-func foo(error: Swift.Error) {}
-
-
↓import Swift
-↓import SwiftShims
-func foo(error: Swift.Error) {}
-
- -
-
- - -
-
- - - diff --git a/unused_optional_binding.html b/unused_optional_binding.html deleted file mode 100644 index ce54a1d28..000000000 --- a/unused_optional_binding.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - unused_optional_binding Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Optional Binding

- -

Prefer != nil over let _ =

- -
    -
  • Identifier: unused_optional_binding
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -ignore_optional_try - -false -
  • -
-

Non Triggering Examples

-
if let bar = Foo.optionalValue {}
-
-
if let (_, second) = getOptionalTuple() {}
-
-
if let (_, asd, _) = getOptionalTuple(), let bar = Foo.optionalValue {}
-
-
if foo() { let _ = bar() }
-
-
if foo() { _ = bar() }
-
-
if case .some(_) = self {}
-
-
if let point = state.find({ _ in true }) {}
-
-

Triggering Examples

-
if let ↓_ = Foo.optionalValue {}
-
-
if let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {}
-
-
guard let a = Foo.optionalValue, let ↓_ = Foo.optionalValue2 {}
-
-
if let (first, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {}
-
-
if let (first, _) = getOptionalTuple(), let ↓_ = Foo.optionalValue {}
-
-
if let (_, second) = getOptionalTuple(), let ↓_ = Foo.optionalValue {}
-
-
if let ↓(_, _, _) = getOptionalTuple(), let bar = Foo.optionalValue {}
-
-
func foo() { if let ↓_ = bar {} }
-
- -
-
- - -
-
- - - diff --git a/unused_parameter.html b/unused_parameter.html deleted file mode 100644 index 93ea9dc21..000000000 --- a/unused_parameter.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - unused_parameter Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Parameter

- -

Other than unused local variable declarations, unused function/initializer/subscript parameters are not marked by the Swift compiler. Since unused parameters are code smells, they should either be removed or replaced/shadowed by a wildcard ‘_’ to indicate that they are being deliberately disregarded.

- -
    -
  • Identifier: unused_parameter
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func f(a: Int) {
-    _ = a
-}
-
-
func f(case: Int) {
-    _ = `case`
-}
-
-
func f(a _: Int) {}
-
-
func f(_: Int) {}
-
-
func f(a: Int, b c: String) {
-    func g() {
-        _ = a
-        _ = c
-    }
-}
-
-
func f(a: Int, c: Int) -> Int {
-    struct S {
-        let b = 1
-        func f(a: Int, b: Int = 2) -> Int { a + b }
-    }
-    return a + c
-}
-
-
func f(a: Int?) {
-    if let a {}
-}
-
-
func f(a: Int) {
-    let a = a
-    return a
-}
-
-
func f(`operator`: Int) -> Int { `operator` }
-
-

Triggering Examples

-
func f(↓a: Int) {}
-
-
func f(↓a: Int, b ↓c: String) {}
-
-
func f(↓a: Int, b ↓c: String) {
-    func g(a: Int, ↓b: Double) {
-        _ = a
-    }
-}
-
-
struct S {
-    let a: Int
-
-    init(a: Int, ↓b: Int) {
-        func f(↓a: Int, b: Int) -> Int { b }
-        self.a = f(a: a, b: 0)
-    }
-}
-
-
struct S {
-    subscript(a: Int, ↓b: Int) {
-        func f(↓a: Int, b: Int) -> Int { b }
-        return f(a: a, b: 0)
-    }
-}
-
-
func f(↓a: Int, ↓b: Int, c: Int) -> Int {
-    struct S {
-        let b = 1
-        func f(a: Int, ↓c: Int = 2) -> Int { a + b }
-    }
-    return S().f(a: c)
-}
-
-
func f(↓a: Int, c: String) {
-    let a = 1
-    return a + c
-}
-
- -
-
- - -
-
- - - diff --git a/unused_setter_value.html b/unused_setter_value.html deleted file mode 100644 index dda589e9a..000000000 --- a/unused_setter_value.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - unused_setter_value Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Unused Setter Value

- -

Setter value is not used

- -
    -
  • Identifier: unused_setter_value
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set {
-        Persister.shared.aValue = newValue
-    }
-}
-
-
var aValue: String {
-    set {
-        Persister.shared.aValue = newValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    set(value) {
-        Persister.shared.aValue = value
-    }
-}
-
-
override var aValue: String {
- get {
-     return Persister.shared.aValue
- }
- set { }
-}
-
-

Triggering Examples

-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-    get {
-        return Persister.shared.aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        let newValue = Persister.shared.aValue
-        return newValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set(value) {
-        Persister.shared.aValue = aValue
-    }
-}
-
-
override var aValue: String {
-    get {
-        return Persister.shared.aValue
-    }
-    ↓set {
-        Persister.shared.aValue = aValue
-    }
-}
-
- -
-
- - -
-
- - - diff --git a/valid_ibinspectable.html b/valid_ibinspectable.html deleted file mode 100644 index 660efc298..000000000 --- a/valid_ibinspectable.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - valid_ibinspectable Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Valid IBInspectable

- -

@IBInspectable should be applied to variables only, have its type explicit and be of a supported type

- -
    -
  • Identifier: valid_ibinspectable
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-  @IBInspectable private var x: Int
-}
-
-
class Foo {
-  @IBInspectable private var x: String?
-}
-
-
class Foo {
-  @IBInspectable private var x: String!
-}
-
-
class Foo {
-  @IBInspectable private var count: Int = 0
-}
-
-
class Foo {
-  private var notInspectable = 0
-}
-
-
class Foo {
-  private let notInspectable: Int
-}
-
-
class Foo {
-  private let notInspectable: UInt8
-}
-
-
extension Foo {
-    @IBInspectable var color: UIColor {
-        set {
-            self.bar.textColor = newValue
-        }
-
-        get {
-            return self.bar.textColor
-        }
-    }
-}
-
-
class Foo {
-    @IBInspectable var borderColor: UIColor? = nil {
-        didSet {
-            updateAppearance()
-        }
-    }
-}
-
-

Triggering Examples

-
class Foo {
-  @IBInspectable private ↓let count: Int
-}
-
-
class Foo {
-  @IBInspectable private ↓var insets: UIEdgeInsets
-}
-
-
class Foo {
-  @IBInspectable private ↓var count = 0
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int?
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Int!
-}
-
-
class Foo {
-  @IBInspectable private ↓var count: Optional<Int>
-}
-
-
class Foo {
-  @IBInspectable private ↓var x: Optional<String>
-}
-
- -
-
- - -
-
- - - diff --git a/vertical_parameter_alignment.html b/vertical_parameter_alignment.html deleted file mode 100644 index fa24d6594..000000000 --- a/vertical_parameter_alignment.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - vertical_parameter_alignment Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment

- -

Function parameters should be aligned vertically if they’re in multiple lines in a declaration

- -
    -
  • Identifier: vertical_parameter_alignment
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func foo(bar: Int)
-
-
func foo(bar: Int) -> String
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                      dictionary: SourceKittenDictionary)
-                      -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary) -> [StyleViolation]
-
-
func validateFunction(
-   _ file: SwiftLintFile, kind: SwiftDeclarationKind,
-   dictionary: SourceKittenDictionary
-) -> [StyleViolation]
-
-
func regex(_ pattern: String,
-           options: NSRegularExpression.Options = [.anchorsMatchLines,
-                                                   .dotMatchesLineSeparators]) -> NSRegularExpression
-
-
func foo(a: Void,
-         b: [String: String] =
-         [:]) {
-}
-
-
func foo(data: (size: CGSize,
-                identifier: String)) {}
-
-
func foo(data: Data,
-         @ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
-
class A {
-    init(bar: Int)
-}
-
-
class A {
-    init(foo: Int,
-         bar: String)
-}
-
-

Triggering Examples

-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile, kind: SwiftDeclarationKind,
-                       ↓dictionary: SourceKittenDictionary) { }
-
-
func validateFunction(_ file: SwiftLintFile,
-                  ↓kind: SwiftDeclarationKind,
-                  ↓dictionary: SourceKittenDictionary) { }
-
-
func foo(data: Data,
-            ↓@ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-
-
class A {
-    init(data: Data,
-                ↓@ViewBuilder content: @escaping (Data.Element.IdentifiedValue) -> Content) {}
-}
-
- -
-
- - -
-
- - - diff --git a/vertical_parameter_alignment_on_call.html b/vertical_parameter_alignment_on_call.html deleted file mode 100644 index 8596f7c34..000000000 --- a/vertical_parameter_alignment_on_call.html +++ /dev/null @@ -1,500 +0,0 @@ - - - - vertical_parameter_alignment_on_call Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Parameter Alignment on Call

- -

Function parameters should be aligned vertically if they’re in multiple lines in a method call

- -
    -
  • Identifier: vertical_parameter_alignment_on_call
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
foo(param1: 1, param2: bar
-    param3: false, param4: true)
-
-
foo(param1: 1, param2: bar)
-
-
foo(param1: 1, param2: bar
-    param3: false,
-    param4: true)
-
-
foo(
-   param1: 1
-) { _ in }
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-}, completion: { _ in
-    self.hideLoading()
-})
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-},
-completion: { _ in
-    self.hideLoading()
-})
-
-
UIView.animate(withDuration: 0.4, animations: {
-    blurredImageView.alpha = 1
-} { _ in
-    self.hideLoading()
-}
-
-
foo(param1: 1, param2: { _ in },
-    param3: false, param4: true)
-
-
foo({ _ in
-       bar()
-   },
-   completion: { _ in
-       baz()
-   }
-)
-
-
foo(param1: 1, param2: [
-   0,
-   1
-], param3: 0)
-
-
myFunc(foo: 0,
-       bar: baz == 0)
-
-
UIViewPropertyAnimator.runningPropertyAnimator(
-    withDuration: 2.0,
-    delay: 0.0,
-    options: [.curveEaseIn]
-) {
-    // animations
-} completion: { _ in
-    // completion
-}
-
-

Triggering Examples

-
foo(param1: 1, param2: bar,
-                ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar,
- ↓param3: false, param4: true)
-
-
foo(param1: 1, param2: bar,
-       ↓param3: false,
-       ↓param4: true)
-
-
foo(param1: 1,
-       ↓param2: { _ in })
-
-
foo(param1: 1,
-    param2: { _ in
-}, param3: 2,
- ↓param4: 0)
-
-
foo(param1: 1, param2: { _ in },
-       ↓param3: false, param4: true)
-
-
myFunc(foo: 0,
-        ↓bar: baz == 0)
-
-
myFunc(foo: 0, bar:
-        baz == 0, ↓baz: true)
-
- -
-
- - -
-
- - - diff --git a/vertical_whitespace.html b/vertical_whitespace.html deleted file mode 100644 index 523808c1f..000000000 --- a/vertical_whitespace.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - vertical_whitespace Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace

- -

Limit vertical whitespace to a single empty line.

- -
    -
  • Identifier: vertical_whitespace
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -max_empty_lines - -1 -
  • -
-

Non Triggering Examples

-
let abc = 0
-
-
-
let abc = 0
-
-
-
-
/* bcs 
-
-
-
-*/
-
-
// bca 
-
-
-
-

Triggering Examples

-
let aaaa = 0
-
-
-
-
-
struct AAAA {}
-
-
-
-
-
-
class BBBB {}
-
-
-
-
- -
-
- - -
-
- - - diff --git a/vertical_whitespace_between_cases.html b/vertical_whitespace_between_cases.html deleted file mode 100644 index 343dc9ce3..000000000 --- a/vertical_whitespace_between_cases.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - vertical_whitespace_between_cases Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace Between Cases

- -

Include a single empty line between switch cases

- -
    -
  • Identifier: vertical_whitespace_between_cases
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
switch x {
-
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-
-}
-
-
switch x {
-case .valid:
-    print("multiple ...")
-    print("... lines")
-
-case .invalid:
-    print("multiple ...")
-    print("... lines")
-}
-
-
switch x {
-case .valid:
-    print("x is valid")
-
-case .invalid:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    print("x is low")
-
-case 5..<10:
-    print("x is high")
-
-default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    print("x is valid")
-
-default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    return "x is valid"
-
-default:
-    return "x is invalid"
-}
-
-
switch x {
-case 0..<5: print("x is low")
-case 5..<10: print("x is high")
-default: print("x is invalid")
-}
-
-
switch x {    
-case 1:    
-    print("one")    
-
-default:    
-    print("not one")    
-}    
-
-

Triggering Examples

-
switch x {
-case .valid:
-    print("multiple ...")
-    print("... lines")
-↓case .invalid:
-    print("multiple ...")
-    print("... lines")
-}
-
-
switch x {
-case .valid:
-    print("x is valid")
-↓case .invalid:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    print("x is valid")
-↓default:
-    print("x is invalid")
-}
-
-
switch x {
-case 0..<5:
-    return "x is valid"
-↓default:
-    return "x is invalid"
-}
-
- -
-
- - -
-
- - - diff --git a/vertical_whitespace_closing_braces.html b/vertical_whitespace_closing_braces.html deleted file mode 100644 index 763cfb123..000000000 --- a/vertical_whitespace_closing_braces.html +++ /dev/null @@ -1,550 +0,0 @@ - - - - vertical_whitespace_closing_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace before Closing Braces

- -

Don’t include vertical whitespace (empty line) before closing braces

- -
    -
  • Identifier: vertical_whitespace_closing_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -only_enforce_before_trivial_lines - -false -
  • -
-

Non Triggering Examples

-
[
-1,
-2,
-3
-]
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
do {
-  print("x is 5")
-}
-
-
foo(
-    x: 5,
-    y:6
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([
-  1
-])
-
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([foo {
-  var sum = 0
-  for i in 1...5 { sum += i }
-  return sum
-
-}, foo {
-  var mul = 1
-  for i in 1...5 { mul *= i }
-  return mul
-}])
-
-
-
[1, 2].map { $0 }.filter { true }
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-

Triggering Examples

-
[
-1,
-2,
-3
-↓
-]
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-
-}
-
-
do {
-  print("x is 5")
-↓
-}
-
-
foo(
-    x: 5,
-    y:6
-↓
-)
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-↓
-}
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([
-  1
-↓
-])
-
-
-
//
-// only_enforce_before_trivial_lines: true
-//
-
-print([foo {
-  var sum = 0
-  for i in 1...5 { sum += i }
-  return sum
-
-}, foo {
-  var mul = 1
-  for i in 1...5 { mul *= i }
-  return mul
-↓
-}])
-
-
- -
-
- - -
-
- - - diff --git a/vertical_whitespace_opening_braces.html b/vertical_whitespace_opening_braces.html deleted file mode 100644 index 22e333d33..000000000 --- a/vertical_whitespace_opening_braces.html +++ /dev/null @@ -1,526 +0,0 @@ - - - - vertical_whitespace_opening_braces Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Vertical Whitespace after Opening Braces

- -

Don’t include vertical whitespace (empty line) after opening braces

- -
    -
  • Identifier: vertical_whitespace_opening_braces
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
/*
-    class X {
-
-        let x = 5
-
-    }
-*/
-
-
// [1, 2].map { $0 }.filter { num in true }
-
-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-    guard let img = image else { return }
-}
-
-
[
-1,
-2,
-3
-]
-
-
[1, 2].map { $0 }.filter { num in true }
-
-
[1, 2].map { $0 }.foo()
-
-
class X {
-  struct Y {
-    class Z {
-    }
-  }
-}
-
-
foo(
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
if x == 5 {
-  print("x is 5")
-}
-
-
struct MyStruct {
-  let x = 5
-}
-
-

Triggering Examples

-
KingfisherManager.shared.retrieveImage(with: url, options: nil, progressBlock: nil) { image, _, _, _ in
-↓
-    guard let img = image else { return }
-}
-
-
[
-↓
-1,
-2,
-3
-]
-
-
class X {
-  struct Y {
-↓
-    class Z {
-    }
-  }
-}
-
-
foo(
-↓
-  x: 5,
-  y:6
-)
-
-
foo({ }) { _ in
-↓
-  self.dismiss(animated: false, completion: {
-  })
-}
-
-
func foo() {
-↓
-  run(5) { x in
-    print(x)
-  }
-}
-
-
if x == 5 {
-↓
-
-  print("x is 5")
-}
-
-
if x == 5 {
-↓
-  print("x is 5")
-}
-
-
struct MyStruct {
-↓
-  let x = 5
-}
-
- -
-
- - -
-
- - - diff --git a/void_function_in_ternary.html b/void_function_in_ternary.html deleted file mode 100644 index 3ccfb2541..000000000 --- a/void_function_in_ternary.html +++ /dev/null @@ -1,491 +0,0 @@ - - - - void_function_in_ternary Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Void Function in Ternary

- -

Using ternary to call Void functions should be avoided

- -
    -
  • Identifier: void_function_in_ternary
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.1.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let result = success ? foo() : bar()
-
-
if success {
-    askQuestion()
-} else {
-    exit()
-}
-
-
var price: Double {
-    return hasDiscount ? calculatePriceWithDiscount() : calculateRegularPrice()
-}
-
-
foo(x == 2 ? a() : b())
-
-
chevronView.image = collapsed ? .icon(.mediumChevronDown) : .icon(.mediumChevronUp)
-
-
array.map { elem in
-    elem.isEmpty() ? .emptyValue() : .number(elem)
-}
-
-
func compute(data: [Int]) -> Int {
-    data.isEmpty ? 0 : expensiveComputation(data)
-}
-
-
var value: Int {
-    mode == .fast ? fastComputation() : expensiveComputation()
-}
-
-
var value: Int {
-    get {
-        mode == .fast ? fastComputation() : expensiveComputation()
-    }
-}
-
-
subscript(index: Int) -> Int {
-    get {
-        index == 0 ? defaultValue() : compute(index)
-    }
-
-
subscript(index: Int) -> Int {
-    index == 0 ? defaultValue() : compute(index)
-
-

Triggering Examples

-
success ↓? askQuestion() : exit()
-
-
perform { elem in
-    elem.isEmpty() ↓? .emptyValue() : .number(elem)
-    return 1
-}
-
-
DispatchQueue.main.async {
-    self.sectionViewModels[section].collapsed.toggle()
-    self.sectionViewModels[section].collapsed
-        ↓? self.tableView.deleteRows(at: [IndexPath(row: 0, section: section)], with: .automatic)
-        : self.tableView.insertRows(at: [IndexPath(row: 0, section: section)], with: .automatic)
-    self.tableView.scrollToRow(at: IndexPath(row: NSNotFound, section: section), at: .top, animated: true)
-}
-
-
subscript(index: Int) -> Int {
-    index == 0 ↓? something() : somethingElse(index)
-    return index
-
-
var value: Int {
-    mode == .fast ↓? something() : somethingElse()
-    return 0
-}
-
-
var value: Int {
-    get {
-        mode == .fast ↓? something() : somethingElse()
-        return 0
-    }
-}
-
-
subscript(index: Int) -> Int {
-    get {
-        index == 0 ↓? something() : somethingElse(index)
-        return index
-    }
-
- -
-
- - -
-
- - - diff --git a/void_return.html b/void_return.html deleted file mode 100644 index b900f03da..000000000 --- a/void_return.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - void_return Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Void Return

- -

Prefer -> Void over -> ()

- -
    -
  • Identifier: void_return
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: Yes
  • -
  • Kind: style
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
let abc: () -> Void = {}
-
-
let abc: () -> (VoidVoid) = {}
-
-
func foo(completion: () -> Void)
-
-
let foo: (ConfigurationTests) -> () throws -> Void
-
-
let foo: (ConfigurationTests) ->   () throws -> Void
-
-
let foo: (ConfigurationTests) ->() throws -> Void
-
-
let foo: (ConfigurationTests) -> () -> Void
-
-
let foo: () -> () async -> Void
-
-
let foo: () -> () async throws -> Void
-
-
let foo: () -> () async -> Void
-
-
func foo() -> () async throws -> Void {}
-
-
func foo() async throws -> () async -> Void { return {} }
-
-
func foo() -> () async -> Int { 1 }
-
-

Triggering Examples

-
let abc: () -> ↓() = {}
-
-
let abc: () -> ↓(Void) = {}
-
-
let abc: () -> ↓(   Void ) = {}
-
-
func foo(completion: () -> ↓())
-
-
func foo(completion: () -> ↓(   ))
-
-
func foo(completion: () -> ↓(Void))
-
-
let foo: (ConfigurationTests) -> () throws -> ↓()
-
-
func foo() async -> ↓()
-
-
func foo() async throws -> ↓()
-
- -
-
- - -
-
- - - diff --git a/weak_delegate.html b/weak_delegate.html deleted file mode 100644 index 4c85f6e06..000000000 --- a/weak_delegate.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - weak_delegate Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Weak Delegate

- -

Delegates should be weak to avoid reference cycles

- -
    -
  • Identifier: weak_delegate
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
class Foo {
-  weak var delegate: SomeProtocol?
-}
-
-
class Foo {
-  weak var someDelegate: SomeDelegateProtocol?
-}
-
-
class Foo {
-  weak var delegateScroll: ScrollDelegate?
-}
-
-
class Foo {
-  var scrollHandler: ScrollDelegate?
-}
-
-
func foo() {
-  var delegate: SomeDelegate
-}
-
-
class Foo {
-  var delegateNotified: Bool?
-}
-
-
protocol P {
- var delegate: AnyObject? { get set }
-}
-
-
class Foo {
- protocol P {
- var delegate: AnyObject? { get set }
-}
-}
-
-
class Foo {
- var computedDelegate: ComputedDelegate {
- return bar() 
-} 
-}
-
-
class Foo {
-    var computedDelegate: ComputedDelegate {
-        get {
-            return bar()
-        }
-   }
-
-
struct Foo {
- @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 
-}
-
-
struct Foo {
- @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate 
-}
-
-
struct Foo {
- @WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate 
-}
-
-
class Foo {
-    func makeDelegate() -> SomeDelegate {
-        let delegate = SomeDelegate()
-        return delegate
-    }
-}
-
-

Triggering Examples

-
class Foo {
-  ↓var delegate: SomeProtocol?
-}
-
-
class Foo {
-  ↓var scrollDelegate: ScrollDelegate?
-}
-
-
class Foo {
-    ↓var delegate: SomeProtocol? {
-        didSet {
-            print("Updated delegate")
-        }
-   }
-
- -
-
- - -
-
- - - diff --git a/xct_specific_matcher.html b/xct_specific_matcher.html deleted file mode 100644 index 2dbffe992..000000000 --- a/xct_specific_matcher.html +++ /dev/null @@ -1,600 +0,0 @@ - - - - xct_specific_matcher Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTest Specific Matcher

- -

Prefer specific XCTest matchers over XCTAssertEqual and XCTAssertNotEqual.

- -
    -
  • Identifier: xct_specific_matcher
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - - - - - -
    KeyValue
    -severity - -warning -
    -matchers - -[one-argument-asserts, two-argument-asserts] -
  • -
-

Non Triggering Examples

-
XCTAssert(foo
-
-
XCTAssertFalse(foo)
-
-
XCTAssertTrue(foo)
-
-
XCTAssertNil(foo)
-
-
XCTAssertNotNil(foo)
-
-
XCTAssertEqual(foo, 2)
-
-
XCTAssertNotEqual(foo, "false")
-
-
XCTAssertEqual(foo, [1, 2, 3, true])
-
-
XCTAssertEqual(foo, [1, 2, 3, false])
-
-
XCTAssertEqual(foo, [1, 2, 3, nil])
-
-
XCTAssertEqual(foo, [true, nil, true, nil])
-
-
XCTAssertEqual([1, 2, 3, true], foo)
-
-
XCTAssertEqual([1, 2, 3, false], foo)
-
-
XCTAssertEqual([1, 2, 3, nil], foo)
-
-
XCTAssertEqual([true, nil, true, nil], foo)
-
-
XCTAssertEqual(2, foo)
-
-
XCTAssertNotEqual("false"), foo)
-
-
XCTAssertEqual(false, foo?.bar)
-
-
XCTAssertEqual(true, foo?.bar)
-
-
XCTAssert(    foo  )
-
-
XCTAssertFalse(  foo  )
-
-
XCTAssertTrue(  foo  )
-
-
XCTAssertNil(  foo  )
-
-
XCTAssertNotNil(  foo  )
-
-
XCTAssertEqual(  foo  , 2  )
-
-
XCTAssertNotEqual(  foo, "false")
-
-
XCTAssertEqual(foo?.bar, false)
-
-
XCTAssertEqual(foo?.bar, true)
-
-
XCTAssertNil(foo?.bar)
-
-
XCTAssertNotNil(foo?.bar)
-
-
XCTAssertEqual(foo?.bar, 2)
-
-
XCTAssertNotEqual(foo?.bar, "false")
-
-
XCTAssertEqual(foo?.bar, toto())
-
-
XCTAssertEqual(foo?.bar, .toto(.zoo))
-
-
XCTAssertEqual(toto(), foo?.bar)
-
-
XCTAssertEqual(.toto(.zoo), foo?.bar)
-
-
XCTAssert(foo.self == bar)
-
-
XCTAssertTrue(type(of: foo) != Int.self)
-
-
XCTAssertTrue(a == (1, 3, 5)
-
-

Triggering Examples

-
↓XCTAssertEqual(foo, true)
-
-
↓XCTAssertEqual(foo, false)
-
-
↓XCTAssertEqual(foo, nil)
-
-
↓XCTAssertNotEqual(foo, true)
-
-
↓XCTAssertNotEqual(foo, false)
-
-
↓XCTAssertNotEqual(foo, nil)
-
-
↓XCTAssertEqual(true, foo)
-
-
↓XCTAssertEqual(false, foo)
-
-
↓XCTAssertEqual(nil, foo)
-
-
↓XCTAssertNotEqual(true, foo)
-
-
↓XCTAssertNotEqual(false, foo)
-
-
↓XCTAssertNotEqual(nil, foo)
-
-
↓XCTAssertEqual(foo, true, "toto")
-
-
↓XCTAssertEqual(foo, false, "toto")
-
-
↓XCTAssertEqual(foo, nil, "toto")
-
-
↓XCTAssertNotEqual(foo, true, "toto")
-
-
↓XCTAssertNotEqual(foo, false, "toto")
-
-
↓XCTAssertNotEqual(foo, nil, "toto")
-
-
↓XCTAssertEqual(true, foo, "toto")
-
-
↓XCTAssertEqual(false, foo, "toto")
-
-
↓XCTAssertEqual(nil, foo, "toto")
-
-
↓XCTAssertNotEqual(true, foo, "toto")
-
-
↓XCTAssertNotEqual(false, foo, "toto")
-
-
↓XCTAssertNotEqual(nil, foo, "toto")
-
-
↓XCTAssertEqual(foo,true)
-
-
↓XCTAssertEqual( foo , false )
-
-
↓XCTAssertEqual(  foo  ,  nil  )
-
-
↓XCTAssertEqual(true, [1, 2, 3, true].hasNumbers())
-
-
↓XCTAssertEqual([1, 2, 3, true].hasNumbers(), true)
-
-
↓XCTAssertEqual(foo?.bar, nil)
-
-
↓XCTAssertNotEqual(foo?.bar, nil)
-
-
↓XCTAssertEqual(nil, true)
-
-
↓XCTAssertEqual(nil, false)
-
-
↓XCTAssertEqual(true, nil)
-
-
↓XCTAssertEqual(false, nil)
-
-
↓XCTAssertEqual(nil, nil)
-
-
↓XCTAssertEqual(true, true)
-
-
↓XCTAssertEqual(false, false)
-
-
↓XCTAssert(foo == bar)
-
-
↓XCTAssertTrue(   foo  ==   bar  )
-
-
↓XCTAssertFalse(1 == foo)
-
-
↓XCTAssert(foo == bar, "toto")
-
-
↓XCTAssert(foo != bar)
-
-
↓XCTAssertTrue(   foo  !=   bar  )
-
-
↓XCTAssertFalse(1 != foo)
-
-
↓XCTAssert(foo != bar, "toto")
-
-
↓XCTAssert(  foo   ==  nil)
-
-
↓XCTAssert(nil == foo
-
-
↓XCTAssertTrue(  foo   !=  nil)
-
-
↓XCTAssertFalse(nil != foo
-
-
↓XCTAssert(foo == nil, "toto")
-
- -
-
- - -
-
- - - diff --git a/xctfail_message.html b/xctfail_message.html deleted file mode 100644 index d77f50e09..000000000 --- a/xctfail_message.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - xctfail_message Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

XCTFail Message

- -

An XCTFail call should include a description of the assertion

- -
    -
  • Identifier: xctfail_message
  • -
  • Enabled by default: Yes
  • -
  • Supports autocorrection: No
  • -
  • Kind: idiomatic
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
func testFoo() {
-  XCTFail("bar")
-}
-
-
func testFoo() {
-  XCTFail(bar)
-}
-
-

Triggering Examples

-
func testFoo() {
-  ↓XCTFail()
-}
-
-
func testFoo() {
-  ↓XCTFail("")
-}
-
- -
-
- - -
-
- - - diff --git a/yoda_condition.html b/yoda_condition.html deleted file mode 100644 index a2b0187fa..000000000 --- a/yoda_condition.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - yoda_condition Reference - - - - - - - - - - - - - - - -
-

- - SwiftLintCore 0.57.0 Docs - - (100% documented) -

- -
-
- -
-
- -

- - GitHub - View on GitHub - -

- -

- - Dash - Install in Dash - -

-
- - - -
- -
- -
-
- -

Yoda Condition

- -

The constant literal should be placed on the right-hand side of the comparison operator

- -
    -
  • Identifier: yoda_condition
  • -
  • Enabled by default: No
  • -
  • Supports autocorrection: No
  • -
  • Kind: lint
  • -
  • Analyzer rule: No
  • -
  • Minimum Swift compiler version: 5.0.0
  • -
  • Default configuration: - - - - - - - - - - -
    KeyValue
    -severity - -warning -
  • -
-

Non Triggering Examples

-
if foo == 42 {}
-
-
if foo <= 42.42 {}
-
-
guard foo >= 42 else { return }
-
-
guard foo != "str str" else { return }
-
-
while foo < 10 { }
-
-
while foo > 1 { }
-
-
while foo + 1 == 2 {}
-
-
if optionalValue?.property ?? 0 == 2 {}
-
-
if foo == nil {}
-
-
if flags & 1 == 1 {}
-
-

Triggering Examples

-
if ↓42 == foo {}
-
-
if ↓42.42 >= foo {}
-
-
guard ↓42 <= foo else { return }
-
-
guard ↓"str str" != foo else { return }
-
-
while ↓10 > foo { }
-
-
while ↓1 < foo { }
-
-
if ↓nil == foo {}
-
-
while ↓1 > i + 5 {}
-
-
if ↓200 <= i && i <= 299 || ↓600 <= i {}
-
- -
-
- - -
-
- - -

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