rubocop-sketchup 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +20 -21
  3. data/assets/output.html.erb +301 -301
  4. data/config/default.yml +379 -379
  5. data/lib/rubocop/sketchup/config.rb +63 -63
  6. data/lib/rubocop/sketchup/cop/bugs/material_name.rb +108 -108
  7. data/lib/rubocop/sketchup/cop/bugs/render_mode.rb +72 -72
  8. data/lib/rubocop/sketchup/cop/bugs/uniform_scaling.rb +36 -36
  9. data/lib/rubocop/sketchup/cop/deprecations/add_separator_to_menu.rb +25 -25
  10. data/lib/rubocop/sketchup/cop/deprecations/operation_next_transparent.rb +30 -30
  11. data/lib/rubocop/sketchup/cop/deprecations/require_all.rb +27 -27
  12. data/lib/rubocop/sketchup/cop/deprecations/set_texture_projection.rb +26 -26
  13. data/lib/rubocop/sketchup/cop/deprecations/show_ruby_panel.rb +25 -25
  14. data/lib/rubocop/sketchup/cop/deprecations/sketchup_set.rb +30 -30
  15. data/lib/rubocop/sketchup/cop/performance/openssl.rb +41 -41
  16. data/lib/rubocop/sketchup/cop/performance/operation_disable_ui.rb +33 -33
  17. data/lib/rubocop/sketchup/cop/performance/selection_bulk.rb +79 -79
  18. data/lib/rubocop/sketchup/cop/performance/type_check.rb +63 -63
  19. data/lib/rubocop/sketchup/cop/performance/typename.rb +24 -24
  20. data/lib/rubocop/sketchup/cop/requirements/api_namespace.rb +30 -30
  21. data/lib/rubocop/sketchup/cop/requirements/exit.rb +33 -33
  22. data/lib/rubocop/sketchup/cop/requirements/extension_namespace.rb +125 -125
  23. data/lib/rubocop/sketchup/cop/requirements/file_structure.rb +97 -97
  24. data/lib/rubocop/sketchup/cop/requirements/gem_install.rb +45 -45
  25. data/lib/rubocop/sketchup/cop/requirements/get_extension_license.rb +95 -95
  26. data/lib/rubocop/sketchup/cop/requirements/global_constants.rb +38 -38
  27. data/lib/rubocop/sketchup/cop/requirements/global_include.rb +42 -42
  28. data/lib/rubocop/sketchup/cop/requirements/global_methods.rb +65 -65
  29. data/lib/rubocop/sketchup/cop/requirements/global_variables.rb +95 -95
  30. data/lib/rubocop/sketchup/cop/requirements/language_handler_globals.rb +46 -46
  31. data/lib/rubocop/sketchup/cop/requirements/load_path.rb +83 -83
  32. data/lib/rubocop/sketchup/cop/requirements/minimal_registration.rb +73 -73
  33. data/lib/rubocop/sketchup/cop/requirements/observers_start_operation.rb +161 -161
  34. data/lib/rubocop/sketchup/cop/requirements/register_extension.rb +45 -45
  35. data/lib/rubocop/sketchup/cop/requirements/ruby_core_namespace.rb +291 -291
  36. data/lib/rubocop/sketchup/cop/requirements/ruby_stdlib_namespace.rb +634 -634
  37. data/lib/rubocop/sketchup/cop/requirements/shipped_extensions_namespace.rb +61 -61
  38. data/lib/rubocop/sketchup/cop/requirements/sketchup_extension.rb +119 -119
  39. data/lib/rubocop/sketchup/cop/requirements/sketchup_require.rb +150 -149
  40. data/lib/rubocop/sketchup/cop/suggestions/add_group.rb +49 -49
  41. data/lib/rubocop/sketchup/cop/suggestions/compatibility.rb +128 -128
  42. data/lib/rubocop/sketchup/cop/suggestions/dc_internals.rb +34 -34
  43. data/lib/rubocop/sketchup/cop/suggestions/file_encoding.rb +78 -78
  44. data/lib/rubocop/sketchup/cop/suggestions/model_entities.rb +58 -58
  45. data/lib/rubocop/sketchup/cop/suggestions/monkey_patched_api.rb +45 -45
  46. data/lib/rubocop/sketchup/cop/suggestions/operation_name.rb +137 -137
  47. data/lib/rubocop/sketchup/cop/suggestions/sketchup_find_support_file.rb +39 -39
  48. data/lib/rubocop/sketchup/cop/suggestions/tool_drawing_bounds.rb +45 -45
  49. data/lib/rubocop/sketchup/cop/suggestions/tool_invalidate.rb +68 -68
  50. data/lib/rubocop/sketchup/cop/suggestions/tool_user_input.rb +41 -41
  51. data/lib/rubocop/sketchup/cop/suggestions/toolbar_timer.rb +65 -65
  52. data/lib/rubocop/sketchup/cop.rb +110 -110
  53. data/lib/rubocop/sketchup/dc_globals.rb +24 -24
  54. data/lib/rubocop/sketchup/dc_methods.rb +130 -130
  55. data/lib/rubocop/sketchup/extension_project.rb +65 -65
  56. data/lib/rubocop/sketchup/features.rb +1477 -1420
  57. data/lib/rubocop/sketchup/formatter/extension_review.rb +269 -269
  58. data/lib/rubocop/sketchup/inject.rb +19 -19
  59. data/lib/rubocop/sketchup/namespace.rb +49 -49
  60. data/lib/rubocop/sketchup/namespace_checker.rb +103 -103
  61. data/lib/rubocop/sketchup/no_comment_disable.rb +17 -17
  62. data/lib/rubocop/sketchup/range_help.rb +52 -52
  63. data/lib/rubocop/sketchup/sketchup_target_range.rb +75 -75
  64. data/lib/rubocop/sketchup/sketchup_version.rb +129 -128
  65. data/lib/rubocop/sketchup/tool_checker.rb +41 -43
  66. data/lib/rubocop/sketchup/version.rb +7 -7
  67. data/lib/rubocop/sketchup.rb +14 -14
  68. data/lib/rubocop-sketchup.rb +53 -53
  69. data/rubocop-sketchup.gemspec +29 -29
  70. metadata +8 -8
