rubocop-sketchup 0.3.0 → 0.3.1

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 (43) hide show
  1. checksums.yaml +5 -5
  2. data/config/default.yml +8 -0
  3. data/lib/rubocop-sketchup.rb +2 -1
  4. data/lib/rubocop/sketchup/config.rb +1 -1
  5. data/lib/rubocop/sketchup/cop.rb +91 -0
  6. data/lib/rubocop/sketchup/{deprecations → cop/deprecations}/add_separator_to_menu.rb +1 -1
  7. data/lib/rubocop/sketchup/{deprecations → cop/deprecations}/operation_next_transparent.rb +1 -1
  8. data/lib/rubocop/sketchup/{deprecations → cop/deprecations}/require_all.rb +1 -1
  9. data/lib/rubocop/sketchup/{deprecations → cop/deprecations}/set_texture_projection.rb +1 -1
  10. data/lib/rubocop/sketchup/{deprecations → cop/deprecations}/show_ruby_panel.rb +1 -1
  11. data/lib/rubocop/sketchup/{deprecations → cop/deprecations}/sketchup_set.rb +1 -1
  12. data/lib/rubocop/sketchup/{performance → cop/performance}/openssl.rb +1 -1
  13. data/lib/rubocop/sketchup/{performance → cop/performance}/operation_disable_ui.rb +1 -1
  14. data/lib/rubocop/sketchup/{performance → cop/performance}/selection_bulk.rb +1 -1
  15. data/lib/rubocop/sketchup/{performance → cop/performance}/typename.rb +1 -1
  16. data/lib/rubocop/sketchup/{requirements → cop/requirements}/api_namespace.rb +1 -1
  17. data/lib/rubocop/sketchup/{requirements → cop/requirements}/exit.rb +1 -1
  18. data/lib/rubocop/sketchup/{requirements → cop/requirements}/extension_namespace.rb +4 -4
  19. data/lib/rubocop/sketchup/{requirements → cop/requirements}/file_structure.rb +1 -1
  20. data/lib/rubocop/sketchup/{requirements → cop/requirements}/global_constants.rb +1 -1
  21. data/lib/rubocop/sketchup/{requirements → cop/requirements}/global_include.rb +1 -1
  22. data/lib/rubocop/sketchup/{requirements → cop/requirements}/global_methods.rb +1 -1
  23. data/lib/rubocop/sketchup/{requirements → cop/requirements}/global_variables.rb +1 -1
  24. data/lib/rubocop/sketchup/{requirements → cop/requirements}/language_handler_globals.rb +1 -1
  25. data/lib/rubocop/sketchup/{requirements → cop/requirements}/load_path.rb +1 -1
  26. data/lib/rubocop/sketchup/{requirements → cop/requirements}/minimal_registration.rb +5 -4
  27. data/lib/rubocop/sketchup/{requirements → cop/requirements}/observers_start_operation.rb +1 -1
  28. data/lib/rubocop/sketchup/{requirements → cop/requirements}/register_extension.rb +1 -1
  29. data/lib/rubocop/sketchup/{requirements → cop/requirements}/ruby_core_namespace.rb +1 -1
  30. data/lib/rubocop/sketchup/{requirements → cop/requirements}/ruby_stdlib_namespace.rb +1 -1
  31. data/lib/rubocop/sketchup/{requirements → cop/requirements}/shipped_extensions_namespace.rb +1 -1
  32. data/lib/rubocop/sketchup/{requirements → cop/requirements}/sketchup_extension.rb +1 -1
  33. data/lib/rubocop/sketchup/{suggestions → cop/suggestions}/compatibility.rb +1 -2
  34. data/lib/rubocop/sketchup/{suggestions → cop/suggestions}/dc_internals.rb +1 -1
  35. data/lib/rubocop/sketchup/{suggestions → cop/suggestions}/file_encoding.rb +1 -1
  36. data/lib/rubocop/sketchup/cop/suggestions/model_entities.rb +51 -0
  37. data/lib/rubocop/sketchup/{suggestions → cop/suggestions}/monkey_patched_api.rb +1 -1
  38. data/lib/rubocop/sketchup/{suggestions → cop/suggestions}/operation_name.rb +1 -1
  39. data/lib/rubocop/sketchup/{suggestions → cop/suggestions}/sketchup_find_support_file.rb +1 -1
  40. data/lib/rubocop/sketchup/{suggestions → cop/suggestions}/sketchup_require.rb +5 -2
  41. data/lib/rubocop/sketchup/version.rb +1 -1
  42. metadata +39 -38
  43. data/lib/rubocop/sketchup/suggestions/model_entities.rb +0 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9e87c5eb2f0e9d6ebeeac8f7b83686e40eb5357f
