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,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