rubocop-sketchup 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,111 +1,111 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module SketchUp
5
-
6
- WorkaroundCop = RuboCop::Cop::Cop.dup
7
-
8
- # Clone of the the normal RuboCop::Cop::Cop class so we can rewrite
9
- # the inherited method without breaking functionality
10
- class WorkaroundCop
11
- # Remove the Cop.inherited method to be a noop. Our SketchUp::Cop
12
- # class will invoke the inherited hook instead
13
- class << self
14
- undef inherited
15
- def inherited(*) end
16
- end
17
-
18
- # Special case `Module#<` so that the rspec support rubocop exports
19
- # is compatible with our subclass
20
- def self.<(other)
21
- other.equal?(RuboCop::Cop::Cop) || super
22
- end
23
- end
24
- private_constant(:WorkaroundCop)
25
-
26
- # @abstract parent class to SketchUp cops
27
- #
28
- # The criteria for whether rubocop-sketchup analyzes a certain ruby file
29
- # is configured via `AllCops/SketchUp`. For example, if you want to
30
- # customize your project to scan all files within a `test/` directory
31
- # then you could add this to your configuration:
32
- #
33
- # @example configuring analyzed paths
34
- #
35
- # AllCops:
36
- # SketchUp:
37
- # SketchupDeprecations:
38
- # Exclude:
39
- # - '_test.rb$'
40
- # - '(?:^|/)test/'
41
- class Cop < WorkaroundCop
42
-
43
- include SketchUp::Config
44
-
45
- # Invoke the original inherited hook so our cops are recognized
46
- def self.inherited(subclass)
47
- RuboCop::Cop::Cop.inherited(subclass)
48
- end
49
-
50
- def relevant_file?(file)
51
- relevant_rubocop_sketchup_file?(file) && super
52
- end
53
-
54
- private
55
-
56
- def default_severity
57
- sketchup_severity || super
58
- end
59
-
60
- def sketchup_severity
61
- case self.class.department
62
- when :SketchupRequirements
63
- :error
64
- when :SketchupDeprecations
65
- :warning
66
- when :SketchupPerformance
67
- :warning
68
- when :SketchupSuggestions
69
- :convention
70
- end
71
- end
72
-
73
- def department_name
74
- self.class.department.to_s
75
- end
76
-
77
- def relevant_rubocop_sketchup_file?(file)
78
- !sketchup_excluded?(file)
79
- end
80
-
81
- def sketchup_excluded?(file)
82
- matches_file?(file, sketchup_exclude_pattern) ||
83
- matches_file?(file, sketchup_department_exclude_pattern)
84
- end
85
-
86
- def matches_file?(file, patterns)
87
- path = nil
88
- patterns.any? do |pattern|
89
- # Try to match the absolute path, as Exclude properties are absolute.
90
- next true if match_path?(pattern, file)
91
-
92
- # Try with relative path.
93
- path ||= config.path_relative_to_config(file)
94
- match_path?(pattern, path)
95
- end
96
- end
97
-
98
- def sketchup_department_exclude_pattern
99
- sketchup_cops_config
100
- .fetch(department_name, {})
101
- .fetch('Exclude', [])
102
- end
103
-
104
- def sketchup_exclude_pattern
105
- sketchup_cops_config
106
- .fetch('Exclude', [])
107
- end
108
-
109
- end
110
- end
111
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+
6
+ WorkaroundCop = RuboCop::Cop::Cop.dup
7
+
8
+ # Clone of the the normal RuboCop::Cop::Cop class so we can rewrite
9
+ # the inherited method without breaking functionality
10
+ class WorkaroundCop
11
+ # Remove the Cop.inherited method to be a noop. Our SketchUp::Cop
12
+ # class will invoke the inherited hook instead
13
+ class << self
14
+ undef inherited
15
+ def inherited(*) end
16
+ end
17
+
18
+ # Special case `Module#<` so that the rspec support rubocop exports
19
+ # is compatible with our subclass
20
+ def self.<(other)
21
+ other.equal?(RuboCop::Cop::Cop) || super
22
+ end
23
+ end
24
+ private_constant(:WorkaroundCop)
25
+
26
+ # @abstract parent class to SketchUp cops
27
+ #
28
+ # The criteria for whether rubocop-sketchup analyzes a certain ruby file
29
+ # is configured via `AllCops/SketchUp`. For example, if you want to
30
+ # customize your project to scan all files within a `test/` directory
31
+ # then you could add this to your configuration:
32
+ #
33
+ # @example configuring analyzed paths
34
+ #
35
+ # AllCops:
36
+ # SketchUp:
37
+ # SketchupDeprecations:
38
+ # Exclude:
39
+ # - '_test.rb$'
40
+ # - '(?:^|/)test/'
41
+ class Cop < WorkaroundCop
42
+
43
+ include SketchUp::Config
44
+
45
+ # Invoke the original inherited hook so our cops are recognized
46
+ def self.inherited(subclass)
47
+ RuboCop::Cop::Cop.inherited(subclass)
48
+ end
49
+
50
+ def relevant_file?(file)
51
+ relevant_rubocop_sketchup_file?(file) && super
52
+ end
53
+
54
+ private
55
+
56
+ def default_severity
57
+ sketchup_severity || super
58
+ end
59
+
60
+ def sketchup_severity
61
+ case self.class.department
62
+ when :SketchupRequirements
63
+ :error
64
+ when :SketchupDeprecations
65
+ :warning
66
+ when :SketchupPerformance
67
+ :warning
68
+ when :SketchupSuggestions
69
+ :convention
70
+ end
71
+ end
72
+
73
+ def department_name
74
+ self.class.department.to_s
75
+ end
76
+
77
+ def relevant_rubocop_sketchup_file?(file)
78
+ !sketchup_excluded?(file)
79
+ end
80
+
81
+ def sketchup_excluded?(file)
82
+ matches_file?(file, sketchup_exclude_pattern) ||
83
+ matches_file?(file, sketchup_department_exclude_pattern)
84
+ end
85
+
86
+ def matches_file?(file, patterns)
87
+ path = nil
88
+ patterns.any? do |pattern|
89
+ # Try to match the absolute path, as Exclude properties are absolute.
90
+ next true if match_path?(pattern, file)
91
+
92
+ # Try with relative path.
93
+ path ||= config.path_relative_to_config(file)
94
+ match_path?(pattern, path)
95
+ end
96
+ end
97
+
98
+ def sketchup_department_exclude_pattern
99
+ sketchup_cops_config
100
+ .fetch(department_name, {})
101
+ .fetch('Exclude', [])
102
+ end
103
+
104
+ def sketchup_exclude_pattern
105
+ sketchup_cops_config
106
+ .fetch('Exclude', [])
107
+ end
108
+
109
+ end
110
+ end
111
+ end
@@ -1,24 +1,24 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module SketchUp
5
- module DynamicComponentGlobals
6
-
7
- DC_GLOBALS = %i[
8
- $dc_strings
9
- $dc_extension
10
- $dc_CONFIGURATOR_NAME
11
- $dc_REPORTER_NAME
12
- $dc_MANAGER_NAME
13
- $dc_observers
14
- ].freeze
15
-
16
- private
17
-
18
- def dc_global_var?(global_var)
19
- DC_GLOBALS.include?(global_var)
20
- end
21
-
22
- end
23
- end
24
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+ module DynamicComponentGlobals
6
+
7
+ DC_GLOBALS = %i[
8
+ $dc_strings
9
+ $dc_extension
10
+ $dc_CONFIGURATOR_NAME
11
+ $dc_REPORTER_NAME
12
+ $dc_MANAGER_NAME
13
+ $dc_observers
14
+ ].freeze
15
+
16
+ private
17
+
18
+ def dc_global_var?(global_var)
19
+ DC_GLOBALS.include?(global_var)
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -1,130 +1,130 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module SketchUp
5
- module DynamicComponentMethods
6
-
7
- DC_METHODS = [
8
- {
9
- name: :rotx,
10
- path: 'Geom::Transformation',
11
- },
12
- {
13
- name: :roty,
14
- path: 'Geom::Transformation',
15
- },
16
- {
17
- name: :rotz,
18
- path: 'Geom::Transformation',
19
- },
20
- {
21
- name: :xscale,
22
- path: 'Geom::Transformation',
23
- },
24
- {
25
- name: :yscale,
26
- path: 'Geom::Transformation',
27
- },
28
- {
29
- name: :zscale,
30
- path: 'Geom::Transformation',
31
- },
32
-
33
- {
34
- name: :copy,
35
- path: 'Sketchup::Camera',
36
- variables: [:camera, :cam],
37
- },
38
- {
39
- name: :update,
40
- path: 'Sketchup::Camera',
41
- variables: [:camera, :cam],
42
- },
43
- {
44
- name: :same_camera_params?,
45
- path: 'Sketchup::Camera',
46
- },
47
-
48
- {
49
- name: :copy,
50
- path: 'Sketchup::ComponentInstance',
51
- variables: [:instance, :inst],
52
- },
53
- {
54
- name: :description,
55
- path: 'Sketchup::ComponentInstance',
56
- variables: [:instance, :inst],
57
- },
58
-
59
- {
60
- name: :local_transformation,
61
- path: 'Sketchup::Drawingelement',
62
- },
63
- {
64
- name: :scaled_size,
65
- path: 'Sketchup::Drawingelement',
66
- },
67
- {
68
- name: :unscaled_size,
69
- path: 'Sketchup::Drawingelement',
70
- },
71
- {
72
- name: :set_last_size,
73
- path: 'Sketchup::Drawingelement',
74
- },
75
- {
76
- name: :last_scaling_factors,
77
- path: 'Sketchup::Drawingelement',
78
- },
79
-
80
- {
81
- name: :get_attributes,
82
- path: 'Sketchup::Entity',
83
- },
84
- {
85
- name: :has_attributes?,
86
- path: 'Sketchup::Entity',
87
- },
88
-
89
- {
90
- name: :typename,
91
- path: 'Sketchup::Model',
92
- variables: [:model, :mod],
93
- },
94
- {
95
- name: :entityID,
96
- path: 'Sketchup::Model',
97
- variables: [:model, :mod],
98
- },
99
- {
100
- name: :delete_attribute,
101
- path: 'Sketchup::Model',
102
- variables: [:model, :mod],
103
- },
104
- {
105
- name: :layer,
106
- path: 'Sketchup::Model',
107
- variables: [:model, :mod],
108
- },
109
-
110
- {
111
- name: :last_width=,
112
- path: 'UI::WebDialog',
113
- },
114
- {
115
- name: :last_height=,
116
- path: 'UI::WebDialog',
117
- },
118
- {
119
- name: :last_width,
120
- path: 'UI::WebDialog',
121
- },
122
- {
123
- name: :last_height,
124
- path: 'UI::WebDialog',
125
- },
126
- ].freeze
127
-
128
- end
129
- end
130
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+ module DynamicComponentMethods
6
+
7
+ DC_METHODS = [
8
+ {
9
+ name: :rotx,
10
+ path: 'Geom::Transformation',
11
+ },
12
+ {
13
+ name: :roty,
14
+ path: 'Geom::Transformation',
15
+ },
16
+ {
17
+ name: :rotz,
18
+ path: 'Geom::Transformation',
19
+ },
20
+ {
21
+ name: :xscale,
22
+ path: 'Geom::Transformation',
23
+ },
24
+ {
25
+ name: :yscale,
26
+ path: 'Geom::Transformation',
27
+ },
28
+ {
29
+ name: :zscale,
30
+ path: 'Geom::Transformation',
31
+ },
32
+
33
+ {
34
+ name: :copy,
35
+ path: 'Sketchup::Camera',
36
+ variables: [:camera, :cam],
37
+ },
38
+ {
39
+ name: :update,
40
+ path: 'Sketchup::Camera',
41
+ variables: [:camera, :cam],
42
+ },
43
+ {
44
+ name: :same_camera_params?,
45
+ path: 'Sketchup::Camera',
46
+ },
47
+
48
+ {
49
+ name: :copy,
50
+ path: 'Sketchup::ComponentInstance',
51
+ variables: [:instance, :inst],
52
+ },
53
+ {
54
+ name: :description,
55
+ path: 'Sketchup::ComponentInstance',
56
+ variables: [:instance, :inst],
57
+ },
58
+
59
+ {
60
+ name: :local_transformation,
61
+ path: 'Sketchup::Drawingelement',
62
+ },
63
+ {
64
+ name: :scaled_size,
65
+ path: 'Sketchup::Drawingelement',
66
+ },
67
+ {
68
+ name: :unscaled_size,
69
+ path: 'Sketchup::Drawingelement',
70
+ },
71
+ {
72
+ name: :set_last_size,
73
+ path: 'Sketchup::Drawingelement',
74
+ },
75
+ {
76
+ name: :last_scaling_factors,
77
+ path: 'Sketchup::Drawingelement',
78
+ },
79
+
80
+ {
81
+ name: :get_attributes,
82
+ path: 'Sketchup::Entity',
83
+ },
84
+ {
85
+ name: :has_attributes?,
86
+ path: 'Sketchup::Entity',
87
+ },
88
+
89
+ {
90
+ name: :typename,
91
+ path: 'Sketchup::Model',
92
+ variables: [:model, :mod],
93
+ },
94
+ {
95
+ name: :entityID,
96
+ path: 'Sketchup::Model',
97
+ variables: [:model, :mod],
98
+ },
99
+ {
100
+ name: :delete_attribute,
101
+ path: 'Sketchup::Model',
102
+ variables: [:model, :mod],
103
+ },
104
+ {
105
+ name: :layer,
106
+ path: 'Sketchup::Model',
107
+ variables: [:model, :mod],
108
+ },
109
+
110
+ {
111
+ name: :last_width=,
112
+ path: 'UI::WebDialog',
113
+ },
114
+ {
115
+ name: :last_height=,
116
+ path: 'UI::WebDialog',
117
+ },
118
+ {
119
+ name: :last_width,
120
+ path: 'UI::WebDialog',
121
+ },
122
+ {
123
+ name: :last_height,
124
+ path: 'UI::WebDialog',
125
+ },
126
+ ].freeze
127
+
128
+ end
129
+ end
130
+ end
@@ -1,65 +1,65 @@
1
- # frozen_string_literal: true
2
-
3
- require 'pathname'
4
-
5
- module RuboCop
6
- module SketchUp
7
- module ExtensionProject
8
-
9
- include SketchUp::Config
10
-
11
- # @return [Pathname]
12
- def config_path
13
- path = config.instance_variable_get(:@loaded_path)
14
- if path
15
- Pathname.new(path).expand_path.dirname
16
- else
17
- Pathname.new(Dir.pwd).expand_path
18
- end
19
- end
20
-
21
- # @return [Pathname]
22
- def relative_source_path
23
- Pathname.new(extension_source_path_config)
24
- end
25
-
26
- # @return [Pathname]
27
- def source_path
28
- config_path.join(relative_source_path)
29
- end
30
-
31
- # @param [RuboCop::ProcessedSource] processed_source
32
- def path_relative_to_source(processed_source)
33
- source_filename = processed_source.buffer.name
34
- rel_path = config.path_relative_to_config(source_filename)
35
- path = Pathname.new(rel_path).expand_path
36
- path.relative_path_from(source_path)
37
- end
38
-
39
- # @param [RuboCop::ProcessedSource] processed_source
40
- def root_file?(processed_source)
41
- filename = path_relative_to_source(processed_source)
42
- filename.extname.casecmp('.rb').zero? &&
43
- filename.parent.to_s == '.'
44
- end
45
-
46
- def extension_root_files
47
- Dir.glob("#{source_path}/*.rb").map { |path| Pathname.new(path) }
48
- end
49
-
50
- def extension_root_file
51
- unless extension_root_files.size == 1
52
- num_files = extension_root_files.size
53
- raise "More than one root extension file (#{num_files})"
54
- end
55
-
56
- extension_root_files.first
57
- end
58
-
59
- def extension_directory
60
- extension_root_file.dirname
61
- end
62
-
63
- end
64
- end
65
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ module RuboCop
6
+ module SketchUp
7
+ module ExtensionProject
8
+
9
+ include SketchUp::Config
10
+
11
+ # @return [Pathname]
12
+ def config_path
13
+ path = config.instance_variable_get(:@loaded_path)
14
+ if path
15
+ Pathname.new(path).expand_path.dirname
16
+ else
17
+ Pathname.new(Dir.pwd).expand_path
18
+ end
19
+ end
20
+
21
+ # @return [Pathname]
22
+ def relative_source_path
23
+ Pathname.new(extension_source_path_config)
24
+ end
25
+
26
+ # @return [Pathname]
27
+ def source_path
28
+ config_path.join(relative_source_path)
29
+ end
30
+
31
+ # @param [RuboCop::ProcessedSource] processed_source
32
+ def path_relative_to_source(processed_source)
33
+ source_filename = processed_source.buffer.name
34
+ rel_path = config.path_relative_to_config(source_filename)
35
+ path = Pathname.new(rel_path).expand_path
36
+ path.relative_path_from(source_path)
37
+ end
38
+
39
+ # @param [RuboCop::ProcessedSource] processed_source
40
+ def root_file?(processed_source)
41
+ filename = path_relative_to_source(processed_source)
42
+ filename.extname.casecmp('.rb').zero? &&
43
+ filename.parent.to_s == '.'
44
+ end
45
+
46
+ def extension_root_files
47
+ Dir.glob("#{source_path}/*.rb").map { |path| Pathname.new(path) }
48
+ end
49
+
50
+ def extension_root_file
51
+ unless extension_root_files.size == 1
52
+ num_files = extension_root_files.size
53
+ raise "More than one root extension file (#{num_files})"
54
+ end
55
+
56
+ extension_root_files.first
57
+ end
58
+
59
+ def extension_directory
60
+ extension_root_file.dirname
61
+ end
62
+
63
+ end
64
+ end
65
+ end