4
- data.tar.gz: 51f64f97d094f38df5a730aa22677dcda3741617
2
+ SHA256:
3
+ metadata.gz: f55bf3e2f4a93cec9b94539d6d4bcf713e962666975c92706ff64b2c3ba26819
4
+ data.tar.gz: 49784ee3c8506b69c3d9f2ff15166d2e53a169a5186e33bdd0bcd4e40b5b11ca
5
5
  SHA512:
6
- metadata.gz: bc99a7230d75286b26ae86c6029458782b53b7ad841fa2863ee762ffaa4731a91122cc57361768b9201f9f6bc98da202e693c106f5bd31f8a68d02df4b119f04
7
- data.tar.gz: e0b6b2b2f2a7fb8117f1e20830d4d56b3cb9667530012b13e0580c30f779d26eacd4b8dc20533a3ac668682163cde24785ba10966fe8cf71a87f0432c9334c2c
6
+ metadata.gz: 1bb0cd01b560f10d367adb0b8656be78f8db47bd73d3ce21fb2128194deacf791764a9cda0707e7c15c366a5194f5476315b39278753c755333a4549bc51e1b6
7
+ data.tar.gz: acedfe0376819dce12bcb722093659d2214bc965c44f46dcd4cef0aa7d7c9cfd8109be83c913dce6292caa8956b6f9e5172a1b14566313eba0ecd02a9c56ff84
data/config/default.yml CHANGED
@@ -3,6 +3,14 @@ AllCops:
3
3
  SketchUp:
4
4
  SourcePath: src
5
5
  TargetSketchUpVersion: 2016
6
+ SketchupDeprecations:
7
+ Exclude: []
8
+ SketchupPerformance:
9
+ Exclude: []
10
+ SketchupRequirements:
11
+ Exclude: []
12
+ SketchupSuggestions:
13
+ Exclude: []
6
14
 
7
15
  SketchupDeprecations/AddSeparatorToMenu:
8
16
  Description: The method `add_separator_to_menu` is deprecated.
@@ -5,6 +5,7 @@ require 'rubocop/sketchup/inject'
5
5
 
6
6
  require 'rubocop/sketchup/formatter/extension_review'
7
7
  require 'rubocop/sketchup/config'
8
+ require 'rubocop/sketchup/cop'
8
9
  require 'rubocop/sketchup/dc_globals'
9
10
  require 'rubocop/sketchup/dc_methods'
10
11
  require 'rubocop/sketchup/extension_project'
@@ -32,7 +33,7 @@ class RuboCop::Formatter::FormatterSet
32
33
  end
33
34
 
34
35
  # Load all custom cops.
35
- pattern = File.join(__dir__, 'rubocop', 'sketchup', '**/*rb')
36
+ pattern = File.join(__dir__, 'rubocop', 'sketchup', 'cop', '**/*rb')
36
37
  Dir.glob(pattern) { |file|
37
38
  require file
38
39
  }
@@ -5,7 +5,7 @@ module RuboCop
5
5
  module Config
6
6
 
7
7
  DEFAULT_CONFIGURATION =
