rubocop-sketchup 1.2.0 → 1.4.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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +20 -19
  3. data/assets/output.html.erb +301 -301
  4. data/config/default.yml +379 -379
  5. data/lib/rubocop/sketchup/config.rb +63 -63
  6. data/lib/rubocop/sketchup/cop/bugs/material_name.rb +108 -108
  7. data/lib/rubocop/sketchup/cop/bugs/render_mode.rb +72 -72
  8. data/lib/rubocop/sketchup/cop/bugs/uniform_scaling.rb +36 -36
  9. data/lib/rubocop/sketchup/cop/deprecations/add_separator_to_menu.rb +25 -25
  10. data/lib/rubocop/sketchup/cop/deprecations/operation_next_transparent.rb +30 -30
  11. data/lib/rubocop/sketchup/cop/deprecations/require_all.rb +27 -27
  12. data/lib/rubocop/sketchup/cop/deprecations/set_texture_projection.rb +26 -26
  13. data/lib/rubocop/sketchup/cop/deprecations/show_ruby_panel.rb +25 -25
  14. data/lib/rubocop/sketchup/cop/deprecations/sketchup_set.rb +30 -30
  15. data/lib/rubocop/sketchup/cop/performance/openssl.rb +41 -41
  16. data/lib/rubocop/sketchup/cop/performance/operation_disable_ui.rb +33 -33
  17. data/lib/rubocop/sketchup/cop/performance/selection_bulk.rb +79 -79
  18. data/lib/rubocop/sketchup/cop/performance/type_check.rb +63 -63
  19. data/lib/rubocop/sketchup/cop/performance/typename.rb +24 -24
  20. data/lib/rubocop/sketchup/cop/requirements/api_namespace.rb +30 -30
  21. data/lib/rubocop/sketchup/cop/requirements/exit.rb +33 -33
  22. data/lib/rubocop/sketchup/cop/requirements/extension_namespace.rb +125 -125
  23. data/lib/rubocop/sketchup/cop/requirements/file_structure.rb +97 -97
  24. data/lib/rubocop/sketchup/cop/requirements/gem_install.rb +45 -45
  25. data/lib/rubocop/sketchup/cop/requirements/get_extension_license.rb +95 -95
  26. data/lib/rubocop/sketchup/cop/requirements/global_constants.rb +38 -38
  27. data/lib/rubocop/sketchup/cop/requirements/global_include.rb +42 -42
  28. data/lib/rubocop/sketchup/cop/requirements/global_methods.rb +65 -65
  29. data/lib/rubocop/sketchup/cop/requirements/global_variables.rb +95 -95
  30. data/lib/rubocop/sketchup/cop/requirements/language_handler_globals.rb +46 -46
  31. data/lib/rubocop/sketchup/cop/requirements/load_path.rb +83 -83
  32. data/lib/rubocop/sketchup/cop/requirements/minimal_registration.rb +73 -73
  33. data/lib/rubocop/sketchup/cop/requirements/observers_start_operation.rb +161 -161
  34. data/lib/rubocop/sketchup/cop/requirements/register_extension.rb +45 -45
  35. data/lib/rubocop/sketchup/cop/requirements/ruby_core_namespace.rb +291 -291
  36. data/lib/rubocop/sketchup/cop/requirements/ruby_stdlib_namespace.rb +634 -634
  37. data/lib/rubocop/sketchup/cop/requirements/shipped_extensions_namespace.rb +61 -61
  38. data/lib/rubocop/sketchup/cop/requirements/sketchup_extension.rb +119 -119
  39. data/lib/rubocop/sketchup/cop/requirements/sketchup_require.rb +150 -149
  40. data/lib/rubocop/sketchup/cop/suggestions/add_group.rb +49 -49
  41. data/lib/rubocop/sketchup/cop/suggestions/compatibility.rb +128 -128
  42. data/lib/rubocop/sketchup/cop/suggestions/dc_internals.rb +34 -34
  43. data/lib/rubocop/sketchup/cop/suggestions/file_encoding.rb +78 -78
  44. data/lib/rubocop/sketchup/cop/suggestions/model_entities.rb +58 -58
  45. data/lib/rubocop/sketchup/cop/suggestions/monkey_patched_api.rb +45 -45
  46. data/lib/rubocop/sketchup/cop/suggestions/operation_name.rb +137 -137
  47. data/lib/rubocop/sketchup/cop/suggestions/sketchup_find_support_file.rb +39 -39
  48. data/lib/rubocop/sketchup/cop/suggestions/tool_drawing_bounds.rb +45 -45
  49. data/lib/rubocop/sketchup/cop/suggestions/tool_invalidate.rb +68 -68
  50. data/lib/rubocop/sketchup/cop/suggestions/tool_user_input.rb +41 -41
  51. data/lib/rubocop/sketchup/cop/suggestions/toolbar_timer.rb +65 -65
  52. data/lib/rubocop/sketchup/cop.rb +110 -110
  53. data/lib/rubocop/sketchup/dc_globals.rb +24 -24
  54. data/lib/rubocop/sketchup/dc_methods.rb +130 -130
  55. data/lib/rubocop/sketchup/extension_project.rb +65 -65
  56. data/lib/rubocop/sketchup/features.rb +1477 -1420
  57. data/lib/rubocop/sketchup/formatter/extension_review.rb +269 -269
  58. data/lib/rubocop/sketchup/inject.rb +19 -19
  59. data/lib/rubocop/sketchup/namespace.rb +49 -49
  60. data/lib/rubocop/sketchup/namespace_checker.rb +103 -46
  61. data/lib/rubocop/sketchup/no_comment_disable.rb +17 -17
  62. data/lib/rubocop/sketchup/range_help.rb +52 -52
  63. data/lib/rubocop/sketchup/sketchup_target_range.rb +75 -75
  64. data/lib/rubocop/sketchup/sketchup_version.rb +129 -128
  65. data/lib/rubocop/sketchup/tool_checker.rb +41 -43
  66. data/lib/rubocop/sketchup/version.rb +7 -7
  67. data/lib/rubocop/sketchup.rb +14 -14
  68. data/lib/rubocop-sketchup.rb +53 -53
  69. data/rubocop-sketchup.gemspec +29 -29
  70. metadata +8 -8
