rubocop-sketchup 0.4.1 → 0.5.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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -1
  3. data/assets/logo.png +0 -0
  4. data/assets/output.html.erb +301 -0
  5. data/config/default.yml +141 -36
  6. data/lib/rubocop/sketchup/config.rb +28 -8
  7. data/lib/rubocop/sketchup/cop/deprecations/add_separator_to_menu.rb +4 -1
  8. data/lib/rubocop/sketchup/cop/deprecations/operation_next_transparent.rb +11 -2
  9. data/lib/rubocop/sketchup/cop/deprecations/require_all.rb +7 -2
  10. data/lib/rubocop/sketchup/cop/deprecations/set_texture_projection.rb +6 -2
  11. data/lib/rubocop/sketchup/cop/deprecations/show_ruby_panel.rb +4 -1
  12. data/lib/rubocop/sketchup/cop/deprecations/sketchup_set.rb +8 -0
  13. data/lib/rubocop/sketchup/cop/performance/openssl.rb +5 -3
  14. data/lib/rubocop/sketchup/cop/performance/operation_disable_ui.rb +10 -2
  15. data/lib/rubocop/sketchup/cop/performance/selection_bulk.rb +11 -4
  16. data/lib/rubocop/sketchup/cop/performance/type_check.rb +63 -0
  17. data/lib/rubocop/sketchup/cop/performance/typename.rb +6 -1
  18. data/lib/rubocop/sketchup/cop/requirements/api_namespace.rb +8 -2
  19. data/lib/rubocop/sketchup/cop/requirements/exit.rb +7 -3
  20. data/lib/rubocop/sketchup/cop/requirements/extension_namespace.rb +32 -2
  21. data/lib/rubocop/sketchup/cop/requirements/file_structure.rb +22 -10
  22. data/lib/rubocop/sketchup/cop/requirements/gem_install.rb +45 -0
  23. data/lib/rubocop/sketchup/cop/requirements/get_extension_license.rb +95 -0
  24. data/lib/rubocop/sketchup/cop/requirements/global_constants.rb +10 -1
  25. data/lib/rubocop/sketchup/cop/requirements/global_include.rb +9 -2
  26. data/lib/rubocop/sketchup/cop/requirements/global_methods.rb +10 -1
  27. data/lib/rubocop/sketchup/cop/requirements/global_variables.rb +13 -4
  28. data/lib/rubocop/sketchup/cop/requirements/language_handler_globals.rb +6 -4
  29. data/lib/rubocop/sketchup/cop/requirements/load_path.rb +9 -6
  30. data/lib/rubocop/sketchup/cop/requirements/minimal_registration.rb +26 -2
  31. data/lib/rubocop/sketchup/cop/requirements/observers_start_operation.rb +28 -2
  32. data/lib/rubocop/sketchup/cop/requirements/register_extension.rb +12 -2
  33. data/lib/rubocop/sketchup/cop/requirements/ruby_core_namespace.rb +14 -8
  34. data/lib/rubocop/sketchup/cop/requirements/ruby_stdlib_namespace.rb +594 -588
  35. data/lib/rubocop/sketchup/cop/requirements/shipped_extensions_namespace.rb +6 -6
  36. data/lib/rubocop/sketchup/cop/requirements/sketchup_extension.rb +28 -9
  37. data/lib/rubocop/sketchup/cop/requirements/sketchup_require.rb +163 -0
  38. data/lib/rubocop/sketchup/cop/suggestions/add_group.rb +49 -0
  39. data/lib/rubocop/sketchup/cop/suggestions/compatibility.rb +35 -6
  40. data/lib/rubocop/sketchup/cop/suggestions/dc_internals.rb +6 -3
  41. data/lib/rubocop/sketchup/cop/suggestions/file_encoding.rb +3 -0
  42. data/lib/rubocop/sketchup/cop/suggestions/model_entities.rb +9 -2
  43. data/lib/rubocop/sketchup/cop/suggestions/monkey_patched_api.rb +5 -1
  44. data/lib/rubocop/sketchup/cop/suggestions/operation_name.rb +20 -9
  45. data/lib/rubocop/sketchup/cop/suggestions/sketchup_find_support_file.rb +13 -2
  46. data/lib/rubocop/sketchup/cop/suggestions/tool_drawing_bounds.rb +44 -0
  47. data/lib/rubocop/sketchup/cop/suggestions/tool_invalidate.rb +66 -0
  48. data/lib/rubocop/sketchup/cop/suggestions/tool_user_input.rb +41 -0
  49. data/lib/rubocop/sketchup/cop/suggestions/toolbar_timer.rb +65 -0
  50. data/lib/rubocop/sketchup/cop.rb +38 -18
  51. data/lib/rubocop/sketchup/dc_globals.rb +1 -1
  52. data/lib/rubocop/sketchup/dc_methods.rb +27 -27
  53. data/lib/rubocop/sketchup/extension_project.rb +19 -2
  54. data/lib/rubocop/sketchup/formatter/extension_review.rb +35 -15
  55. data/lib/rubocop/sketchup/inject.rb +1 -1
  56. data/lib/rubocop/sketchup/namespace.rb +1 -0
  57. data/lib/rubocop/sketchup/namespace_checker.rb +4 -1
  58. data/lib/rubocop/sketchup/no_comment_disable.rb +1 -1
  59. data/lib/rubocop/sketchup/range_help.rb +52 -0
  60. data/lib/rubocop/sketchup/sketchup_version.rb +4 -2
  61. data/lib/rubocop/sketchup/tool_checker.rb +43 -0
  62. data/lib/rubocop/sketchup/version.rb +1 -1
  63. data/lib/rubocop/sketchup.rb +1 -1
  64. data/lib/rubocop-sketchup.rb +9 -0
  65. data/rubocop-sketchup.gemspec +8 -11
  66. metadata +18 -6
  67. data/lib/rubocop/sketchup/cop/suggestions/sketchup_require.rb +0 -67
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module SketchUp
5
+ module ToolChecker
6
+
7
+ def on_class(node)
8
+ name, _base_class, body = *node
9
+ return unless name.const_name.end_with?('Tool')
10
+
11
+ check_body(body, node)
12
+ end
13
+
14
+ private
15
+
16
+ # rubocop:disable Lint/UnusedMethodArgument
17
+ def on_tool_class(class_node, body, body_methods)
18
+ raise NotImplementedError, 'Implement this method'
19
+ end
20
+ # rubocop:enable Lint/UnusedMethodArgument
21
+
22
+ def body_methods(body)
23
+ return [body] if body.def_type?
24
+ return unless body.begin_type?
25
+
26
+ body.each_child_node(:def)
27
+ end
28
+
29
+ def check_body(body, class_node)
30
+ return if body.nil? # Empty class etc.
31
+
32
+ body_methods = body_methods(body)
33
+
34
+ on_tool_class(class_node, body_methods)
35
+ end
36
+
37
+ def find_method(defs, method_name)
38
+ defs.find { |def_node| def_node.method?(method_name) }
39
+ end
40
+
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,5 @@
1
1
  module RuboCop