8
- RuboCop::SketchUp::CONFIG.fetch('AllCops').fetch('SketchUp')
8
+ SketchUp::CONFIG.fetch('AllCops').fetch('SketchUp')
9
9
 
10
10
  private
11
11
 
@@ -0,0 +1,91 @@
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 department_name
57
+ self.class.department.to_s
58
+ end
59
+
60
+ def relevant_rubocop_sketchup_file?(file)
61
+ !(department_exclude_pattern =~ file)
62
+ end
63
+
64
+ def department_exclude_pattern
65
+ if department_exclude_config?
66
+ patterns = department_exclude_config.map(&Regexp.public_method(:new))
67
+ Regexp.union(patterns)
68
+ else
69
+ DEFAULT_CONFIGURATION
70
+ .fetch(department_name)
71
+ .fetch('Exclude')
72
+ .map(&Regexp.public_method(:new))
73
+ end
74
+ end
75
+
76
+ def department_exclude_config?
77
+ return false unless all_cops_config.key?('SketchUp')
78
+ sketchup_config = all_cops_config.fetch('SketchUp')
79
+ return false unless sketchup_config.key?(department_name)
80
+ sketchup_config.fetch(department_name).key?('Exclude')
81
+ end
82
+
83
+ def department_exclude_config
84
+ sketchup_cops_config
85
+ .fetch(department_name)
86
+ .fetch('Exclude')
87
+ end
88
+
89
+ end
90
+ end
91
+ end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupDeprecations
6
- class AddSeparatorToMenu < Cop
6
+ class AddSeparatorToMenu < SketchUp::Cop
7
7
 
8
8
  MSG = 'Method is deprecated.'.freeze
9
9
 
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Cop
5
5
  module SketchupDeprecations
6
6
  # Weak warning. (Question?)
7
- class OperationNextTransparent < Cop
7
+ class OperationNextTransparent < SketchUp::Cop
8
8
  MSG = 'Third argument is deprecated.'.freeze
9
9
 
10
10
  def on_send(node)
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupDeprecations
6
- class RequireAll < Cop
6
+ class RequireAll < SketchUp::Cop
7
7
 
8
8
  MSG = 'Method is deprecated because it adds the given path to $LOAD_PATH.'.freeze
9
9
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupDeprecations
6
- class SetTextureProjection < Cop
6
+ class SetTextureProjection < SketchUp::Cop
7
7
 
8
8
  MSG = 'Method is deprecated. It creates invalid UV mapping.'.freeze
9
9
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupDeprecations
6
- class ShowRubyPanel < Cop
6
+ class ShowRubyPanel < SketchUp::Cop
7
7
 
8
8
  MSG = 'Method is deprecated. Use `SKETCHUP_CONSOLE.show` instead.'.freeze
9
9
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupDeprecations
6
- class SketchupSet < Cop
6
+ class SketchupSet < SketchUp::Cop
7
7
 
8
8
  MSG = 'Class is deprecated.'.freeze
9
9
 
@@ -13,7 +13,7 @@ module RuboCop
13
13
  # `SecureRandom` is also affected by this, as it uses OpenSSL to seed.
14
14
  #
15
15
  # It also affects Net::HTTP if making HTTPS connections.
16
- class OpenSSL < Cop
16
+ class OpenSSL < SketchUp::Cop
17
17
 
18
18
  MSG = 'Avoid use of OpenSSL within SketchUp due to severe performance issues.'.freeze
19
19
 
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Cop
5
5
  module SketchupPerformance
6
6
  # Weak warning. (Question?)
7
- class OperationDisableUI < Cop
7
+ class OperationDisableUI < SketchUp::Cop
8
8
  MSG = 'Operations should disable the UI for performance gain.'.freeze
9
9
 
10
10
  def on_send(node)
@@ -23,7 +23,7 @@ module RuboCop
23
23
  # model = Sketchup.active_model
24
24
  # faces = model.active_entities.grep(Sketchup::Face)