data/config/default.yml CHANGED
@@ -1,379 +1,379 @@
1
- # Common configuration.
2
-
3
- AllCops:
4
- SketchUp:
5
- # The path to the extension source. This needs to be correct in order to
6
- # correctly validate file structure.
7
- SourcePath: src
8
- # Set target SketchUp version. Compatibility checks can then warn if you
9
- # use features that belong to older SketchUp versions. Refer to the manual
10
- # for list of valid versions.
11
- TargetSketchUpVersion: 2016
12
- # Indicate if you plan to scramble/encrypt this extension using the .RBS or
13
- # .RBE format. It changes the technical requirements for requiring files.
14
- EncryptedExtension: false
15
- # Binary Ruby C Extension must always be loaded using Ruby's own `require`.
16
- # If you enable `AllCops/SketchUp/EncryptedExtension` you need to list
17
- # the require paths for your Ruby C Extensions if you have any.
18
- ExtensionBinaries: []
19
- # You can set up exclude pattens for all SketchUp departments.
20
- Exclude: []
21
- # Alternatively you can set up department wide exclusion.
22
- SketchupBugs:
23
- Exclude: []
24
- SketchupDeprecations:
25
- Exclude: []
26
- SketchupPerformance:
27
- Exclude: []
28
- SketchupRequirements:
29
- Exclude: []
30
- SketchupSuggestions:
31
- Exclude: []
32
-
33
-
34
- SketchupBugs/MaterialName:
35
- Description: >-
36
- SketchUp 2017 did not protect against the Ruby API creating
37
- duplicated material names.
38
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_bugs.md#materialname
39
- Enabled: true
40
-
41
- SketchupBugs/RenderMode:
42
- Description: >-
43
- Invalid rendering mode will crash SketchUp 2017 and newer
44
- versions.
45
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_bugs.md#rendermode
46
- Enabled: true
47
-
48
- SketchupBugs/UniformScaling:
49
- Description: >-
50
- `Geom::Transformation.scaling(scale)` might yield unexpected
51
- behavior.
52
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_bugs.md#uniformscaling
53
- Enabled: true
54
-
55
-
56
- SketchupDeprecations/AddSeparatorToMenu:
57
- Description: The method `add_separator_to_menu` is deprecated.
58
- Details: >-
59
- Avoid adding separators to top level menus. If you require
60
- grouping use a sub-menu instead.
61
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#addseparatortomenu
62
- Enabled: true
63
-
64
- SketchupDeprecations/OperationNextTransparent:
65
- Description: Third argument in `model.start_operation` is deprecated.
66
- Details: >-
67
- It is not possible to predict what operation will come next. Avoid
68
- making the next operation transparent.
69
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#operationnexttransparent
70
- Enabled: true
71
-
72
- SketchupDeprecations/RequireAll:
73
- Description: The method `require_all` is deprecated.
74
- Details: >-
75
- This method adds the path given to `$LOAD_PATH` which can affect
76
- other extensions.
77
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#requireall
78
- Enabled: true
79
-
80
- SketchupDeprecations/SetTextureProjection:
81
- Description: The method `Sketchup::Face#set_texture_projection` is deprecated.
82
- Details: >-
83
- This method never worked right. It's not possible to control the
84
- position and orientation of the texture.
85
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#settextureprojection
86
- Enabled: true
87
-
88
- SketchupDeprecations/ShowRubyPanel:
89
- Description: The method `show_ruby_panel` is deprecated.
90
- Details: Use `SKETCHUP_CONSOLE.show` instead.
91
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#showrubypanel
92
- Enabled: true
93
-
94
- SketchupDeprecations/SketchupSet:
95
- Description: The class `Sketchup::Set` is deprecated.
96
- Details: >-
97
- It's slow and with limited functionality. Use the `Set` class in
98
- the Ruby StdLib instead.
99
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#sketchupset
100
- Enabled: true
101
-
102
-
103
- SketchupPerformance/OpenSSL:
104
- Description: Avoid using Ruby's OpenSSL within SketchUp.
105
- Details: >-
106
- A flaw in how it obtain random bits under Windows can severely
107
- affect performance, freezing SketchUp for many minutes. This also
108
- affects SecureRandom and anything else that depend on OpenSSL.
109
- Net::HTTP is affected if connecting via HTTPS. Connecting via
110
- plain HTTP is unaffected.
111
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#openssl
112
- Enabled: true
113
-
114
- SketchupPerformance/OperationDisableUI:
115
- Description: Operations should disable the UI for performance gain.
116
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#operationdisableui
117
- Enabled: true
118
-
119
- SketchupPerformance/SelectionBulkChanges:
120
- Description: >-
121
- Avoid modifying the selection set within loops. It's much
122
- faster to change the selection in bulk.
123
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#selectionbulkchanges
124
- Enabled: true
125
-
126
- SketchupPerformance/TypeCheck:
127
- Description: String comparisons for type checks are very slow.
128
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#typecheck
129
- Enabled: true
130
-
131
- SketchupPerformance/Typename:
132
- Description: Using `.typename` is very slow, prefer `.is_a?` instead.
133
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#typename
134
- Enabled: true
135
-
136
-
137
- SketchupRequirements/ApiNamespace:
138
- Description: Don't modify the SketchUp API namespace.
139
- Details: >-
140
- Modifying the API namespace could affect other extensions - making
141
- it hard for other developers to determine what is going on.
142
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#apinamespace
143
- Enabled: true
144
-
145
- SketchupRequirements/Exit:
146
- Description: Exit attempts to kill the Ruby interpreter.
147
- Details: >-
148
- SketchUp will trap `exit` and prevent that, with a message in the
149
- console. But `exit!` is not trapped and with terminate SketchUp
150
- without shutting down cleanly. Use `return`, `next` or `break`
151
- instead.
152
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#exit
153
- Enabled: true
154
-
155
- SketchupRequirements/ExtensionNamespace:
156
- Description: Confine extensions to a single root namespace.
157
- Details: >-
158
- To avoid clashing with other extensions a single root namespace
159
- should contain all the extension's code.
160
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#extensionnamespace
161
- Exceptions: []
162
- Enabled: true
163
-
164
- SketchupRequirements/FileStructure:
165
- Description: Expected extension file structure not found.
166
- Details: >-
167
- Check that the extension conform to expected file structure with a
168
- single root .rb file and a support folder with matching name.
169
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#filestructure
170
- Enabled: true
171
-
172
- SketchupRequirements/GemInstall:
173
- Description: >-
174
- Gem.install is unreliable in SketchUp, and can cause
175
- extensions to clash.
176
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#geminstall
177
- Enabled: true
178
-
179
- SketchupRequirements/GetExtensionLicense:
180
- Description: Pass in valid extension ID from local string literals.
181
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#getextensionlicense
182
- Enabled: true
183
-
184
- SketchupRequirements/GlobalConstants:
185
- Description: Do not introduce global constants.
186
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalconstants
187
- Enabled: true
188
-
189
- SketchupRequirements/GlobalInclude:
190
- Description: Do not include modules into global namespace.
191
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalinclude
192
- Enabled: true
193
-
194
- SketchupRequirements/GlobalMethods:
195
- Description: Extensions should not define global methods.
196
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalmethods
197
- Enabled: true
198
-
199
- SketchupRequirements/GlobalVariables:
200
- Description: Do not introduce global variables.
201
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalvariables
202
- Enabled: true
203
-
204
- SketchupRequirements/LanguageHandlerGlobals:
205
- Description: Don't use other known global variables.
206
- Details: >-
207
- Avoid using globals in general, but especially these which are
208
- known to be in use by other extensions made by SketchUp. They are
209
- still in use due to compatibility reasons.
210
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#languagehandlerglobals
211
- Enabled: true
212
-
213
- SketchupRequirements/LoadPath:
214
- Description: Do not modify the load path.
215
- Details: >-
216
- This can cause other extensions from not loading correctly. Always
217
- load files relative to the installation path for the extension.
218
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#loadpath
219
- Enabled: true
220
-
221
- SketchupRequirements/MinimalRegistration:
222
- Description: >-
223
- Don't load extension files in the root file registering the
224
- extension. Extensions should not load additional files when
225
- it's disabled.
226
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#minimalregistration
227
- Enabled: true
228
-
229
- SketchupRequirements/ObserversStartOperation:
230
- Description: Observers should create transparent operations.
231
- Details: >-
232
- When making model changes within an observer event, start a
233
- transparent operation to ensure a clean undo-stack.
234
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#observersstartoperation
235
- Enabled: true
236
-
237
- SketchupRequirements/RegisterExtension:
238
- Description: >-
239
- Always register extensions to load by default. Otherwise it
240
- might confuse users to think the extension isn't working.
241
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#registerextension
242
- Enabled: true
243
-
244
- SketchupRequirements/RequireToolsRubyFiles:
245
- Description: >-
246
- Due to how require and Sketchup.require checks whether a file
247
- has been loaded, files from SketchUp's Tools folder should be
248
- required in using `require` and with their file extension to
249
- avoid duplicate loading.
250
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#requiretoolsrubyfiles
251
- Enabled: true
252
-
253
- SketchupRequirements/RubyCoreNamespace:
254
- Description: Do not modify Ruby core functionality.
255
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#rubycorenamespace
256
- Enabled: true
257
-
258
- SketchupRequirements/RubyStdLibNamespace:
259
- Description: Do not modify Ruby stdlib functionality.
260
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#rubystdlibnamespace
261
- Enabled: true
262
-
263
- SketchupRequirements/SketchupRequire:
264
- Description: >-
265
- Omit file extensions when using `Sketchup.require` to allow
266
- encrypted files to be loaded.
267
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#sketchuprequire
268
- Enabled: true
269
-
270
- SketchupRequirements/ShippedExtensionsNamespace:
271
- Description: Don't use the namespace of SketchUp's shipped extensions.
272
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#shippedextensionsnamespace
273
- Enabled: true
274
-
275
- SketchupRequirements/SketchupExtension:
276
- Description: >-
277
- Register a single instance of SketchupExtension per extension.
278
- This should be done by the root .rb file in the extension
279
- package.
280
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#sketchupextension
281
- Enabled: true
282
-
283
-
284
- SketchupSuggestions/AddGroup:
285
- Description: Avoid creating groups out of existing entities.
286
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#addgroup
287
- Enabled: true
288
-
289
- SketchupSuggestions/Compatibility:
290
- Description: Incompatible feature with target SketchUp version.
291
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#compatibility
292
- Enabled: true
293
-
294
- SketchupSuggestions/DynamicComponentInternals:
295
- Description: >-
296
- Avoid relying on internal logic of Dynamic Components. It's
297
- behavior might change between versions.
298
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#dynamiccomponentinternals
299
- Enabled: true
300
-
301
- SketchupSuggestions/FileEncoding:
302
- Description: Beware encoding bug in Ruby when using `__FILE__` and `__dir__`.
303
- Details: >-
304
- When using `__FILE__` and `__dir__`, beware that Ruby doesn't
305
- apply the correct encoding to the strings under Windows. When they
306
- contain non-english characters it will lead to exceptions being
307
- raised when the strings are used. Force encoding to work around
308
- this.
309
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#fileencoding
310
- Enabled: true
311
-
312
- SketchupSuggestions/ModelEntities:
313
- Description: >-
314
- Typically one should use `model.active_entities` instead of
315
- `model.entities`.
316
- Details: >-
317
- In SketchUp the norm is that editing is performed in the opened
318
- instance (`model.active_entities`). `model.entities` refer to the
319
- model root.
320
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#modelentities
321
- Enabled: true
322
-
323
- SketchupSuggestions/MonkeyPatchedApi:
324
- Description: >-
325
- Avoid using monkey-patched methods from SketchUp's shipped
326
- extensions.
327
- Details: >-
328
- These methods stops working when the extensions are disabled and
329
- may change or be removed.
330
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#monkeypatchedapi
331
- Enabled: true
332
-
333
- SketchupSuggestions/OperationName:
334
- Description: >-
335
- Check that operation names are human friendly and consistent
336
- with SketchUp.
337
- Details: >-
338
- This check is very naive and might produce false positives. Use as
339
- guidance only.
340
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#operationname
341
- Max: 25
342
- Enabled: true
343
-
344
- SketchupSuggestions/SketchupFindSupportFile:
345
- Description: >-
346
- Avoid `Sketchup.find_support_file` to find your extension's
347
- files.
348
- Details: >-
349
- Extensions might be installed outside the SketchUp Plugins folder.
350
- Use `__FILE__` and `__dir__` to locate your files relative to the
351
- executing file.
352
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#sketchupfindsupportfile
353
- Enabled: true
354
-
355
- SketchupSuggestions/ToolDrawingBounds:
356
- Description: >-
357
- When drawing to the viewport implement `getExtents` so drawn
358
- geometry is not clipped.
359
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#tooldrawingbounds
360
- Enabled: true
361
-
362
- SketchupSuggestions/ToolInvalidate:
363
- Description: >-
364
- When drawing to the viewport, make sure tools invalidate when
365
- tool becomes inactive.
366
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#toolinvalidate
367
- Enabled: true
368
-
369
- SketchupSuggestions/ToolUserInput:
370
- Description: >-
371
- When a tool is accepting user input, make sure to define
372
- enableVCB?.
373
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#tooluserinput
374
- Enabled: true
375
-
376
- SketchupSuggestions/ToolbarTimer:
377
- Description: Wrapping `toolbar.restore` in `UI.start_timer` is redundant.
378
- Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#toolbartimer
379
- Enabled: true
1
+ # Common configuration.
2
+
3
+ AllCops:
4
+ SketchUp:
5
+ # The path to the extension source. This needs to be correct in order to
6
+ # correctly validate file structure.
7
+ SourcePath: src
8
+ # Set target SketchUp version. Compatibility checks can then warn if you
9
+ # use features that belong to older SketchUp versions. Refer to the manual
10
+ # for list of valid versions.
11
+ TargetSketchUpVersion: 2016
12
+ # Indicate if you plan to scramble/encrypt this extension using the .RBS or
13
+ # .RBE format. It changes the technical requirements for requiring files.
14
+ EncryptedExtension: false
15
+ # Binary Ruby C Extension must always be loaded using Ruby's own `require`.
16
+ # If you enable `AllCops/SketchUp/EncryptedExtension` you need to list
17
+ # the require paths for your Ruby C Extensions if you have any.
18
+ ExtensionBinaries: []
19
+ # You can set up exclude pattens for all SketchUp departments.
20
+ Exclude: []
21
+ # Alternatively you can set up department wide exclusion.
22
+ SketchupBugs:
23
+ Exclude: []
24
+ SketchupDeprecations:
25
+ Exclude: []
26
+ SketchupPerformance:
27
+ Exclude: []
28
+ SketchupRequirements:
29
+ Exclude: []
30
+ SketchupSuggestions:
31
+ Exclude: []
32
+
33
+
34
+ SketchupBugs/MaterialName:
35
+ Description: >-
36
+ SketchUp 2017 did not protect against the Ruby API creating
37
+ duplicated material names.
38
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_bugs.md#materialname
39
+ Enabled: true
40
+
41
+ SketchupBugs/RenderMode:
42
+ Description: >-
43
+ Invalid rendering mode will crash SketchUp 2017 and newer
44
+ versions.
45
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_bugs.md#rendermode
46
+ Enabled: true
47
+
48
+ SketchupBugs/UniformScaling:
49
+ Description: >-
50
+ `Geom::Transformation.scaling(scale)` might yield unexpected
51
+ behavior.
52
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_bugs.md#uniformscaling
53
+ Enabled: true
54
+
55
+
56
+ SketchupDeprecations/AddSeparatorToMenu:
57
+ Description: The method `add_separator_to_menu` is deprecated.
58
+ Details: >-
59
+ Avoid adding separators to top level menus. If you require
60
+ grouping use a sub-menu instead.
61
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#addseparatortomenu
62
+ Enabled: true
63
+
64
+ SketchupDeprecations/OperationNextTransparent:
65
+ Description: Third argument in `model.start_operation` is deprecated.
66
+ Details: >-
67
+ It is not possible to predict what operation will come next. Avoid
68
+ making the next operation transparent.
69
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#operationnexttransparent
70
+ Enabled: true
71
+
72
+ SketchupDeprecations/RequireAll:
73
+ Description: The method `require_all` is deprecated.
74
+ Details: >-
75
+ This method adds the path given to `$LOAD_PATH` which can affect
76
+ other extensions.
77
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#requireall
78
+ Enabled: true
79
+
80
+ SketchupDeprecations/SetTextureProjection:
81
+ Description: The method `Sketchup::Face#set_texture_projection` is deprecated.
82
+ Details: >-
83
+ This method never worked right. It's not possible to control the
84
+ position and orientation of the texture.
85
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#settextureprojection
86
+ Enabled: true
87
+
88
+ SketchupDeprecations/ShowRubyPanel:
89
+ Description: The method `show_ruby_panel` is deprecated.
90
+ Details: Use `SKETCHUP_CONSOLE.show` instead.
91
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#showrubypanel
92
+ Enabled: true
93
+
94
+ SketchupDeprecations/SketchupSet:
95
+ Description: The class `Sketchup::Set` is deprecated.
96
+ Details: >-
97
+ It's slow and with limited functionality. Use the `Set` class in
98
+ the Ruby StdLib instead.
99
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_deprecations.md#sketchupset
100
+ Enabled: true
101
+
102
+
103
+ SketchupPerformance/OpenSSL:
104
+ Description: Avoid using Ruby's OpenSSL within SketchUp.
105
+ Details: >-
106
+ A flaw in how it obtain random bits under Windows can severely
107
+ affect performance, freezing SketchUp for many minutes. This also
108
+ affects SecureRandom and anything else that depend on OpenSSL.
109
+ Net::HTTP is affected if connecting via HTTPS. Connecting via
110
+ plain HTTP is unaffected.
111
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#openssl
112
+ Enabled: true
113
+
114
+ SketchupPerformance/OperationDisableUI:
115
+ Description: Operations should disable the UI for performance gain.
116
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#operationdisableui
117
+ Enabled: true
118
+
119
+ SketchupPerformance/SelectionBulkChanges:
120
+ Description: >-
121
+ Avoid modifying the selection set within loops. It's much
122
+ faster to change the selection in bulk.
123
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#selectionbulkchanges
124
+ Enabled: true
125
+
126
+ SketchupPerformance/TypeCheck:
127
+ Description: String comparisons for type checks are very slow.
128
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#typecheck
129
+ Enabled: true
130
+
131
+ SketchupPerformance/Typename:
132
+ Description: Using `.typename` is very slow, prefer `.is_a?` instead.
133
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_performance.md#typename
134
+ Enabled: true
135
+
136
+
137
+ SketchupRequirements/ApiNamespace:
138
+ Description: Don't modify the SketchUp API namespace.
139
+ Details: >-
140
+ Modifying the API namespace could affect other extensions - making
141
+ it hard for other developers to determine what is going on.
142
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#apinamespace
143
+ Enabled: true
144
+
145
+ SketchupRequirements/Exit:
146
+ Description: Exit attempts to kill the Ruby interpreter.
147
+ Details: >-
148
+ SketchUp will trap `exit` and prevent that, with a message in the
149
+ console. But `exit!` is not trapped and with terminate SketchUp
150
+ without shutting down cleanly. Use `return`, `next` or `break`
151
+ instead.
152
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#exit
153
+ Enabled: true
154
+
155
+ SketchupRequirements/ExtensionNamespace:
156
+ Description: Confine extensions to a single root namespace.
157
+ Details: >-
158
+ To avoid clashing with other extensions a single root namespace
159
+ should contain all the extension's code.
160
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#extensionnamespace
161
+ Exceptions: []
162
+ Enabled: true
163
+
164
+ SketchupRequirements/FileStructure:
165
+ Description: Expected extension file structure not found.
166
+ Details: >-
167
+ Check that the extension conform to expected file structure with a
168
+ single root .rb file and a support folder with matching name.
169
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#filestructure
170
+ Enabled: true
171
+
172
+ SketchupRequirements/GemInstall:
173
+ Description: >-
174
+ Gem.install is unreliable in SketchUp, and can cause
175
+ extensions to clash.
176
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#geminstall
177
+ Enabled: true
178
+
179
+ SketchupRequirements/GetExtensionLicense:
180
+ Description: Pass in valid extension ID from local string literals.
181
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#getextensionlicense
182
+ Enabled: true
183
+
184
+ SketchupRequirements/GlobalConstants:
185
+ Description: Do not introduce global constants.
186
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalconstants
187
+ Enabled: true
188
+
189
+ SketchupRequirements/GlobalInclude:
190
+ Description: Do not include modules into global namespace.
191
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalinclude
192
+ Enabled: true
193
+
194
+ SketchupRequirements/GlobalMethods:
195
+ Description: Extensions should not define global methods.
196
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalmethods
197
+ Enabled: true
198
+
199
+ SketchupRequirements/GlobalVariables:
200
+ Description: Do not introduce global variables.
201
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#globalvariables
202
+ Enabled: true
203
+
204
+ SketchupRequirements/LanguageHandlerGlobals:
205
+ Description: Don't use other known global variables.
206
+ Details: >-
207
+ Avoid using globals in general, but especially these which are
208
+ known to be in use by other extensions made by SketchUp. They are
209
+ still in use due to compatibility reasons.
210
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#languagehandlerglobals
211
+ Enabled: true
212
+
213
+ SketchupRequirements/LoadPath:
214
+ Description: Do not modify the load path.
215
+ Details: >-
216
+ This can cause other extensions from not loading correctly. Always
217
+ load files relative to the installation path for the extension.
218
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#loadpath
219
+ Enabled: true
220
+
221
+ SketchupRequirements/MinimalRegistration:
222
+ Description: >-
223
+ Don't load extension files in the root file registering the
224
+ extension. Extensions should not load additional files when
225
+ it's disabled.
226
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#minimalregistration
227
+ Enabled: true
228
+
229
+ SketchupRequirements/ObserversStartOperation:
230
+ Description: Observers should create transparent operations.
231
+ Details: >-
232
+ When making model changes within an observer event, start a
233
+ transparent operation to ensure a clean undo-stack.
234
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#observersstartoperation
235
+ Enabled: true
236
+
237
+ SketchupRequirements/RegisterExtension:
238
+ Description: >-
239
+ Always register extensions to load by default. Otherwise it
240
+ might confuse users to think the extension isn't working.
241
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#registerextension
242
+ Enabled: true
243
+
244
+ SketchupRequirements/RequireToolsRubyFiles:
245
+ Description: >-
246
+ Due to how require and Sketchup.require checks whether a file
247
+ has been loaded, files from SketchUp's Tools folder should be
248
+ required in using `require` and with their file extension to
249
+ avoid duplicate loading.
250
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#requiretoolsrubyfiles
251
+ Enabled: true
252
+
253
+ SketchupRequirements/RubyCoreNamespace:
254
+ Description: Do not modify Ruby core functionality.
255
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#rubycorenamespace
256
+ Enabled: true
257
+
258
+ SketchupRequirements/RubyStdLibNamespace:
259
+ Description: Do not modify Ruby stdlib functionality.
260
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#rubystdlibnamespace
261
+ Enabled: true
262
+
263
+ SketchupRequirements/SketchupRequire:
264
+ Description: >-
265
+ Omit file extensions when using `Sketchup.require` to allow
266
+ encrypted files to be loaded.
267
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#sketchuprequire
268
+ Enabled: true
269
+
270
+ SketchupRequirements/ShippedExtensionsNamespace:
271
+ Description: Don't use the namespace of SketchUp's shipped extensions.
272
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#shippedextensionsnamespace
273
+ Enabled: true
274
+
275
+ SketchupRequirements/SketchupExtension:
276
+ Description: >-
277
+ Register a single instance of SketchupExtension per extension.
278
+ This should be done by the root .rb file in the extension
279
+ package.
280
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_requirements.md#sketchupextension
281
+ Enabled: true
282
+
283
+
284
+ SketchupSuggestions/AddGroup:
285
+ Description: Avoid creating groups out of existing entities.
286
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#addgroup
287
+ Enabled: true
288
+
289
+ SketchupSuggestions/Compatibility:
290
+ Description: Incompatible feature with target SketchUp version.
291
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#compatibility
292
+ Enabled: true
293
+
294
+ SketchupSuggestions/DynamicComponentInternals:
295
+ Description: >-
296
+ Avoid relying on internal logic of Dynamic Components. It's
297
+ behavior might change between versions.
298
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#dynamiccomponentinternals
299
+ Enabled: true
300
+
301
+ SketchupSuggestions/FileEncoding:
302
+ Description: Beware encoding bug in Ruby when using `__FILE__` and `__dir__`.
303
+ Details: >-
304
+ When using `__FILE__` and `__dir__`, beware that Ruby doesn't
305
+ apply the correct encoding to the strings under Windows. When they
306
+ contain non-english characters it will lead to exceptions being
307
+ raised when the strings are used. Force encoding to work around
308
+ this.
309
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#fileencoding
310
+ Enabled: true
311
+
312
+ SketchupSuggestions/ModelEntities:
313
+ Description: >-
314
+ Typically one should use `model.active_entities` instead of
315
+ `model.entities`.
316
+ Details: >-
317
+ In SketchUp the norm is that editing is performed in the opened
318
+ instance (`model.active_entities`). `model.entities` refer to the
319
+ model root.
320
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#modelentities
321
+ Enabled: true
322
+
323
+ SketchupSuggestions/MonkeyPatchedApi:
324
+ Description: >-
325
+ Avoid using monkey-patched methods from SketchUp's shipped
326
+ extensions.
327
+ Details: >-
328
+ These methods stops working when the extensions are disabled and
329
+ may change or be removed.
330
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#monkeypatchedapi
331
+ Enabled: true
332
+
333
+ SketchupSuggestions/OperationName:
334
+ Description: >-
335
+ Check that operation names are human friendly and consistent
336
+ with SketchUp.
337
+ Details: >-
338
+ This check is very naive and might produce false positives. Use as
339
+ guidance only.
340
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#operationname
341
+ Max: 25
342
+ Enabled: true
343
+
344
+ SketchupSuggestions/SketchupFindSupportFile:
345
+ Description: >-
346
+ Avoid `Sketchup.find_support_file` to find your extension's
347
+ files.
348
+ Details: >-
349
+ Extensions might be installed outside the SketchUp Plugins folder.
350
+ Use `__FILE__` and `__dir__` to locate your files relative to the
351
+ executing file.
352
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#sketchupfindsupportfile
353
+ Enabled: true
354
+
355
+ SketchupSuggestions/ToolDrawingBounds:
356
+ Description: >-
357
+ When drawing to the viewport implement `getExtents` so drawn
358
+ geometry is not clipped.
359
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#tooldrawingbounds
360
+ Enabled: true
361
+
362
+ SketchupSuggestions/ToolInvalidate:
363
+ Description: >-
364
+ When drawing to the viewport, make sure tools invalidate when
365
+ tool becomes inactive.
366
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#toolinvalidate
367
+ Enabled: true
368
+
369
+ SketchupSuggestions/ToolUserInput:
370
+ Description: >-
371
+ When a tool is accepting user input, make sure to define
372
+ enableVCB?.
373
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#tooluserinput
374
+ Enabled: true
375
+
376
+ SketchupSuggestions/ToolbarTimer:
377
+ Description: Wrapping `toolbar.restore` in `UI.start_timer` is redundant.
378
+ Reference: https://github.com/SketchUp/rubocop-sketchup/tree/main/manual/cops_suggestions.md#toolbartimer
379
+ Enabled: true