@@ -1,103 +1,103 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module SketchUp
5
- module NamespaceChecker
6
-
7
- extend NodePattern::Macros
8
-
9
- # Example:
10
- # Array.include(Example)
11
- def_node_matcher :klass_include, <<-PATTERN
12
- (send
13
- (const nil? $_) { :include | :extend } _)
14
- PATTERN
15
-
16
- # Example:
17
- # class Array
18
- # include Example
19
- # end
20
- def_node_matcher :klass_scope_include, <<-PATTERN
21
- (
22
- {
23
- class (const nil? $_) nil? |
24
- module (const nil? $_)
25
- }
26
- (send nil? { :include | :extend } _))
27
- PATTERN
28
-
29
- # Example:
30
- # include Example
31
- def_node_matcher :include_call?, <<-PATTERN
32
- (send nil? { :include | :extend } _)
33
- PATTERN
34
-
35
-
36
- def on_class(node)
37
- check_namespace(node)
38
- end
39
-
40
- def on_module(node)
41
- check_namespace(node)
42
- end
43
-
44
- def on_def(node)
45
- check_namespace(node)
46
- end
47
- alias on_defs on_def
48
-
49
- # Constant assignment.
50
- def on_casgn(node)
51
- check_namespace(node)
52
- end
53
-
54
- def on_send(node)
55
- klass = klass_include(node) || klass_scope_include(node.parent)
56
-
57
- if klass
58
- namespace = SketchUp::Namespace.new(klass.to_s)
59
- return unless namespaces.include?(namespace.first)
60
- else
61
- # If klass is `nil` we either don't have a `include` call or we're in
62
- # global namespace.
63
- return unless top_level_include?(node)
64
- end
65
-
66
- add_offense(node, location: :selector, severity: :error)
67
- end
68
-
69
- def check_namespace(node)
70
- return unless in_namespace?(node)
71
-
72
- add_offense(node, location: :name, severity: :error)
73
- end
74
-
75
- def top_level?(node)
76
- # parent_module_name might return nil if for instance a method is
77
- # defined within a block. (Apparently that is possible...)
78
- return false if node.parent_module_name.nil?
79
-
80
- namespace = SketchUp::Namespace.new(node.parent_module_name)
81
- namespace.top_level?
82
- end
83
-
84
- def top_level_include?(node)
85
- include_call?(node) && top_level?(node)
86
- end
87
-
88
- def in_namespace?(node)
89
- # parent_module_name might return nil if for instance a method is
90
- # defined within a block. (Apparently that is possible...)
91
- return false if node.parent_module_name.nil?
92
-
93
- namespace = SketchUp::Namespace.new(node.parent_module_name)
94
- namespaces.include?(namespace.first)
95
- end
96
-
97
- def namespaces
98
- raise NotImplementedError
99
- end
100
-
101
- end
102
- end
103
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+ module NamespaceChecker
6
+
7
+ extend NodePattern::Macros
8
+
9
+ # Example:
10
+ # Array.include(Example)
11
+ def_node_matcher :klass_include, <<-PATTERN
12
+ (send
13
+ (const nil? $_) { :include | :extend } _)
14
+ PATTERN
15
+
16
+ # Example:
17
+ # class Array
18
+ # include Example
19
+ # end
20
+ def_node_matcher :klass_scope_include, <<-PATTERN
21
+ (
22
+ {
23
+ class (const nil? $_) nil? |
24
+ module (const nil? $_)
25
+ }
26
+ (send nil? { :include | :extend } _))
27
+ PATTERN
28
+
29
+ # Example:
30
+ # include Example
31
+ def_node_matcher :include_call?, <<-PATTERN
32
+ (send nil? { :include | :extend } _)
33
+ PATTERN
34
+
35
+
36
+ def on_class(node)
37
+ check_namespace(node)
38
+ end
39
+
40
+ def on_module(node)
41
+ check_namespace(node)
42
+ end
43
+
44
+ def on_def(node)
45
+ check_namespace(node)
46
+ end
47
+ alias on_defs on_def
48
+
49
+ # Constant assignment.
50
+ def on_casgn(node)
51
+ check_namespace(node)
52
+ end
53
+
54
+ def on_send(node)
55
+ klass = klass_include(node) || klass_scope_include(node.parent)
56
+
57
+ if klass
58
+ namespace = SketchUp::Namespace.new(klass.to_s)
59
+ return unless namespaces.include?(namespace.first)
60
+ else
61
+ # If klass is `nil` we either don't have a `include` call or we're in
62
+ # global namespace.
63
+ return unless top_level_include?(node)
64
+ end
65
+
66
+ add_offense(node, location: :selector, severity: :error)
67
+ end
68
+
69
+ def check_namespace(node)
70
+ return unless in_namespace?(node)
71
+
72
+ add_offense(node, location: :name, severity: :error)
73
+ end
74
+
75
+ def top_level?(node)
76
+ # parent_module_name might return nil if for instance a method is
77
+ # defined within a block. (Apparently that is possible...)
78
+ return false if node.parent_module_name.nil?
79
+
80
+ namespace = SketchUp::Namespace.new(node.parent_module_name)
81
+ namespace.top_level?
82
+ end
83
+
84
+ def top_level_include?(node)
85
+ include_call?(node) && top_level?(node)
86
+ end
87
+
88
+ def in_namespace?(node)
89
+ # parent_module_name might return nil if for instance a method is
90
+ # defined within a block. (Apparently that is possible...)
91
+ return false if node.parent_module_name.nil?
92
+
93
+ namespace = SketchUp::Namespace.new(node.parent_module_name)
94
+ namespaces.include?(namespace.first)
95
+ end
96
+
97
+ def namespaces
98
+ raise NotImplementedError
99
+ end
100
+
101
+ end
102
+ end
103
+ end
@@ -1,17 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module SketchUp
5
- module NoCommentDisable
6
-
7
- private
8
-
9
- # This forces the cop to be run even if there is a source code comment
10
- # that tries to disable it.
11
- def enabled_line?(_line_number)
12
- true
13
- end
14
-
15
- end
16
- end
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+ module NoCommentDisable
6
+
7
+ private
8
+
9
+ # This forces the cop to be run even if there is a source code comment
10
+ # that tries to disable it.
11
+ def enabled_line?(_line_number)
12
+ true
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -1,52 +1,52 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- # Methods that calculate and return Parser::Source::Ranges
6
- module RangeHelp
7
-
8
- private
9
-
10
- def range_with_receiver(node)
11
- receiver = node.receiver
12
- loc_begin = if receiver.send_type?
13
- receiver.loc.selector.begin_pos
14
- else
15
- receiver.loc.expression.begin_pos
16
- end
17
- loc_end = node.loc.selector.end_pos
18
- range_between(loc_begin, loc_end)
19
- end
20
-
21
- def string_contents_range(node)
22
- begin_pos = node.loc.begin.end_pos
23
- end_pos = node.loc.end.begin_pos
24
- range_between(begin_pos, end_pos)
25
- end
26
-
27
- def arguments_range(node)
28
- begin_pos = node.arguments.first.loc.expression.begin_pos
29
- end_pos = node.arguments.last.loc.expression.end_pos
30
- range_between(begin_pos, end_pos)
31
- end
32
-
33
- def conditional_range(node)
34
- if node.modifier_form?
35
- range_between(node.loc.keyword.begin_pos,
36
- node.loc.expression.end_pos)
37
- else
38
- :expression
39
- end
40
- end
41
-
42
- def file_ext_range(argument_node)
43
- filename = argument_node.str_content
44
- ext_size = File.extname(filename).size
45
- end_pos = argument_node.loc.end.begin_pos
46
- begin_pos = end_pos - ext_size
47
- range_between(begin_pos, end_pos)
48
- end
49
-
50
- end
51
- end
52
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ # Methods that calculate and return Parser::Source::Ranges
6
+ module RangeHelp
7
+
8
+ private
9
+
10
+ def range_with_receiver(node)
11
+ receiver = node.receiver
12
+ loc_begin = if receiver.send_type?
13
+ receiver.loc.selector.begin_pos
14
+ else
15
+ receiver.loc.expression.begin_pos
16
+ end
17
+ loc_end = node.loc.selector.end_pos
18
+ range_between(loc_begin, loc_end)
19
+ end
20
+
21
+ def string_contents_range(node)
22
+ begin_pos = node.loc.begin.end_pos
23
+ end_pos = node.loc.end.begin_pos
24
+ range_between(begin_pos, end_pos)
25
+ end
26
+
27
+ def arguments_range(node)
28
+ begin_pos = node.arguments.first.loc.expression.begin_pos
29
+ end_pos = node.arguments.last.loc.expression.end_pos
30
+ range_between(begin_pos, end_pos)
31
+ end
32
+
33
+ def conditional_range(node)
34
+ if node.modifier_form?
35
+ range_between(node.loc.keyword.begin_pos,
36
+ node.loc.expression.end_pos)
37
+ else
38
+ :expression
39
+ end
40
+ end
41
+
42
+ def file_ext_range(argument_node)
43
+ filename = argument_node.str_content
44
+ ext_size = File.extname(filename).size
45
+ end_pos = argument_node.loc.end.begin_pos
46
+ begin_pos = end_pos - ext_size
47
+ range_between(begin_pos, end_pos)
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -1,75 +1,75 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module SketchUp
5
- # Mix-in module for Cops that are valid only for a given SketchUp version
6
- # range. This mix-in uses the configured target SketchUp version to
7
- # determine if it's relevant.
8
- module SketchUpTargetRange
9
-
10
- module ClassMethods
11
-
12
- # @param [String] version
13
- def define_sketchup_target_min_version(version)
14
- @sketchup_target_min_version = SketchUpVersion.new(version)
15
- nil
16
- end
17
-
18
- # @param [String] version
19
- def define_sketchup_target_max_version(version)
20
- @sketchup_target_max_version = SketchUpVersion.new(version)
21
- nil
22
- end
23
-
24
- def sketchup_target_min_version
25
- @sketchup_target_min_version
26
- end
27
-
28
- def sketchup_target_max_version
29
- @sketchup_target_max_version
30
- end
31
-
32
- end # module ClassMethods
33
-
34
- def self.included(mod)
35
- mod.extend(ClassMethods)
36
- end
37
-
38
- def sketchup_target_min_version
39
- self.class.sketchup_target_min_version
40
- end
41
-
42
- def sketchup_target_max_version
43
- self.class.sketchup_target_max_version
44
- end
45
-
46
- def valid_for_target_sketchup_version?
47
- # If no target version is configured, ignore this check.
48
- return true unless sketchup_target_version?
49
-
50
- # If no version is set - then it's valid for all known versions.
51
- unless sketchup_target_min_version || sketchup_target_max_version
52
- return true
53
- end
54
-
55
- # If there is a finite version range, check if the target SketchUp
56
- # version is withing that.
57
- if sketchup_target_min_version && sketchup_target_max_version
58
- range = (sketchup_target_min_version..sketchup_target_max_version)
59
- return range.include?(sketchup_target_version)
60
- end
61
-
62
- if sketchup_target_min_version
63
- return sketchup_target_version >= sketchup_target_min_version
64
- end
65
-
66
- if sketchup_target_max_version
67
- return sketchup_target_version <= sketchup_target_max_version
68
- end
69
-
70
- raise 'bug!' # Should not end up here.
71
- end
72
-
73
- end
74
- end
75
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+ # Mix-in module for Cops that are valid only for a given SketchUp version
6
+ # range. This mix-in uses the configured target SketchUp version to
7
+ # determine if it's relevant.
8
+ module SketchUpTargetRange
9
+
10
+ module ClassMethods
11
+
12
+ # @param [String] version
13
+ def define_sketchup_target_min_version(version)
14
+ @sketchup_target_min_version = SketchUpVersion.new(version)
15
+ nil
16
+ end
17
+
18
+ # @param [String] version
19
+ def define_sketchup_target_max_version(version)
20
+ @sketchup_target_max_version = SketchUpVersion.new(version)
21
+ nil
22
+ end
23
+
24
+ def sketchup_target_min_version
25
+ @sketchup_target_min_version
26
+ end
27
+
28
+ def sketchup_target_max_version
29
+ @sketchup_target_max_version
30
+ end
31
+
32
+ end # module ClassMethods
33
+
34
+ def self.included(mod)
35
+ mod.extend(ClassMethods)
36
+ end
37
+
38
+ def sketchup_target_min_version
39
+ self.class.sketchup_target_min_version
40
+ end
41
+
42
+ def sketchup_target_max_version
43
+ self.class.sketchup_target_max_version
44
+ end
45
+
46
+ def valid_for_target_sketchup_version?
47
+ # If no target version is configured, ignore this check.
48
+ return true unless sketchup_target_version?
49
+
50
+ # If no version is set - then it's valid for all known versions.
51
+ unless sketchup_target_min_version || sketchup_target_max_version
52
+ return true
53
+ end
54
+
55
+ # If there is a finite version range, check if the target SketchUp
56
+ # version is withing that.
57
+ if sketchup_target_min_version && sketchup_target_max_version
58
+ range = (sketchup_target_min_version..sketchup_target_max_version)
59
+ return range.include?(sketchup_target_version)
60
+ end
61
+
62
+ if sketchup_target_min_version
63
+ return sketchup_target_version >= sketchup_target_min_version
64
+ end
65
+
66
+ if sketchup_target_max_version
67
+ return sketchup_target_version <= sketchup_target_max_version
68
+ end
69
+
70
+ raise 'bug!' # Should not end up here.
71
+ end
72
+
73
+ end
74
+ end
75
+ end