25
25
  # model.selection.add(faces)
26
- class SelectionBulkChanges < Cop
26
+ class SelectionBulkChanges < SketchUp::Cop
27
27
  MSG = 'Avoid modifying selecting within loops.'.freeze
28
28
 
29
29
  # http://www.rubydoc.info/gems/rubocop/RuboCop/NodePattern
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupPerformance
6
- class Typename < Cop
6
+ class Typename < SketchUp::Cop
7
7
  MSG = '`.typename` is very slow, prefer `.is_a?` instead.'.freeze
8
8
 
9
9
  def on_send(node)
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class ApiNamespace < Cop
6
+ class ApiNamespace < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
  include SketchUp::NamespaceChecker
@@ -8,7 +8,7 @@ module RuboCop
8
8
  # console. But `exit!` is not trapped and with terminate SketchUp without
9
9
  # shutting down cleanly.
10
10
  # Use `return`, `next` or `break` instead.
11
- class Exit < Cop
11
+ class Exit < SketchUp::Cop
12
12
 
13
13
  include SketchUp::NoCommentDisable
14
14
 
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubocop/sketchup/requirements/api_namespace'
4
- require 'rubocop/sketchup/requirements/ruby_core_namespace'
5
- require 'rubocop/sketchup/requirements/ruby_stdlib_namespace'
3
+ require 'rubocop/sketchup/cop/requirements/api_namespace'
4
+ require 'rubocop/sketchup/cop/requirements/ruby_core_namespace'
5
+ require 'rubocop/sketchup/cop/requirements/ruby_stdlib_namespace'
6
6
 
7
7
  module RuboCop
8
8
  module Cop
9
9
  module SketchupRequirements
10
- class ExtensionNamespace < Cop
10
+ class ExtensionNamespace < SketchUp::Cop
11
11
 
12
12
  include SketchUp::NoCommentDisable
13
13
  include SketchUp
@@ -5,7 +5,7 @@ module RuboCop
5
5
  module SketchupRequirements
6
6
  # Check that the extension conform to expected file structure with a
7
7
  # single root .rb file and a support folder with matching name.
8
- class FileStructure < Cop
8
+ class FileStructure < SketchUp::Cop
9
9
 
10
10
  include SketchUp::NoCommentDisable
11
11
  include SketchUp::ExtensionProject
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class GlobalConstants < Cop
6
+ class GlobalConstants < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
  include SketchUp
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class GlobalInclude < Cop
6
+ class GlobalInclude < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
  include SketchUp
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class GlobalMethods < Cop
6
+ class GlobalMethods < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
  include SketchUp
@@ -9,7 +9,7 @@ module RuboCop
9
9
  # users can allow additional variables via the AllowedVariables option.
10
10
  #
11
11
  # Note that backreferences like $1, $2, etc are not global variables.
12
- class GlobalVariables < Cop
12
+ class GlobalVariables < SketchUp::Cop
13
13
 
14
14
  include SketchUp::NoCommentDisable
15
15
  include SketchUp::DynamicComponentGlobals
@@ -6,7 +6,7 @@ module RuboCop
6
6
  # Avoid using globals in general, but especially these which are known to
7
7
  # be in use by other extensions made by SketchUp.
8
8
  # They are still in use due to compatibility reasons.
9
- class LanguageHandlerGlobals < Cop
9
+ class LanguageHandlerGlobals < SketchUp::Cop
10
10
 
11
11
  include SketchUp::NoCommentDisable
12
12
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class LoadPath < Cop
6
+ class LoadPath < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
 
@@ -7,7 +7,7 @@ module RuboCop
7
7
  module SketchupRequirements
8
8
  # Don't load extension files in the root file registering the extension.
9
9
  # Extensions should not load additional files when it's disabled.
10
- class MinimalRegistration < Cop
10
+ class MinimalRegistration < SketchUp::Cop
11
11
 
12
12
  include SketchUp::NoCommentDisable
