Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Invalid rule identifier with nested configs and custom rules on SwiftLint 0.42.0 #3472

Closed
2 tasks done
marcelofabri opened this issue Dec 18, 2020 · 5 comments
Closed
2 tasks done
Assignees
Labels
bug Unexpected and reproducible misbehavior.

Comments

@marcelofabri
Copy link
Collaborator

New Issue Checklist

Describe the bug

When using custom rules + nested configs, SwiftLint is not recognizing the custom rule identifier if it's referenced in disabled_rules.

Interestingly, it's actually disabling the rule.

Complete output when running SwiftLint, including the stack trace and command used

SwiftLint 0.42

$ swiftlint 
Linting Swift files in current working directory
warning: 'no_hiding_in_strings' is not a valid rule identifier
Valid rule identifiers:
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
comment_spacing
compiler_protocol_init
computed_accessors_order
conditional_returns_on_newline
contains_over_filter_count
contains_over_filter_is_empty
contains_over_first_not_nil
contains_over_range_nil_comparison
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
ibinspectable_in_extension
identical_operands
identifier_name
implicit_getter
implicit_return
implicitly_unwrapped_optional
inclusive_language
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_nimble
prefer_self_type_over_type_of_self
prefer_zero_over_explicit_init
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
test_case_accessibility
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
Linting 'A.swift' (1/2)
Linting 'B.swift' (2/2)
/Users/marcelofabri/nested-config-issue/A.swift:1:8: warning: no_hiding_in_strings Violation: Regex matched. (no_hiding_in_strings)
Done linting! Found 1 violation, 0 serious in 2 files.

SwiftLint 0.41.0:

$ swiftlint
Loading configuration from '.swiftlint.yml'
Linting Swift files at paths 
Linting 'A.swift' (1/2)
Linting 'B.swift' (2/2)
/Users/marcelofabri/nested-config-issue/A.swift:1:8: warning: no_hiding_in_strings Violation: Regex matched. (no_hiding_in_strings)
Done linting! Found 1 violation, 0 serious in 2 files.

Environment

  • SwiftLint version (run swiftlint version to be sure)? 0.42.0
  • Installation method used (Homebrew, CocoaPods, building from source, etc)? zip archive
  • Paste your configuration file:
custom_rules:
  no_hiding_in_strings:
    regex: "([nN]inja)"
    match_kinds: string
disabled_rules:
  - no_hiding_in_strings

Yes, see above

  • Which Xcode version are you using (check xcodebuild -version)? 12.2

  • Do you have a sample that shows the issue? Run echo "[string here]" | swiftlint lint --no-cache --use-stdin --enable-all-rules
    to quickly test if your example is really demonstrating the issue. If your example is more
    complex, you can use swiftlint lint --path [file here] --no-cache --enable-all-rules.

nested-config-issue.zip

@marcelofabri marcelofabri added the bug Unexpected and reproducible misbehavior. label Dec 18, 2020
@marcelofabri
Copy link
Collaborator Author

This was probably introduced by #3058

@fredpi
Copy link
Collaborator

fredpi commented Dec 18, 2020

@marcelofabri I will try to fix this ASAP. #3468 seems to be a related issue.

@fredpi
Copy link
Collaborator

fredpi commented Jan 15, 2021

Closed via #3473.

@fredpi fredpi closed this as completed Jan 15, 2021
@jpsim
Copy link
Collaborator

jpsim commented Jan 22, 2021

UnfortunatelyI had to revert #3473 in #3503.

@jpsim
Copy link
Collaborator

jpsim commented Feb 25, 2021

Fixed again in #3538

@jpsim jpsim closed this as completed Feb 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Unexpected and reproducible misbehavior.
Projects
None yet
Development

No branches or pull requests

3 participants