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,61 +1,61 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupRequirements
6
- # Don't modify SketchUp's shipped extensions.
7
- class ShippedExtensionsNamespace < SketchUp::Cop
8
-
9
- include SketchUp::NoCommentDisable
10
- include SketchUp::NamespaceChecker
11
-
12
- MSG = 'Do not modify shipped extensions.'.freeze
13
-
14
- # We check only against the top level namespaces. The core define more
15
- # objects, but they are under one of the top level namespaces listed.
16
-
17
- NAMESPACES_ADVANCED_CAMERA_TOOLS = %w[
18
- ACTUtil
19
- CameraAppObserver
20
- CameraEntityObserver
21
- CameraFrameChangeObserver
22
- CameraRep
23
- CameraToolModelObserver
24
- CameraToolPagesObserver
25
- CameraToolViewObserver
26
- FilmCameraTool
27
- FSCameraData
28
- FSGeomUtils
29
- FSValidate
30
- PageNameChangeObserver
31
- ].freeze
32
-
33
- NAMESPACES_DYNAMIC_COMPONENTS = %w[
34
- DCConverter
35
- DCDownloader
36
- DCFunctionsV1
37
- DCInteractTool
38
- DCObservers
39
- DCProgressBar
40
- DynamicComponents
41
- DynamicComponentsV1
42
- ].freeze
43
-
44
- NAMESPACES_TRIMBLE_CONNECT = %w[
45
- Trimble
46
- ].freeze
47
-
48
- NAMESPACES = (
49
- NAMESPACES_ADVANCED_CAMERA_TOOLS |
50
- NAMESPACES_DYNAMIC_COMPONENTS |
51
- NAMESPACES_TRIMBLE_CONNECT
52
- ).freeze
53
-
54
- def namespaces
55
- NAMESPACES
56
- end
57
-
58
- end
59
- end
60
- end
61
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupRequirements
6
+ # Don't modify SketchUp's shipped extensions.
7
+ class ShippedExtensionsNamespace < SketchUp::Cop
8
+
9
+ include SketchUp::NoCommentDisable
10
+ include SketchUp::NamespaceChecker
11
+
12
+ MSG = 'Do not modify shipped extensions.'.freeze
13
+
14
+ # We check only against the top level namespaces. The core define more
15
+ # objects, but they are under one of the top level namespaces listed.
16
+
17
+ NAMESPACES_ADVANCED_CAMERA_TOOLS = %w[
18
+ ACTUtil
19
+ CameraAppObserver
20
+ CameraEntityObserver
21
+ CameraFrameChangeObserver
22
+ CameraRep
23
+ CameraToolModelObserver
24
+ CameraToolPagesObserver
25
+ CameraToolViewObserver
26
+ FilmCameraTool
27
+ FSCameraData
28
+ FSGeomUtils
29
+ FSValidate
30
+ PageNameChangeObserver
31
+ ].freeze
32
+
33
+ NAMESPACES_DYNAMIC_COMPONENTS = %w[
34
+ DCConverter
35
+ DCDownloader
36
+ DCFunctionsV1
37
+ DCInteractTool
38
+ DCObservers
39
+ DCProgressBar
40
+ DynamicComponents
41
+ DynamicComponentsV1
42
+ ].freeze
43
+
44
+ NAMESPACES_TRIMBLE_CONNECT = %w[
45
+ Trimble
46
+ ].freeze
47
+
48
+ NAMESPACES = (
49
+ NAMESPACES_ADVANCED_CAMERA_TOOLS |
50
+ NAMESPACES_DYNAMIC_COMPONENTS |
51
+ NAMESPACES_TRIMBLE_CONNECT
52
+ ).freeze
53
+
54
+ def namespaces
55
+ NAMESPACES
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
@@ -1,119 +1,119 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupRequirements
6
- # Register a single instance of SketchupExtension per extension.
7
- # This should be done by the root .rb file in the extension package.
8
- #
9
- # @example Good - a single SketchupExtension is registered.
10
- # module Example
11
- # unless file_loaded?(__FILE__)
12
- # extension = SketchupExtension.new('Hello World', 'example/main')
13
- # Sketchup.register_extension(extension, true)
14
- # file_loaded(__FILE__)
15
- # end
16
- # end
17
- class SketchupExtension < SketchUp::Cop
18
-
19
- include SketchUp::NoCommentDisable
20
- include SketchUp::ExtensionProject
21
- include RangeHelp
22
-
23
- # rubocop:disable Metrics/LineLength
24
- MSG = 'Create and register one SketchupExtension instance per extension.'.freeze
25
- MSG_CREATE_ONE = 'Create only SketchupExtension instance per extension.'.freeze
26
- MSG_CREATE_MISSING = 'SketchupExtension.new not found.'.freeze
27
- MSG_REGISTER_ONE = 'Only register one SketchupExtension instance per extension.'.freeze
28
- MSG_REGISTER_MISSING = 'Registration of SketchupExtension not found. Expected %s'.freeze
29
- # rubocop:enable Metrics/LineLength
30
-
31
- # Reference: http://rubocop.readthedocs.io/en/latest/node_pattern/
32
- def_node_search :sketchup_extension_new, <<-PATTERN
33
- (send
34
- (const nil? :SketchupExtension) :new ...)
35
- PATTERN
36
-
37
- def_node_search :sketchup_register_extension, <<-PATTERN
38
- (send
39
- (const nil? :Sketchup) :register_extension
40
- {({lvar ivar cvar gvar} $_)(const nil? $_)}
41
- _)
42
- PATTERN
43
-
44
- def investigate(processed_source)
45
- return unless root_file?(processed_source)
46
-
47
- source_node = processed_source.ast
48
- # Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
49
- range = source_range(processed_source.buffer, 1, 0)
50
-
51
- # Look for SketchupExtension.new.
52
- extension_nodes = sketchup_extension_new(source_node).to_a
53
-
54
- # Threat instances not assigned to anything as non-existing.
55
- extension_nodes.select! { |node|
56
- node.parent && node.parent.assignment?
57
- }
58
-
59
- # There should not be multiple instances.
60
- if extension_nodes.size > 1
61
- add_offense(nil,
62
- location: range,
63
- message: MSG_CREATE_ONE)
64
- return
65
- end
66
-
67
- # There should be exactly one.
68
- extension_node = extension_nodes.first
69
- if extension_node.nil?
70
- add_offense(nil,
71
- location: range,
72
- message: MSG_CREATE_MISSING)
73
- return
74
- end
75
-
76
- # Ensure it have two arguments.
77
- if extension_node.arguments.size < 2
78
- message = if extension_node.arguments.size == 1
79
- 'Missing second argument for the path'
80
- else
81
- 'Missing required name arguments'
82
- end
83
- add_offense(extension_node,
84
- message: message)
85
- return
86
- end
87
-
88
- # Find the name of the value SketchupExtension.new was assigned to.
89
- assignment_node = extension_node.parent
90
- if assignment_node.casgn_type?
91
- extension_var = assignment_node.to_a[1]
92
- else
93
- extension_var = assignment_node.to_a[0]
94
- end
95
-
96
- # Look for Sketchup.register and make sure it register the extension
97
- # object detected earlier.
98
- registered_vars = sketchup_register_extension(source_node).to_a
99
-
100
- # Make sure there is only one call to `register_extension`.
101
- if registered_vars.size > 1
102
- add_offense(registered_vars[1],
103
- message: MSG_REGISTER_ONE)
104
- return
105
- end
106
-
107
- registered_var = sketchup_register_extension(source_node).first
108
- unless registered_var == extension_var
109
- msg = MSG_REGISTER_MISSING % extension_var.to_s
110
- add_offense(nil,
111
- location: range,
112
- message: msg)
113
- end
114
- end
115
-
116
- end
117
- end
118
- end
119
- end
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupRequirements
6
+ # Register a single instance of SketchupExtension per extension.
7
+ # This should be done by the root .rb file in the extension package.
8
+ #
9
+ # @example Good - a single SketchupExtension is registered.
10
+ # module Example
11
+ # unless file_loaded?(__FILE__)
12
+ # extension = SketchupExtension.new('Hello World', 'example/main')
13
+ # Sketchup.register_extension(extension, true)
14
+ # file_loaded(__FILE__)
15
+ # end
16
+ # end
17
+ class SketchupExtension < SketchUp::Cop
18
+
19
+ include SketchUp::NoCommentDisable
20
+ include SketchUp::ExtensionProject
21
+ include RangeHelp
22
+
23
+ # rubocop:disable Metrics/LineLength
24
+ MSG = 'Create and register one SketchupExtension instance per extension.'.freeze
25
+ MSG_CREATE_ONE = 'Create only SketchupExtension instance per extension.'.freeze
26
+ MSG_CREATE_MISSING = 'SketchupExtension.new not found.'.freeze
27
+ MSG_REGISTER_ONE = 'Only register one SketchupExtension instance per extension.'.freeze
28
+ MSG_REGISTER_MISSING = 'Registration of SketchupExtension not found. Expected %s'.freeze
29
+ # rubocop:enable Metrics/LineLength
30
+
31
+ # Reference: http://rubocop.readthedocs.io/en/latest/node_pattern/
32
+ def_node_search :sketchup_extension_new, <<-PATTERN
33
+ (send
34
+ (const nil? :SketchupExtension) :new ...)
35
+ PATTERN
36
+
37
+ def_node_search :sketchup_register_extension, <<-PATTERN
38
+ (send
39
+ (const nil? :Sketchup) :register_extension
40
+ {({lvar ivar cvar gvar} $_)(const nil? $_)}
41
+ _)
42
+ PATTERN
43
+
44
+ def investigate(processed_source)
45
+ return unless root_file?(processed_source)
46
+
47
+ source_node = processed_source.ast
48
+ # Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
49
+ range = source_range(processed_source.buffer, 1, 0)
50
+
51
+ # Look for SketchupExtension.new.
52
+ extension_nodes = sketchup_extension_new(source_node).to_a
53
+
54
+ # Threat instances not assigned to anything as non-existing.
55
+ extension_nodes.select! { |node|
56
+ node.parent && node.parent.assignment?
57
+ }
58
+
59
+ # There should not be multiple instances.
60
+ if extension_nodes.size > 1
61
+ add_offense(nil,
62
+ location: range,
63
+ message: MSG_CREATE_ONE)
64
+ return
65
+ end
66
+
67
+ # There should be exactly one.
68
+ extension_node = extension_nodes.first
69
+ if extension_node.nil?
70
+ add_offense(nil,
71
+ location: range,
72
+ message: MSG_CREATE_MISSING)
73
+ return
74
+ end
75
+
76
+ # Ensure it have two arguments.
77
+ if extension_node.arguments.size < 2
78
+ message = if extension_node.arguments.size == 1
79
+ 'Missing second argument for the path'
80
+ else
81
+ 'Missing required name arguments'
82
+ end
83
+ add_offense(extension_node,
84
+ message: message)
85
+ return
86
+ end
87
+
88
+ # Find the name of the value SketchupExtension.new was assigned to.
89
+ assignment_node = extension_node.parent
90
+ if assignment_node.casgn_type?
91
+ extension_var = assignment_node.to_a[1]
92
+ else
93
+ extension_var = assignment_node.to_a[0]
94
+ end
95
+
96
+ # Look for Sketchup.register and make sure it register the extension
97
+ # object detected earlier.
98
+ registered_vars = sketchup_register_extension(source_node).to_a
99
+
100
+ # Make sure there is only one call to `register_extension`.
101
+ if registered_vars.size > 1
102
+ add_offense(registered_vars[1],
103
+ message: MSG_REGISTER_ONE)
104
+ return
105
+ end
106
+
107
+ registered_var = sketchup_register_extension(source_node).first
108
+ unless registered_var == extension_var
109
+ msg = MSG_REGISTER_MISSING % extension_var.to_s
110
+ add_offense(nil,
111
+ location: range,
112
+ message: msg)
113
+ end
114
+ end
115
+
116
+ end
117
+ end
118
+ end
119
+ end