13
13
  include SketchUp::ExtensionProject
@@ -16,9 +16,10 @@ module RuboCop
16
16
 
17
17
  # Reference: http://rubocop.readthedocs.io/en/latest/node_pattern/
18
18
  def_node_matcher :require_filename, <<-PATTERN
19
- (send
20
- {(const nil? :Sketchup) nil?} :require
21
- (str $_))
19
+ {
20
+ (send {(const nil? :Sketchup) nil?} {:require :load} (str $_))
21
+ (send nil? :require_relative (str $_))
22
+ }
22
23
  PATTERN
23
24
 
24
25
  def investigate(processed_source)
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class ObserversStartOperation < Cop
6
+ class ObserversStartOperation < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
  include RangeHelp
@@ -5,7 +5,7 @@ module RuboCop
5
5
  module SketchupRequirements
6
6
  # Always register extensions to load by default. Otherwise it might
7
7
  # confuse users to think the extension isn't working.
8
- class RegisterExtension < Cop
8
+ class RegisterExtension < SketchUp::Cop
9
9
 
10
10
  include SketchUp::NoCommentDisable
11
11
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class RubyCoreNamespace < Cop
6
+ class RubyCoreNamespace < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
  include SketchUp::NamespaceChecker
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
- class RubyStdLibNamespace < Cop
6
+ class RubyStdLibNamespace < SketchUp::Cop
7
7
 
8
8
  include SketchUp::NoCommentDisable
9
9
  include SketchUp::NamespaceChecker
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Cop
5
5
  module SketchupRequirements
6
6
  # Don't modify SketchUp's shipped extensions.
7
- class ShippedExtensionsNamespace < Cop
7
+ class ShippedExtensionsNamespace < SketchUp::Cop
8
8
 
9
9
  include SketchUp::NoCommentDisable
10
10
  include SketchUp::NamespaceChecker
@@ -5,7 +5,7 @@ module RuboCop
5
5
  module SketchupRequirements
6
6
  # Register a single instance of SketchupExtension per extension.
7
7
  # This should be done by the root .rb file in the extension package.
8
- class SketchupExtension < Cop
8
+ class SketchupExtension < SketchUp::Cop
9
9
 
10
10
  include SketchUp::NoCommentDisable
11
11
  include SketchUp::ExtensionProject
@@ -3,9 +3,8 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupSuggestions
6
- class Compatibility < Cop
6
+ class Compatibility < SketchUp::Cop
7
7
 
8
- include SketchUp::Config
9
8
  include SketchUp::Features
10
9
 
11
10
  MSG = "Incompatible feature with target SketchUp version".freeze
@@ -5,7 +5,7 @@ module RuboCop
5
5
  module SketchupSuggestions
6
6
  # Tapping into the internals of Dynamic Components is risky. It could
7
7
  # change at any time.
8
- class DynamicComponentInternals < Cop
8
+ class DynamicComponentInternals < SketchUp::Cop
9
9
 
10
10
  include SketchUp::DynamicComponentGlobals
11
11
 
@@ -15,7 +15,7 @@ module RuboCop
15
15
  # file = __FILE__.dup
16
16
  # file.force_encoding('UTF-8') if file.respond_to?(:force_encoding)
17
17
  # basename = File.basename(file, '.*')
18
- class FileEncoding < Cop
18
+ class FileEncoding < SketchUp::Cop
19
19
 
20
20
  MSG = 'Beware encoding bug with `__FILE__` and `__dir__`.'.freeze