2
2
  module SketchUp
3
- VERSION = '0.4.1'
3
+ VERSION = '0.5.0'.freeze
4
4
  end
5
5
  end
@@ -9,4 +9,4 @@ module RuboCop
9
9
 
10
10
  private_constant(:CONFIG_DEFAULT, :PROJECT_ROOT)
11
11
  end
12
- end
12
+ end
@@ -13,7 +13,9 @@ require 'rubocop/sketchup/features'
13
13
  require 'rubocop/sketchup/namespace'
14
14
  require 'rubocop/sketchup/namespace_checker'
15
15
  require 'rubocop/sketchup/no_comment_disable'
16
+ require 'rubocop/sketchup/range_help'
16
17
  require 'rubocop/sketchup/sketchup_version'
18
+ require 'rubocop/sketchup/tool_checker'
17
19
 
18
20
  RuboCop::SketchUp::Inject.defaults!
19
21
 
@@ -32,6 +34,13 @@ class RuboCop::Formatter::FormatterSet
32
34
  end
33
35
  end
34
36
 
37
+ # Make it easier to explore available methods on a method.
38
+ class Object
39
+ def methods!
40
+ methods.sort - Object.class.instance_methods
41
+ end
42
+ end
43
+
35
44
  # Load all custom cops.
36
45
  pattern = File.join(__dir__, 'rubocop', 'sketchup', 'cop', '**/*rb')
