diff --git a/.swiftlint.yml b/.swiftlint.yml new file mode 100644 index 0000000..1c96af2 --- /dev/null +++ b/.swiftlint.yml @@ -0,0 +1,203 @@ +# Folders to exclude from linting +excluded: + - Carthage + - go + - Pods + +# Active rules +whitelist_rules: + - anyobject_protocol + - array_init +# - attributes + - block_based_kvo +# - class_delegate_protocol + - closing_brace + - closure_body_length + - closure_end_indentation +# - closure_parameter_position + - closure_spacing + - collection_alignment + - colon + - comma + - compiler_protocol_init +# - conditional_returns_on_newline + - contains_over_filter_count + - contains_over_filter_is_empty +# - contains_over_first_not_nil + - control_statement +# - convenience_type + - custom_rules +# - cyclomatic_complexity + - deployment_target + - discarded_notification_center_observer + - discouraged_direct_init +# - discouraged_object_literal + - discouraged_optional_boolean +# - discouraged_optional_collection + - duplicate_enum_cases + - duplicate_imports + - dynamic_inline + - empty_collection_literal +# - empty_count + - empty_enum_arguments + - empty_parameters + - empty_parentheses_with_trailing_closure +# - empty_string +# - empty_xctest_method + - enum_case_associated_values_count + - expiring_todo +# - explicit_acl +# - explicit_enum_raw_value + - explicit_init + - explicit_self +# - explicit_top_level_acl +# - explicit_type_interface +# - extension_access_modifier + - fallthrough + - fatal_error_message +# - file_header +# - file_length +# - file_name + - file_name_no_space +# - file_types_order + - first_where + - flatmap_over_map_reduce + - for_where +# - force_cast +# - force_try +# - force_unwrapping +# - function_body_length +# - function_default_parameter_at_end +# - function_parameter_count + - generic_type_name + - identical_operands +# - identifier_name + - implicit_getter +# - implicit_return +# - implicitly_unwrapped_optional +# - indentation_width + - inert_defer + - is_disjoint +# - joined_default_parameter + - large_tuple + - last_where + - leading_whitespace + - legacy_cggeometry_functions + - legacy_constant + - legacy_constructor + - legacy_hashing +# - legacy_multiple + - legacy_nsgeometry_functions + - legacy_random +# - let_var_whitespace +# - line_length + - literal_expression_end_indentation +# - lower_acl_than_parent + - mark +# - missing_docs + - modifier_order + - multiline_arguments +# - multiline_arguments_brackets +# - multiline_function_chains +# - multiline_literal_brackets +# - multiline_parameters +# - multiline_parameters_brackets +# - multiple_closures_with_trailing_closure +# - nesting + - nimble_operator +# - no_extension_access_modifier + - no_fallthrough_only +# - no_grouping_extension + - no_space_in_method_call + - notification_center_detachment +# - nslocalizedstring_key +# - nslocalizedstring_require_bundle + - nsobject_prefer_isequal +# - number_separator + - object_literal + - opening_brace + - operator_usage_whitespace + - operator_whitespace + - optional_enum_case_matching + - orphaned_doc_comment +# - overridden_super_call + - override_in_extension + - pattern_matching_keywords + - prefer_self_type_over_type_of_self +# - prefixed_toplevel_constant +# - private_action +# - private_outlet + - private_over_fileprivate + - private_unit_test +# - prohibited_interface_builder +# - prohibited_super_call + - protocol_property_accessors_order + - quick_discouraged_call + - quick_discouraged_focused_test + - quick_discouraged_pending_test + - raw_value_for_camel_cased_codable_enum + - reduce_boolean + - reduce_into + - redundant_discardable_let + - redundant_nil_coalescing + - redundant_objc_attribute + - redundant_optional_initialization + - redundant_set_access_control + - redundant_string_enum_value +# - redundant_type_annotation + - redundant_void_return +# - required_deinit + - required_enum_case + - return_arrow_whitespace + - shorthand_operator + - single_test_class + - sorted_first_last +# - sorted_imports + - statement_position +# - static_operator +# - strict_fileprivate + - strong_iboutlet + - superfluous_disable_command + - switch_case_alignment +# - switch_case_on_newline + - syntactic_sugar + - todo +# - toggle_bool +# - trailing_closure +# - trailing_comma + - trailing_newline + - trailing_semicolon + - trailing_whitespace +# - type_body_length +# - type_contents_order +# - type_name + - unavailable_function + - unneeded_break_in_switch +# - unneeded_parentheses_in_closure_argument +# - unowned_variable_capture + - untyped_error_in_catch + - unused_capture_list + - unused_closure_parameter + - unused_control_flow_label + - unused_declaration + - unused_enumerated + - unused_import +# - unused_optional_binding + - unused_setter_value + - valid_ibinspectable + - vertical_parameter_alignment + - vertical_parameter_alignment_on_call + - vertical_whitespace +# - vertical_whitespace_between_cases +# - vertical_whitespace_closing_braces + - vertical_whitespace_opening_braces + - void_return +# - weak_delegate + - xct_specific_matcher + - xctfail_message + - yoda_condition + +# Configuration for specific rules +closure_body_length: + warning: 40 + error: 60 diff --git a/.travis.yml b/.travis.yml index e21130c..0a1ed09 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ addons: - gnupg2 - pass - swiftformat + - swiftlint before_install: - echo -e "machine github.com\n login $GITHUB_ACCESS_TOKEN" >> ~/.netrc install: diff --git a/pass.xcodeproj/project.pbxproj b/pass.xcodeproj/project.pbxproj index 7bf5f35..8a65261 100644 --- a/pass.xcodeproj/project.pbxproj +++ b/pass.xcodeproj/project.pbxproj @@ -1081,6 +1081,7 @@ A26075921EEC6F34005DB03E /* Embed Frameworks */, 9AF6A4F532EB900EE22C80EA /* [CP] Embed Pods Frameworks */, 3005F34F24A9143C000519B5 /* ShellScript */, + 308800C124EB0D3600E87ED3 /* ShellScript */, ); buildRules = ( ); @@ -1339,6 +1340,23 @@ shellPath = /bin/sh; shellScript = "SWIFTFORMAT_VERSION=\"0.45.*\"\n\nif which swiftformat > /dev/null; then\n if [[ \"$(swiftformat --version)\" == $SWIFTFORMAT_VERSION ]]; then\n swiftformat .\n else\n echo \"Failure: SwiftFormat $SWIFTFORMAT_VERSION is required. Install it or update the build script to use a newer version.\"\n exit 1\n fi\nelse\n echo \"Failure: SwiftFormat not installed. Get it via 'brew install swiftformat'.\"\n exit 2\nfi\n"; }; + 308800C124EB0D3600E87ED3 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "SWIFTLINT_VERSION=\"0.39.*\"\n\nif which swiftlint > /dev/null; then\n if [[ \"$(swiftlint version)\" == $SWIFTLINT_VERSION ]]; then\n swiftlint\n else\n echo \"Failure: SwiftLint $SWIFTLINT_VERSION is required. Install it or update the build script to use a newer version.\"\n exit 1\n fi\nelse\n echo \"Failure: SwiftLint not installed. Get it via 'brew install swiftlint'.\"\n exit 2\nfi\n"; + }; 3EFC287772C1D2B2762FAC45 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647;