21
21
 
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module SketchupSuggestions
6
+ class ModelEntities < SketchUp::Cop
7
+
8
+ MSG = 'Typically one should use model.active_entities instead of model.entities.'.freeze
9
+
10
+ # Reference: http://www.rubydoc.info/gems/rubocop/RuboCop/NodePattern
11
+ def_node_matcher :active_model_entities?, <<-PATTERN
12
+ (send
13
+ (send (const nil? :Sketchup) :active_model) :entities)
14
+ PATTERN
15
+
16
+ def_node_matcher :entities_receiver, <<-PATTERN
17
+ (send
18
+ ({lvar ivar cvar} $_) :entities)
19
+ PATTERN
20
+
21
+ MODEL_VARIABLE_NAMES = %w[model mod]
22
+
23
+ def model_entities?(node)
24
+ return true if active_model_entities?(node)
25
+ name = entities_receiver(node)
26
+ name && model_variable?(name)
27
+ end
28
+
29
+ def on_send(node)
30
+ add_offense(node, location: :expression) if model_entities?(node)
31
+ end
32
+
33
+ private
34
+
35
+ def model_variable?(name)
36
+ basename = variable_basename(name)
37
+ MODEL_VARIABLE_NAMES.include?(basename)
38
+ end
39
+
40
+ def variable_basename(name)
41
+ # Extract the basename from variables:
42
+ # model => model
43
+ # @model => model
44
+ # @@model => model
45
+ name.to_s.tr('@', '')
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -8,7 +8,7 @@ module RuboCop
8
8
  # before the extension best-practices were established. These functions
9
9
  # might change or be removed at any time. They will also not work when
10
10
  # the extensions are disabled. Avoid using these methods.
11
- class MonkeyPatchedApi < Cop
11
+ class MonkeyPatchedApi < SketchUp::Cop
12
12
 
13
13
  include SketchUp::DynamicComponentMethods
14
14
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module SketchupSuggestions
6
- class OperationName < Cop
6
+ class OperationName < SketchUp::Cop
7
7
 
8
8
  include RangeHelp
9
9
 
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Cop
5
5
  module SketchupSuggestions
6
6
  # Avoid Sketchup.find_support_file to find your extension's files.
7
- class SketchupFindSupportFile < Cop
7
+ class SketchupFindSupportFile < SketchUp::Cop
8
8
 
9
9
  MSG = "Avoid Sketchup.find_support_file to find your extension's files.".freeze
10
10
 
@@ -5,7 +5,7 @@ module RuboCop
5
5
  module SketchupSuggestions
6
6
  # Omit file extensions when using Sketchup.require to allow encrypted
7
7
  # files to be loaded.
8
- class SketchupRequire < Cop
8
+ class SketchupRequire < SketchUp::Cop
9
9
 
10
10
  MSG = "Don't hard code file extensions with Sketchup.require".freeze
11
11
 
@@ -41,6 +41,9 @@ module RuboCop
41
41
  PATTERN
42
42
 
43
43
 
44
+ TOOLS_RUBY_FILES = %w[extensions.rb langhandler.rb sketchup.rb]
45
+
46
+
44
47
  def on_send(node)
45
48
  if sketchup_require?(node)
46
49
  filename = sketchup_require(node)
@@ -55,7 +58,7 @@ module RuboCop
55
58
  private
56
59
 
57
60
  def valid_filename?(filename)
58
- File.extname(filename).empty?
61
+ File.extname(filename).empty? || TOOLS_RUBY_FILES.include?(filename)
59
62
  end
60
63
 
61
64
  end
@@ -1,5 +1,5 @@
1
1
  module RuboCop
2
2
  module SketchUp
3
- VERSION = '0.3.0'
3
+ VERSION = '0.3.1'
4
4
  end
5
5
  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.3.0
4
+ version: 0.3.1
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-03-26 00:00:00.000000000 Z
11
+ date: 2018-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -49,14 +49,44 @@ files:
49
49
  - lib/rubocop-sketchup.rb
50
50
  - lib/rubocop/sketchup.rb
51
51
  - lib/rubocop/sketchup/config.rb
