rubocop-sketchup 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +19 -19
  3. data/assets/output.html.erb +301 -301
  4. data/config/default.yml +355 -355
  5. data/lib/rubocop/sketchup/config.rb +63 -63
  6. data/lib/rubocop/sketchup/cop/deprecations/add_separator_to_menu.rb +25 -25
  7. data/lib/rubocop/sketchup/cop/deprecations/operation_next_transparent.rb +30 -30
  8. data/lib/rubocop/sketchup/cop/deprecations/require_all.rb +27 -27
  9. data/lib/rubocop/sketchup/cop/deprecations/set_texture_projection.rb +26 -26
  10. data/lib/rubocop/sketchup/cop/deprecations/show_ruby_panel.rb +25 -25
  11. data/lib/rubocop/sketchup/cop/deprecations/sketchup_set.rb +30 -30
  12. data/lib/rubocop/sketchup/cop/performance/openssl.rb +41 -41
  13. data/lib/rubocop/sketchup/cop/performance/operation_disable_ui.rb +33 -33
  14. data/lib/rubocop/sketchup/cop/performance/selection_bulk.rb +79 -79
  15. data/lib/rubocop/sketchup/cop/performance/type_check.rb +63 -63
  16. data/lib/rubocop/sketchup/cop/performance/typename.rb +24 -24
  17. data/lib/rubocop/sketchup/cop/requirements/api_namespace.rb +30 -30
  18. data/lib/rubocop/sketchup/cop/requirements/exit.rb +32 -32
  19. data/lib/rubocop/sketchup/cop/requirements/extension_namespace.rb +108 -108
  20. data/lib/rubocop/sketchup/cop/requirements/file_structure.rb +97 -97
  21. data/lib/rubocop/sketchup/cop/requirements/gem_install.rb +45 -45
  22. data/lib/rubocop/sketchup/cop/requirements/get_extension_license.rb +95 -95
  23. data/lib/rubocop/sketchup/cop/requirements/global_constants.rb +38 -38
  24. data/lib/rubocop/sketchup/cop/requirements/global_include.rb +42 -42
  25. data/lib/rubocop/sketchup/cop/requirements/global_methods.rb +65 -65
  26. data/lib/rubocop/sketchup/cop/requirements/global_variables.rb +95 -95
  27. data/lib/rubocop/sketchup/cop/requirements/language_handler_globals.rb +46 -46
  28. data/lib/rubocop/sketchup/cop/requirements/load_path.rb +83 -83
  29. data/lib/rubocop/sketchup/cop/requirements/minimal_registration.rb +73 -73
  30. data/lib/rubocop/sketchup/cop/requirements/observers_start_operation.rb +161 -161
  31. data/lib/rubocop/sketchup/cop/requirements/register_extension.rb +45 -45
  32. data/lib/rubocop/sketchup/cop/requirements/ruby_core_namespace.rb +291 -291
  33. data/lib/rubocop/sketchup/cop/requirements/ruby_stdlib_namespace.rb +634 -634
  34. data/lib/rubocop/sketchup/cop/requirements/shipped_extensions_namespace.rb +61 -61
  35. data/lib/rubocop/sketchup/cop/requirements/sketchup_extension.rb +119 -119
  36. data/lib/rubocop/sketchup/cop/requirements/sketchup_require.rb +163 -163
  37. data/lib/rubocop/sketchup/cop/suggestions/add_group.rb +49 -49
  38. data/lib/rubocop/sketchup/cop/suggestions/compatibility.rb +117 -117
  39. data/lib/rubocop/sketchup/cop/suggestions/dc_internals.rb +34 -34
  40. data/lib/rubocop/sketchup/cop/suggestions/file_encoding.rb +78 -78
  41. data/lib/rubocop/sketchup/cop/suggestions/model_entities.rb +58 -58
  42. data/lib/rubocop/sketchup/cop/suggestions/monkey_patched_api.rb +45 -45
  43. data/lib/rubocop/sketchup/cop/suggestions/operation_name.rb +103 -103
  44. data/lib/rubocop/sketchup/cop/suggestions/sketchup_find_support_file.rb +39 -39
  45. data/lib/rubocop/sketchup/cop/suggestions/tool_drawing_bounds.rb +44 -44
  46. data/lib/rubocop/sketchup/cop/suggestions/tool_invalidate.rb +66 -66
  47. data/lib/rubocop/sketchup/cop/suggestions/tool_user_input.rb +41 -41
  48. data/lib/rubocop/sketchup/cop/suggestions/toolbar_timer.rb +65 -65
  49. data/lib/rubocop/sketchup/cop.rb +111 -111
  50. data/lib/rubocop/sketchup/dc_globals.rb +24 -24
  51. data/lib/rubocop/sketchup/dc_methods.rb +130 -130
  52. data/lib/rubocop/sketchup/extension_project.rb +65 -65
  53. data/lib/rubocop/sketchup/features.rb +738 -738
  54. data/lib/rubocop/sketchup/formatter/extension_review.rb +259 -259
  55. data/lib/rubocop/sketchup/inject.rb +19 -19
  56. data/lib/rubocop/sketchup/namespace.rb +47 -47
  57. data/lib/rubocop/sketchup/namespace_checker.rb +46 -46
  58. data/lib/rubocop/sketchup/no_comment_disable.rb +17 -17
  59. data/lib/rubocop/sketchup/range_help.rb +52 -52
  60. data/lib/rubocop/sketchup/sketchup_version.rb +87 -87
  61. data/lib/rubocop/sketchup/tool_checker.rb +43 -43
  62. data/lib/rubocop/sketchup/version.rb +5 -5
  63. data/lib/rubocop/sketchup.rb +12 -12
  64. data/lib/rubocop-sketchup.rb +48 -48
  65. data/rubocop-sketchup.gemspec +27 -27
  66. metadata +4 -4
