rubocop-sketchup 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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