52
+ - lib/rubocop/sketchup/cop.rb
53
+ - lib/rubocop/sketchup/cop/deprecations/add_separator_to_menu.rb
54
+ - lib/rubocop/sketchup/cop/deprecations/operation_next_transparent.rb
55
+ - lib/rubocop/sketchup/cop/deprecations/require_all.rb
56
+ - lib/rubocop/sketchup/cop/deprecations/set_texture_projection.rb
57
+ - lib/rubocop/sketchup/cop/deprecations/show_ruby_panel.rb
58
+ - lib/rubocop/sketchup/cop/deprecations/sketchup_set.rb
59
+ - lib/rubocop/sketchup/cop/performance/openssl.rb
60
+ - lib/rubocop/sketchup/cop/performance/operation_disable_ui.rb
61
+ - lib/rubocop/sketchup/cop/performance/selection_bulk.rb
62
+ - lib/rubocop/sketchup/cop/performance/typename.rb
63
+ - lib/rubocop/sketchup/cop/requirements/api_namespace.rb
64
+ - lib/rubocop/sketchup/cop/requirements/exit.rb
65
+ - lib/rubocop/sketchup/cop/requirements/extension_namespace.rb
66
+ - lib/rubocop/sketchup/cop/requirements/file_structure.rb
67
+ - lib/rubocop/sketchup/cop/requirements/global_constants.rb
68
+ - lib/rubocop/sketchup/cop/requirements/global_include.rb
69
+ - lib/rubocop/sketchup/cop/requirements/global_methods.rb
70
+ - lib/rubocop/sketchup/cop/requirements/global_variables.rb
71
+ - lib/rubocop/sketchup/cop/requirements/language_handler_globals.rb
72
+ - lib/rubocop/sketchup/cop/requirements/load_path.rb
73
+ - lib/rubocop/sketchup/cop/requirements/minimal_registration.rb
74
+ - lib/rubocop/sketchup/cop/requirements/observers_start_operation.rb
75
+ - lib/rubocop/sketchup/cop/requirements/register_extension.rb
76
+ - lib/rubocop/sketchup/cop/requirements/ruby_core_namespace.rb
77
+ - lib/rubocop/sketchup/cop/requirements/ruby_stdlib_namespace.rb
78
+ - lib/rubocop/sketchup/cop/requirements/shipped_extensions_namespace.rb
79
+ - lib/rubocop/sketchup/cop/requirements/sketchup_extension.rb
80
+ - lib/rubocop/sketchup/cop/suggestions/compatibility.rb
81
+ - lib/rubocop/sketchup/cop/suggestions/dc_internals.rb
82
+ - lib/rubocop/sketchup/cop/suggestions/file_encoding.rb
83
+ - lib/rubocop/sketchup/cop/suggestions/model_entities.rb
84
+ - lib/rubocop/sketchup/cop/suggestions/monkey_patched_api.rb
85
+ - lib/rubocop/sketchup/cop/suggestions/operation_name.rb
86
+ - lib/rubocop/sketchup/cop/suggestions/sketchup_find_support_file.rb
87
+ - lib/rubocop/sketchup/cop/suggestions/sketchup_require.rb
52
88
  - lib/rubocop/sketchup/dc_globals.rb
53
89
  - lib/rubocop/sketchup/dc_methods.rb
54
- - lib/rubocop/sketchup/deprecations/add_separator_to_menu.rb
55
- - lib/rubocop/sketchup/deprecations/operation_next_transparent.rb
56
- - lib/rubocop/sketchup/deprecations/require_all.rb
57
- - lib/rubocop/sketchup/deprecations/set_texture_projection.rb
58
- - lib/rubocop/sketchup/deprecations/show_ruby_panel.rb
59
- - lib/rubocop/sketchup/deprecations/sketchup_set.rb
60
90
  - lib/rubocop/sketchup/extension_project.rb
61
91
  - lib/rubocop/sketchup/features.rb
62
92
  - lib/rubocop/sketchup/formatter/extension_review.rb
@@ -64,36 +94,7 @@ files:
64
94
  - lib/rubocop/sketchup/namespace.rb