@@ -1,63 +1,63 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module SketchUp
5
- module Config
6
-
7
- DEFAULT_CONFIGURATION =
8
- SketchUp::CONFIG.fetch('AllCops').fetch('SketchUp')
9
-
10
- private
11
-
12
- def all_cops_config
13
- config.for_all_cops
14
- end
15
-
16
- def sketchup_cops_config
17
- config.for_all_cops.fetch('SketchUp', DEFAULT_CONFIGURATION)
18
- end
19
-
20
-
21
- def sketchup_config_key?(key)
22
- return unless all_cops_config.key?('SketchUp')
23
-
24
- all_cops_config.fetch('SketchUp').key?(key)
25
- end
26
-
27
-
28
- def sketchup_target_version?
29
- sketchup_config_key?('TargetSketchUpVersion')
30
- end
31
-
32
- def sketchup_target_version
33
- version = sketchup_cops_config.fetch('TargetSketchUpVersion')
34
- version ? SketchUpVersion.new(version) : nil
35
- end
36
-
37
-
38
- def extension_source_path_config?
39
- sketchup_config_key?('SourcePath')
40
- end
41
-
42
- def extension_source_path_config
43
- sketchup_cops_config.fetch('SourcePath')
44
- end
45
-
46
-
47
- def encrypted_extension?
48
- sketchup_config_key?('EncryptedExtension') &&
49
- sketchup_cops_config.fetch('EncryptedExtension')
50
- end
51
-
52
-
53
- def extension_binaries?
54
- sketchup_config_key?('ExtensionBinaries')
55
- end
56
-
57
- def extension_binaries
58
- sketchup_cops_config.fetch('ExtensionBinaries')
59
- end
60
-
61
- end
62
- end
63
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+ module Config
6
+
7
+ DEFAULT_CONFIGURATION =
8
+ SketchUp::CONFIG.fetch('AllCops').fetch('SketchUp')
9
+
10
+ private
11
+
12
+ def all_cops_config
13
+ config.for_all_cops
14
+ end
15
+
16
+ def sketchup_cops_config
17
+ config.for_all_cops.fetch('SketchUp', DEFAULT_CONFIGURATION)
18
+ end
19
+
20
+
21
+ def sketchup_config_key?(key)
22
+ return unless all_cops_config.key?('SketchUp')
23
+
24
+ all_cops_config.fetch('SketchUp').key?(key)
25
+ end
26
+
27
+
28
+ def sketchup_target_version?
29
+ sketchup_config_key?('TargetSketchUpVersion')
30
+ end
31
+
32
+ def sketchup_target_version
33
+ version = sketchup_cops_config.fetch('TargetSketchUpVersion')
34
+ version ? SketchUpVersion.new(version) : nil
35
+ end
36
+
37
+
38
+ def extension_source_path_config?
39
+ sketchup_config_key?('SourcePath')
40
+ end
41
+
42
+ def extension_source_path_config
43
+ sketchup_cops_config.fetch('SourcePath')
44
+ end
45
+
46
+
47
+ def encrypted_extension?
48
+ sketchup_config_key?('EncryptedExtension') &&
49
+ sketchup_cops_config.fetch('EncryptedExtension')
50
+ end
51
+
52
+
53
+ def extension_binaries?
54
+ sketchup_config_key?('ExtensionBinaries')
55
+ end
56
+
57
+ def extension_binaries
58
+ sketchup_cops_config.fetch('ExtensionBinaries')
59
+ end
60
+
61
+ end
62
+ end
63
+ end
@@ -1,25 +1,25 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupDeprecations
6
- # Avoid adding separators to top level menus. If you require grouping use
7
- # a sub-menu instead.
8
- class AddSeparatorToMenu < SketchUp::Cop
9
-
10
- MSG = 'Method is deprecated.'.freeze
11
-
12
- def_node_matcher :add_separator_to_menu?, <<-PATTERN
13
- (send nil? :add_separator_to_menu _)
14
- PATTERN
15
-
16
- def on_send(node)
17
- return unless add_separator_to_menu?(node)
18
-
19
- add_offense(node, location: :selector)
20
- end
21
-
22
- end
23
- end
24
- end
25
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupDeprecations
6
+ # Avoid adding separators to top level menus. If you require grouping use
7
+ # a sub-menu instead.
8
+ class AddSeparatorToMenu < SketchUp::Cop
9
+
10
+ MSG = 'Method is deprecated.'.freeze
11
+
12
+ def_node_matcher :add_separator_to_menu?, <<-PATTERN
13
+ (send nil? :add_separator_to_menu _)
14
+ PATTERN
15
+
16
+ def on_send(node)
17
+ return unless add_separator_to_menu?(node)
18
+
19
+ add_offense(node, location: :selector)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,30 +1,30 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupDeprecations
6
- # If set to true, then whatever operation comes after this one will be
7
- # appended into one combined operation, allowing the user the undo both
8
- # actions with a single undo command.
9
- #
10
- # This flag is a highly difficult one, since there are so many ways that a
11
- # SketchUp user can interrupt a given operation with one of their own.
12
- #
13
- # Only use this flag if you have no other option, for instance to work
14
- # around bug in how `Sketchup::Model#place_component` starts operations.
15
- class OperationNextTransparent < SketchUp::Cop
16
- MSG = 'Third argument is deprecated.'.freeze
17
-
18
- def on_send(node)
19
- _, method_name, *args = *node
20
- return unless method_name == :start_operation
21
- return if args.size < 3
22
-
23
- argument = args[2]
24
- next_transparent = (argument.type == :true)
25
- add_offense(argument, location: :expression) if next_transparent
26
- end
27
- end
28
- end
29
- end
30
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupDeprecations
6
+ # If set to true, then whatever operation comes after this one will be
7
+ # appended into one combined operation, allowing the user the undo both
8
+ # actions with a single undo command.
9
+ #
10
+ # This flag is a highly difficult one, since there are so many ways that a
11
+ # SketchUp user can interrupt a given operation with one of their own.
12
+ #
13
+ # Only use this flag if you have no other option, for instance to work
14
+ # around bug in how `Sketchup::Model#place_component` starts operations.
15
+ class OperationNextTransparent < SketchUp::Cop
16
+ MSG = 'Third argument is deprecated.'.freeze
17
+
18
+ def on_send(node)
19
+ _, method_name, *args = *node
20
+ return unless method_name == :start_operation
21
+ return if args.size < 3
22
+
23
+ argument = args[2]
24
+ next_transparent = (argument.type == :true)
25
+ add_offense(argument, location: :expression) if next_transparent
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,27 +1,27 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupDeprecations
6
- # Method is deprecated because it adds the given path to `$LOAD_PATH`.
7
- # Modifying `$LOAD_PATH` is bad practice because it can cause extensions
8
- # to inadvertently load the wrong file.
9
- class RequireAll < SketchUp::Cop
10
-
11
- MSG = 'Method is deprecated because it adds the given path '\
12
- 'to $LOAD_PATH.'.freeze
13
-
14
- def_node_matcher :require_all?, <<-PATTERN
15
- (send nil? :require_all _)
16
- PATTERN
17
-
18
- def on_send(node)
19
- return unless require_all?(node)
20
-
21
- add_offense(node, location: :selector)
22
- end
23
-
24
- end
25
- end
26
- end
27
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupDeprecations
6
+ # Method is deprecated because it adds the given path to `$LOAD_PATH`.
7
+ # Modifying `$LOAD_PATH` is bad practice because it can cause extensions
8
+ # to inadvertently load the wrong file.
9
+ class RequireAll < SketchUp::Cop
10
+
11
+ MSG = 'Method is deprecated because it adds the given path '\
12
+ 'to $LOAD_PATH.'.freeze
13
+
14
+ def_node_matcher :require_all?, <<-PATTERN
15
+ (send nil? :require_all _)
16
+ PATTERN
17
+
18
+ def on_send(node)
19
+ return unless require_all?(node)
20
+
21
+ add_offense(node, location: :selector)
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,26 +1,26 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupDeprecations
6
- # Method is deprecated because it creates invalid UV mapping. Saving the
7
- # model will display a dialog indicating that the model needs to be
8
- # repaired. Once repaired the UV mapping will visually change.
9
- class SetTextureProjection < SketchUp::Cop
10
-
11
- MSG = 'Method is deprecated. It can create invalid UV mapping.'.freeze
12
-
13
- def_node_matcher :set_texture_projection?, <<-PATTERN
14
- (send _ :set_texture_projection ...)
15
- PATTERN
16
-
17
- def on_send(node)
18
- return unless set_texture_projection?(node)
19
-
20
- add_offense(node, location: :selector)
21
- end
22
-
23
- end
24
- end
25
- end
26
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupDeprecations
6
+ # Method is deprecated because it creates invalid UV mapping. Saving the
7
+ # model will display a dialog indicating that the model needs to be
8
+ # repaired. Once repaired the UV mapping will visually change.
9
+ class SetTextureProjection < SketchUp::Cop
10
+
11
+ MSG = 'Method is deprecated. It can create invalid UV mapping.'.freeze
12
+
13
+ def_node_matcher :set_texture_projection?, <<-PATTERN
14
+ (send _ :set_texture_projection ...)
15
+ PATTERN
16
+
17
+ def on_send(node)
18
+ return unless set_texture_projection?(node)
19
+
20
+ add_offense(node, location: :selector)
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,25 +1,25 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupDeprecations
6
- # Method is deprecated. Use `SKETCHUP_CONSOLE.show` instead.
7
- class ShowRubyPanel < SketchUp::Cop
8
-
9
- MSG = 'Method is deprecated. Use `SKETCHUP_CONSOLE.show` '\
10
- 'instead.'.freeze
11
-
12
- def_node_matcher :show_ruby_panel?, <<-PATTERN
13
- (send nil? :show_ruby_panel)
14
- PATTERN
15
-
16
- def on_send(node)
17
- return unless show_ruby_panel?(node)
18
-
19
- add_offense(node, location: :expression)
20
- end
21
-
22
- end
23
- end
24
- end
25
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupDeprecations
6
+ # Method is deprecated. Use `SKETCHUP_CONSOLE.show` instead.
7
+ class ShowRubyPanel < SketchUp::Cop
8
+
9
+ MSG = 'Method is deprecated. Use `SKETCHUP_CONSOLE.show` '\
10
+ 'instead.'.freeze
11
+
12
+ def_node_matcher :show_ruby_panel?, <<-PATTERN
13
+ (send nil? :show_ruby_panel)
14
+ PATTERN
15
+
16
+ def on_send(node)
17
+ return unless show_ruby_panel?(node)
18
+
19
+ add_offense(node, location: :expression)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,30 +1,30 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupDeprecations
6
- # From SketchUp 6 until SketchUp 2013 the SketchUp API shipped with a
7
- # `Set` class. When SketchUp started shipping with the Ruby StdLib in
8
- # SketchUp 2014 the class was changed from `Set` to `Sketchup::Set` in
9
- # order to avoid conflict with the Ruby Standard Library.
10
- #
11
- # The `Sketchup::Set` class is much slower than Ruby's own `Set` class
12
- # and less versatile.
13
- class SketchupSet < SketchUp::Cop
14
-
15
- MSG = 'Class is deprecated.'.freeze
16
-
17
- def_node_matcher :sketchup_set?, <<-PATTERN
18
- (const (const nil? :Sketchup) :Set)
19
- PATTERN
20
-
21
- def on_const(node)
22
- return unless sketchup_set?(node)
23
-
24
- add_offense(node, location: :expression)
25
- end
26
-
27
- end
28
- end
29
- end
30
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupDeprecations
6
+ # From SketchUp 6 until SketchUp 2013 the SketchUp API shipped with a
7
+ # `Set` class. When SketchUp started shipping with the Ruby StdLib in
8
+ # SketchUp 2014 the class was changed from `Set` to `Sketchup::Set` in
9
+ # order to avoid conflict with the Ruby Standard Library.
10
+ #
11
+ # The `Sketchup::Set` class is much slower than Ruby's own `Set` class
12
+ # and less versatile.
13
+ class SketchupSet < SketchUp::Cop
14
+
15
+ MSG = 'Class is deprecated.'.freeze
16
+
17
+ def_node_matcher :sketchup_set?, <<-PATTERN
18
+ (const (const nil? :Sketchup) :Set)
19
+ PATTERN
20
+
21
+ def on_const(node)
22
+ return unless sketchup_set?(node)
23
+
24
+ add_offense(node, location: :expression)
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,41 +1,41 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupPerformance
6
- # There are performance issue with the OpenSSL library that Ruby ship. In
7
- # a clean SU session, default model there is a small delay observed in the
8
- # Windows version of SU.
9
- #
10
- # But with a larger model loaded, or session that have had larger files
11
- # loaded the lag will be minutes.
12
- #
13
- # `SecureRandom` is also affected by this, as it uses OpenSSL to seed.
14
- #
15
- # It also affects `Net::HTTP` if making HTTPS connections.
16
- class OpenSSL < SketchUp::Cop
17
-
18
- MSG = 'Avoid use of OpenSSL within SketchUp due to severe performance '\
19
- 'issues.'.freeze
20
-
21
- # http://www.rubydoc.info/gems/rubocop/RuboCop/NodePattern
22
- # https://rubocop.readthedocs.io/en/latest/node_pattern/
23
- def_node_matcher :require, <<-PATTERN
24
- (send nil? :require
25
- (str $_)
26
- )
27
- PATTERN
28
-
29
- OPEN_SSL_USAGE = %w[openssl securerandom net/https net/http].freeze
30
-
31
- def on_send(node)
32
- filename = require(node)
33
- return if filename.nil?
34
- return unless OPEN_SSL_USAGE.include?(filename.downcase)
35
-
36
- add_offense(node, location: :expression)
37
- end
38
- end
39
- end
40
- end
41
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupPerformance
6
+ # There are performance issue with the OpenSSL library that Ruby ship. In
7
+ # a clean SU session, default model there is a small delay observed in the
8
+ # Windows version of SU.
9
+ #
10
+ # But with a larger model loaded, or session that have had larger files
11
+ # loaded the lag will be minutes.
12
+ #
13
+ # `SecureRandom` is also affected by this, as it uses OpenSSL to seed.
14
+ #
15
+ # It also affects `Net::HTTP` if making HTTPS connections.
16
+ class OpenSSL < SketchUp::Cop
17
+
18
+ MSG = 'Avoid use of OpenSSL within SketchUp due to severe performance '\
19
+ 'issues.'.freeze
20
+
21
+ # http://www.rubydoc.info/gems/rubocop/RuboCop/NodePattern
22
+ # https://rubocop.readthedocs.io/en/latest/node_pattern/
23
+ def_node_matcher :require, <<-PATTERN
24
+ (send nil? :require
25
+ (str $_)
26
+ )
27
+ PATTERN
28
+
29
+ OPEN_SSL_USAGE = %w[openssl securerandom net/https net/http].freeze
30
+
31
+ def on_send(node)
32
+ filename = require(node)
33
+ return if filename.nil?
34
+ return unless OPEN_SSL_USAGE.include?(filename.downcase)
35
+
36
+ add_offense(node, location: :expression)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,33 +1,33 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupPerformance
6
- # Operations should disable the UI for performance gain.
7
- #
8
- # @example
9
- # model = Sketchup.active_model
10
- # model.start_operation('Operation Name', true)
11
- # # <model changes>
12
- # model.commit_operation
13
- class OperationDisableUI < SketchUp::Cop
14
- MSG = 'Operations should disable the UI for performance gain.'.freeze
15
-
16
- def on_send(node)
17
- _, method_name, *args = *node
18
- return unless method_name == :start_operation
19
-
20
- if args.size < 2
21
- add_offense(node, location: :selector)
22
- return
23
- end
24
- argument = args[1]
25
- disable_ui = argument.truthy_literal?
26
- return if disable_ui
27
-
28
- add_offense(argument, location: :expression)
29
- end
30
- end
31
- end
32
- end
33
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupPerformance
6
+ # Operations should disable the UI for performance gain.
7
+ #
8
+ # @example
9
+ # model = Sketchup.active_model
10
+ # model.start_operation('Operation Name', true)
11
+ # # <model changes>
12
+ # model.commit_operation
13
+ class OperationDisableUI < SketchUp::Cop
14
+ MSG = 'Operations should disable the UI for performance gain.'.freeze
15
+
16
+ def on_send(node)
17
+ _, method_name, *args = *node
18
+ return unless method_name == :start_operation
19
+
20
+ if args.size < 2
21
+ add_offense(node, location: :selector)
22
+ return
23
+ end
24
+ argument = args[1]
25
+ disable_ui = argument.truthy_literal?
26
+ return if disable_ui
27
+
28
+ add_offense(argument, location: :expression)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end