37
46
  Dir.glob(pattern) { |file|
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
1
+ $LOAD_PATH.unshift File.expand_path('lib', __dir__)
4
2
  require 'rubocop/sketchup/version'
5
3
 
6
4
  Gem::Specification.new do |spec|
@@ -13,18 +11,17 @@ Gem::Specification.new do |spec|
13
11
 
14
12
  spec.version = RuboCop::SketchUp::VERSION
15
13
  spec.platform = Gem::Platform::RUBY
16
- spec.required_ruby_version = '>= 2.1.0'
14
+ spec.required_ruby_version = '>= 2.2.0'
17
15
 
18
16
  spec.require_paths = ['lib']
19
17
  spec.files = Dir[
20
- 'config/**/*',
21
- 'lib/**/*',
22
- '*.gemspec',
23
- 'Gemfile'
18
+ 'assets/**/*',
19
+ 'config/**/*',
20
+ 'lib/**/*',
21
+ '*.gemspec',
22
+ 'Gemfile'
24
23
  ]
25
24
 
26
- # NOTE: Remember to update the README.md instructions on how to install
27
- # compatible RuboCop version.
28
- spec.add_dependency 'rubocop', '~> 0.58.1'
25
+ spec.add_dependency 'rubocop', '~> 0.59.2'
29
26
  spec.add_development_dependency 'bundler', '~> 1.13'
30
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-sketchup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trimble Inc, SketchUp Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-14 00:00:00.000000000 Z
11
+ date: 2018-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.58.1
19
+ version: 0.59.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.58.1
26
+ version: 0.59.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -45,6 +45,8 @@ extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
47
  - Gemfile
48
+ - assets/logo.png
49
+ - assets/output.html.erb
48
50
  - config/default.yml
49
51
  - lib/rubocop-sketchup.rb
50
52
  - lib/rubocop/sketchup.rb
@@ -59,11 +61,14 @@ files:
59
61
  - lib/rubocop/sketchup/cop/performance/openssl.rb
60
62
  - lib/rubocop/sketchup/cop/performance/operation_disable_ui.rb
61
63
  - lib/rubocop/sketchup/cop/performance/selection_bulk.rb
64
+ - lib/rubocop/sketchup/cop/performance/type_check.rb
62
65
  - lib/rubocop/sketchup/cop/performance/typename.rb
63
66
  - lib/rubocop/sketchup/cop/requirements/api_namespace.rb
64
67
  - lib/rubocop/sketchup/cop/requirements/exit.rb
65
68
  - lib/rubocop/sketchup/cop/requirements/extension_namespace.rb
66
69
  - lib/rubocop/sketchup/cop/requirements/file_structure.rb
70
+ - lib/rubocop/sketchup/cop/requirements/gem_install.rb
71
+ - lib/rubocop/sketchup/cop/requirements/get_extension_license.rb
67
72
  - lib/rubocop/sketchup/cop/requirements/global_constants.rb
68
73
  - lib/rubocop/sketchup/cop/requirements/global_include.rb
69
74
  - lib/rubocop/sketchup/cop/requirements/global_methods.rb
@@ -77,6 +82,8 @@ files:
77
82
  - lib/rubocop/sketchup/cop/requirements/ruby_stdlib_namespace.rb
78
83
  - lib/rubocop/sketchup/cop/requirements/shipped_extensions_namespace.rb
79
84
  - lib/rubocop/sketchup/cop/requirements/sketchup_extension.rb
85
+ - lib/rubocop/sketchup/cop/requirements/sketchup_require.rb
86
+ - lib/rubocop/sketchup/cop/suggestions/add_group.rb
80
87
  - lib/rubocop/sketchup/cop/suggestions/compatibility.rb
81
88
  - lib/rubocop/sketchup/cop/suggestions/dc_internals.rb
82
89
  - lib/rubocop/sketchup/cop/suggestions/file_encoding.rb
@@ -84,7 +91,10 @@ files:
84
91
  - lib/rubocop/sketchup/cop/suggestions/monkey_patched_api.rb
85
92
  - lib/rubocop/sketchup/cop/suggestions/operation_name.rb
86
93
  - lib/rubocop/sketchup/cop/suggestions/sketchup_find_support_file.rb
87
- - lib/rubocop/sketchup/cop/suggestions/sketchup_require.rb
94
+ - lib/rubocop/sketchup/cop/suggestions/tool_drawing_bounds.rb
95
+ - lib/rubocop/sketchup/cop/suggestions/tool_invalidate.rb
96
+ - lib/rubocop/sketchup/cop/suggestions/tool_user_input.rb
97
+ - lib/rubocop/sketchup/cop/suggestions/toolbar_timer.rb
88
98
  - lib/rubocop/sketchup/dc_globals.rb
89
99
  - lib/rubocop/sketchup/dc_methods.rb
90
100
  - lib/rubocop/sketchup/extension_project.rb
@@ -94,7 +104,9 @@ files:
94
104
  - lib/rubocop/sketchup/namespace.rb
95
105
  - lib/rubocop/sketchup/namespace_checker.rb
96
106
  - lib/rubocop/sketchup/no_comment_disable.rb
107
+ - lib/rubocop/sketchup/range_help.rb
97
108
  - lib/rubocop/sketchup/sketchup_version.rb
109
+ - lib/rubocop/sketchup/tool_checker.rb
98
110
  - lib/rubocop/sketchup/version.rb
99
111
  - rubocop-sketchup.gemspec
100
112
  homepage: http://github.com/sketchup/rubocop-sketchup
@@ -109,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
121
  requirements:
110
122
  - - ">="
111
123
  - !ruby/object:Gem::Version
112
- version: 2.1.0
124
+ version: 2.2.0
113
125
  required_rubygems_version: !ruby/object:Gem::Requirement
114
126
  requirements:
115
127
  - - ">="
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupSuggestions
6
- # Omit file extensions when using Sketchup.require to allow encrypted
7
- # files to be loaded.
8
- class SketchupRequire < SketchUp::Cop
9
-
10
- MSG = "Don't hard code file extensions with Sketchup.require".freeze
11
-
12
- # http://www.rubydoc.info/gems/rubocop/RuboCop/NodePattern
13
- # https://rubocop.readthedocs.io/en/latest/node_pattern/
14
- def_node_matcher :sketchup_require, <<-PATTERN
15
- (send
16
- (const nil? :Sketchup) :require
17
- (str $_)
18
- )
19
- PATTERN
20
-
21
- def_node_matcher :sketchup_require?, <<-PATTERN
22
- (send
23
- (const nil? :Sketchup) :require
24
- (str _)
25
- )
26
- PATTERN
27
-
28
-
29
- def_node_matcher :sketchup_extension_new, <<-PATTERN
30
- (send
31
- (const nil? :SketchupExtension) :new
32
- _
33
- (str $_))
34
- PATTERN
35
-
36
- def_node_matcher :sketchup_extension_new?, <<-PATTERN
37
- (send
38
- (const nil? :SketchupExtension) :new
39
- _
40
- (str _))
41
- PATTERN
42
-
43
-
44
- TOOLS_RUBY_FILES = %w[extensions.rb langhandler.rb sketchup.rb]
45
-
46
-
47
- def on_send(node)
48
- if sketchup_require?(node)
49
- filename = sketchup_require(node)
50
- elsif sketchup_extension_new?(node)
51
- filename = sketchup_extension_new(node)
52
- else
53
- return
54
- end
55
- add_offense(node, location: :expression) unless valid_filename?(filename)
56
- end
57
-
58
- private
59
-
60
- def valid_filename?(filename)
61
- File.extname(filename).empty? || TOOLS_RUBY_FILES.include?(filename)
62
- end
63
-
64
- end
65
- end
66
- end
67
- end