65
95
  - lib/rubocop/sketchup/namespace_checker.rb
66
96
  - lib/rubocop/sketchup/no_comment_disable.rb
67
- - lib/rubocop/sketchup/performance/openssl.rb
68
- - lib/rubocop/sketchup/performance/operation_disable_ui.rb
69
- - lib/rubocop/sketchup/performance/selection_bulk.rb
70
- - lib/rubocop/sketchup/performance/typename.rb
71
- - lib/rubocop/sketchup/requirements/api_namespace.rb
72
- - lib/rubocop/sketchup/requirements/exit.rb
73
- - lib/rubocop/sketchup/requirements/extension_namespace.rb
74
- - lib/rubocop/sketchup/requirements/file_structure.rb
75
- - lib/rubocop/sketchup/requirements/global_constants.rb
76
- - lib/rubocop/sketchup/requirements/global_include.rb
77
- - lib/rubocop/sketchup/requirements/global_methods.rb
78
- - lib/rubocop/sketchup/requirements/global_variables.rb
79
- - lib/rubocop/sketchup/requirements/language_handler_globals.rb
80
- - lib/rubocop/sketchup/requirements/load_path.rb
81
- - lib/rubocop/sketchup/requirements/minimal_registration.rb
82
- - lib/rubocop/sketchup/requirements/observers_start_operation.rb
83
- - lib/rubocop/sketchup/requirements/register_extension.rb
84
- - lib/rubocop/sketchup/requirements/ruby_core_namespace.rb
85
- - lib/rubocop/sketchup/requirements/ruby_stdlib_namespace.rb
86
- - lib/rubocop/sketchup/requirements/shipped_extensions_namespace.rb
87
- - lib/rubocop/sketchup/requirements/sketchup_extension.rb
88
97
  - lib/rubocop/sketchup/sketchup_version.rb
89
- - lib/rubocop/sketchup/suggestions/compatibility.rb
90
- - lib/rubocop/sketchup/suggestions/dc_internals.rb
91
- - lib/rubocop/sketchup/suggestions/file_encoding.rb
92
- - lib/rubocop/sketchup/suggestions/model_entities.rb
93
- - lib/rubocop/sketchup/suggestions/monkey_patched_api.rb
94
- - lib/rubocop/sketchup/suggestions/operation_name.rb
95
- - lib/rubocop/sketchup/suggestions/sketchup_find_support_file.rb
96
- - lib/rubocop/sketchup/suggestions/sketchup_require.rb
97
98
  - lib/rubocop/sketchup/version.rb
98
99
  - rubocop-sketchup.gemspec
99
100
  homepage: http://github.com/sketchup/rubocop-sketchup
@@ -116,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  version: '0'
117
118
  requirements: []
118
119
  rubyforge_project:
119
- rubygems_version: 2.6.14
120
+ rubygems_version: 2.7.3
120
121
  signing_key:
121
122
  specification_version: 4
122
123
  summary: RuboCop rules for SketchUp extensions.
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module SketchupSuggestions
6
- class ModelEntities < Cop
7
-
8
- MSG = 'Typically one should use model.active_entities instead of model.entities.'.freeze
9
-
10
- # Reference: http://www.rubydoc.info/gems/rubocop/RuboCop/NodePattern
11
- #
12
- # {} will match any of the patterns inside the brackets.
13
- #
14
- # Testing for; Sketchup.active_model
15
- # (send (const nil :Sketchup) :active_model)
16
- #
17
- # Testing for; model.entities or mod.entities
18
- # (lvar {:model :mod})
19
- def_node_matcher :model_entities?, <<-PATTERN
20
- (send
21
- {
22
- (send (const nil? :Sketchup) :active_model)
23
- (lvar {:model :mod})
24
- }
25
- :entities)
26
- PATTERN
27
-
28
- def on_send(node)
29
- add_offense(node, location: :expression) if model_entities?(node)
30
- end
31
- end
32
- end
33
- end
34
- end