docquet 1.0.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 (55) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +20 -0
  3. data/LICENSE +21 -0
  4. data/README.md +205 -0
  5. data/config/cops/bundler.yml +19 -0
  6. data/config/cops/capybara.yml +1 -0
  7. data/config/cops/capybara_rspec.yml +1 -0
  8. data/config/cops/gemspec.yml +4 -0
  9. data/config/cops/i18n_gettext.yml +2 -0
  10. data/config/cops/i18n_railsi18n.yml +1 -0
  11. data/config/cops/layout.yml +79 -0
  12. data/config/cops/lint.yml +7 -0
  13. data/config/cops/metrics.yml +14 -0
  14. data/config/cops/migration.yml +2 -0
  15. data/config/cops/naming.yml +4 -0
  16. data/config/cops/performance.yml +7 -0
  17. data/config/cops/rake.yml +5 -0
  18. data/config/cops/rspec.yml +41 -0
  19. data/config/cops/security.yml +1 -0
  20. data/config/cops/sequel.yml +2 -0
  21. data/config/cops/style.yml +153 -0
  22. data/config/cops/thread_safety.yml +5 -0
  23. data/config/defaults/bundler.yml +97 -0
  24. data/config/defaults/capybara.yml +103 -0
  25. data/config/defaults/capybara_rspec.yml +24 -0
  26. data/config/defaults/gemspec.yml +121 -0
  27. data/config/defaults/i18n_gettext.yml +20 -0
  28. data/config/defaults/i18n_railsi18n.yml +9 -0
  29. data/config/defaults/layout.yml +1121 -0
  30. data/config/defaults/lint.yml +1315 -0
  31. data/config/defaults/metrics.yml +119 -0
  32. data/config/defaults/migration.yml +9 -0
  33. data/config/defaults/naming.yml +332 -0
  34. data/config/defaults/performance.yml +445 -0
  35. data/config/defaults/rake.yml +34 -0
  36. data/config/defaults/rspec.yml +1081 -0
  37. data/config/defaults/security.yml +67 -0
  38. data/config/defaults/sequel.yml +59 -0
  39. data/config/defaults/style.yml +2985 -0
  40. data/config/defaults/thread_safety.yml +45 -0
  41. data/exe/docquet +7 -0
  42. data/lib/docquet/cli/base.rb +21 -0
  43. data/lib/docquet/cli/install_config.rb +75 -0
  44. data/lib/docquet/cli/regenerate_todo.rb +46 -0
  45. data/lib/docquet/cli.rb +6 -0
  46. data/lib/docquet/commands.rb +12 -0
  47. data/lib/docquet/config_processor.rb +52 -0
  48. data/lib/docquet/generators/rubocop_yml_generator.rb +78 -0
  49. data/lib/docquet/inflector.rb +22 -0
  50. data/lib/docquet/plugin_detector.rb +29 -0
  51. data/lib/docquet/rake_task.rb +126 -0
  52. data/lib/docquet/version.rb +6 -0
  53. data/lib/docquet.rb +17 -0
  54. data/templates/rubocop.yml.erb +35 -0
  55. metadata +172 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 49e0d74225773f2f104a4f3c1a34cf72438cf27d1d244d2bc1dc69e968cf7e69
4
+ data.tar.gz: fcf9b6ad2fbe9de0768d8127e9022360c16a4d19f2106ba79a01519ab56f7b42
5
+ SHA512:
6
+ metadata.gz: 0f626d2c9ad3a80235268319c90e548e5291f1ace35b9038efba5c24299de804d1436c8e86df9218ebc2f2a65ad885e092b72c1c0d945231311e2e5fb7c4ca4a
7
+ data.tar.gz: 6c3b5b0d0a5f55aa5703d3992cace6b1418469d6790575a8826d436312ab5859565153160721f9bc7870f007d5d5b32b8767944f9bae5e6415d755f2fc0264e7
data/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ ## [Unreleased]
2
+
3
+ ## [1.0.0] - 2025-11-02
4
+
5
+ ### Added
6
+ - CLI tool with `install-config` and `regenerate-todo` commands
7
+ - Automatic RuboCop plugin detection using gem metadata
8
+ - Configuration generator for 18 RuboCop departments and plugins
9
+ - Support for core RuboCop departments (Style, Layout, Lint, Metrics, Security, Gemspec, Bundler, Naming)
10
+ - Support for RuboCop plugin extensions (Performance, RSpec, Capybara, I18n, Rake, Sequel, ThreadSafety, Migration)
11
+ - ERB-based configuration template system
12
+ - Ruby 3.2+ compatibility with Zeitwerk autoloading
13
+ - Dry::CLI framework integration for command-line interface
14
+
15
+ ### Features
16
+ - Smart plugin detection based on installed gems
17
+ - Automatic `.rubocop_todo.yml` generation for gradual adoption
18
+ - Project-specific RuboCop configuration inheritance
19
+ - Force option for overwriting existing configuration files
20
+ - Ruby version detection from `.ruby-version` file or current Ruby version
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 OZAWA Sakuro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,205 @@
1
+ # Docquet
2
+
3
+ A standardized RuboCop configuration gem that automatically detects available RuboCop plugins and generates appropriate configurations with CLI tools for easy setup and maintenance.
4
+
5
+ ## Features
6
+
7
+ - **Automatic Plugin Detection**: Automatically detects installed RuboCop plugins and includes their configurations
8
+ - **CLI Tools**: Easy-to-use commands for initialization and maintenance
9
+ - **Comprehensive Coverage**: Supports all major RuboCop plugins out of the box
10
+ - **Documentation Links**: Generated configurations include links to official documentation
11
+ - **Smart Detection**: Uses gem metadata to automatically detect installed RuboCop plugins
12
+ - **Incremental Setup**: Generates `.rubocop_todo.yml` for gradual adoption
13
+
14
+ ## Installation
15
+
16
+ Add it to your Gemfile:
17
+
18
+ ```ruby
19
+ group :development do
20
+ gem "docquet", require: false
21
+ end
22
+ ```
23
+
24
+ Then run:
25
+
26
+ ```bash
27
+ bundle install
28
+ ```
29
+
30
+ Or install it as a standalone gem:
31
+
32
+ ```bash
33
+ gem install docquet
34
+ ```
35
+
36
+ ## Usage
37
+
38
+ ### Install RuboCop Configuration
39
+
40
+ Run the installation command in your project root:
41
+
42
+ ```bash
43
+ docquet install-config
44
+ ```
45
+
46
+ This command will:
47
+ 1. Generate `.rubocop.yml` with configurations for detected plugins
48
+ 2. Create an initial `.rubocop_todo.yml` with existing violations
49
+ 3. Display next steps for gradual adoption
50
+
51
+ To overwrite existing files:
52
+
53
+ ```bash
54
+ docquet install-config --force
55
+ ```
56
+
57
+ ### Update TODO File
58
+
59
+ When you've fixed some violations and want to regenerate the TODO file:
60
+
61
+ ```bash
62
+ docquet regenerate-todo
63
+ ```
64
+
65
+ This command will:
66
+ - Regenerate `.rubocop_todo.yml` with current violations
67
+ - Show whether the TODO file changed
68
+ - Provide feedback on progress
69
+
70
+ ## Supported RuboCop Plugins
71
+
72
+ The gem automatically detects and configures the following plugins when installed:
73
+
74
+ ### Core RuboCop
75
+ - **Bundler**: Bundler-related rules
76
+ - **Gemspec**: Gemspec file rules
77
+ - **Layout**: Code formatting and layout rules
78
+ - **Lint**: Rules for catching potential bugs
79
+ - **Metrics**: Code complexity and size metrics
80
+ - **Naming**: Naming convention rules
81
+ - **Security**: Security-related rules
82
+ - **Style**: General code style rules
83
+
84
+ ### Plugin Extensions (Auto-detected)
85
+ - **rubocop-capybara**: Capybara testing framework rules
86
+ - **rubocop-i18n**: Internationalization rules (GetText, Rails I18n)
87
+ - **rubocop-migration**: Database migration rules (for Rails applications)
88
+ - **rubocop-performance**: Performance optimization rules
89
+ - **rubocop-rake**: Rake task rules
90
+ - **rubocop-rspec**: RSpec testing framework rules (including Capybara integration)
91
+ - **rubocop-sequel**: Sequel ORM rules
92
+ - **rubocop-thread_safety**: Thread safety rules
93
+
94
+ ## Generated Configuration Structure
95
+
96
+ The generated `.rubocop.yml` file includes:
97
+
98
+ ```yaml
99
+ AllCops:
100
+ DisplayCopNames: true
101
+ DisplayStyleGuide: true
102
+ EnabledByDefault: true
103
+ Exclude:
104
+ - bin/**/*
105
+ - vendor/**/*
106
+ ExtraDetails: true
107
+ NewCops: enable
108
+ TargetRubyVersion: 3.2 # Detected from .ruby-version or current Ruby
109
+ UseCache: true
110
+
111
+ plugins:
112
+ - rubocop-performance # Auto-detected plugins
113
+ - rubocop-rspec
114
+ # ... other detected plugins
115
+
116
+ inherit_gem:
117
+ docquet:
118
+ - config/cops/style.yml # Core style rules
119
+ - config/cops/layout.yml # Core layout rules
120
+ - config/cops/performance.yml # Performance rules (if plugin detected)
121
+ - config/cops/rspec.yml # RSpec rules (if plugin detected)
122
+ # ... other detected plugins
123
+
124
+ inherit_from: .rubocop_todo.yml
125
+ ```
126
+
127
+ Each configuration file includes:
128
+ - Department-specific rules
129
+ - Links to official RuboCop documentation
130
+ - Carefully curated cop configurations
131
+ - Optimized settings for practical use
132
+
133
+ The configuration uses `EnabledByDefault: true` for strict code quality enforcement with TODO file for gradual adoption.
134
+
135
+ ## Configuration Philosophy
136
+
137
+ This configuration aims to:
138
+
139
+ 1. **Enforce Consistency**: Standardize code style across projects
140
+ 2. **Promote Best Practices**: Enable rules that catch common issues
141
+ 3. **Provide Documentation**: Include links to understand each rule
142
+ 4. **Enable Gradual Adoption**: Use TODO files for incremental improvements
143
+ 5. **Stay Current**: Automatically adapt to installed plugin versions
144
+
145
+ ## Development
146
+
147
+ ### Setup
148
+
149
+ ```bash
150
+ bundle install
151
+ ```
152
+
153
+ ### Running Tests
154
+
155
+ ```bash
156
+ bundle exec rspec
157
+ ```
158
+
159
+ ### Running RuboCop
160
+
161
+ ```bash
162
+ bundle exec rubocop
163
+ ```
164
+
165
+ ### Testing CLI Commands
166
+
167
+ ```bash
168
+ # Test installation command
169
+ ./exe/docquet install-config
170
+
171
+ # Test TODO regeneration
172
+ ./exe/docquet regenerate-todo
173
+ ```
174
+
175
+ ## Documentation Links
176
+
177
+ ### Core RuboCop
178
+ - [Bundler Cops](https://docs.rubocop.org/rubocop/cops_bundler.html)
179
+ - [Gemspec Cops](https://docs.rubocop.org/rubocop/cops_gemspec.html)
180
+ - [Layout Cops](https://docs.rubocop.org/rubocop/cops_layout.html)
181
+ - [Lint Cops](https://docs.rubocop.org/rubocop/cops_lint.html)
182
+ - [Metrics Cops](https://docs.rubocop.org/rubocop/cops_metrics.html)
183
+ - [Naming Cops](https://docs.rubocop.org/rubocop/cops_naming.html)
184
+ - [Security Cops](https://docs.rubocop.org/rubocop/cops_security.html)
185
+ - [Style Cops](https://docs.rubocop.org/rubocop/cops_style.html)
186
+
187
+ ### Plugin Extensions
188
+ - [Performance Cops](https://docs.rubocop.org/rubocop-performance/cops_performance.html)
189
+ - [RSpec Cops](https://docs.rubocop.org/rubocop-rspec/cops_rspec.html)
190
+ - [RSpec Capybara Cops](https://docs.rubocop.org/rubocop-rspec/cops_rspec_capybara.html)
191
+ - [RSpec FactoryBot Cops](https://docs.rubocop.org/rubocop-rspec/cops_rspec_factorybot.html)
192
+ - [RSpec Rails Cops](https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html)
193
+
194
+ ## Contributing
195
+
196
+ 1. Fork the repository
197
+ 2. Create a feature branch
198
+ 3. Make your changes with tests
199
+ 4. Run the test suite: `bundle exec rspec`
200
+ 5. Run RuboCop: `bundle exec rubocop`
201
+ 6. Submit a pull request
202
+
203
+ ## License
204
+
205
+ This gem is available as open source under the terms of the [MIT License](LICENSE).
@@ -0,0 +1,19 @@
1
+ inherit_from: ../defaults/bundler.yml
2
+
3
+ Bundler/GemComment:
4
+ OnlyFor:
5
+ - restrictive_version_specifiers
6
+ - bitbucket
7
+ - gist
8
+ - git
9
+ - github
10
+ - source
11
+
12
+ Bundler/GemVersion:
13
+ Enabled: false
14
+
15
+ Bundler/InsecureProtocolSource:
16
+ AllowHttpProtocol: false
17
+
18
+ Bundler/OrderedGems:
19
+ ConsiderPunctuation: true
@@ -0,0 +1 @@
1
+ inherit_from: ../defaults/capybara.yml
@@ -0,0 +1 @@
1
+ inherit_from: ../defaults/capybara_rspec.yml
@@ -0,0 +1,4 @@
1
+ inherit_from: ../defaults/gemspec.yml
2
+
3
+ Gemspec/OrderedDependencies:
4
+ ConsiderPunctuation: true
@@ -0,0 +1,2 @@
1
+ inherit_from: ../defaults/i18n_gettext.yml
2
+
@@ -0,0 +1 @@
1
+ inherit_from: ../defaults/i18n_railsi18n.yml
@@ -0,0 +1,79 @@
1
+ inherit_from: ../defaults/layout.yml
2
+
3
+ Layout/ArgumentAlignment:
4
+ EnforcedStyle: with_fixed_indentation
5
+
6
+ Layout/ClassStructure:
7
+ ExpectedOrder:
8
+ - module_inclusion
9
+ - constants
10
+ - association
11
+ - public_attribute_macros
12
+ - public_delegate
13
+ - macros
14
+ - public_class_methods
15
+ - initializer
16
+ - public_methods
17
+ - protected_attribute_macros
18
+ - protected_methods
19
+ - private_attribute_macros
20
+ - private_delegate
21
+ - private_methods
22
+
23
+ Layout/FirstArrayElementLineBreak:
24
+ AllowMultilineFinalElement: true
25
+
26
+ Layout/FirstMethodArgumentLineBreak:
27
+ AllowMultilineFinalElement: true
28
+
29
+ Layout/MultilineMethodArgumentLineBreaks:
30
+ AllowMultilineFinalElement: true
31
+
32
+ Layout/MultilineMethodCallIndentation:
33
+ EnforcedStyle: indented
34
+
35
+ Layout/HashAlignment:
36
+ Enabled: false
37
+
38
+ Layout/LineLength:
39
+ AllowedPatterns:
40
+ - expect
41
+ - (?:all|any|none|one)\?
42
+ - \bdef [A-Z]?[a-z0-9_]+[!?]?(?:\(.*\))? = .*(?!end)$
43
+
44
+ Layout/MultilineArrayLineBreaks:
45
+ AllowMultilineFinalElement: true
46
+
47
+ Layout/MultilineMethodDefinitionBraceLayout:
48
+ EnforcedStyle: new_line
49
+
50
+ Layout/MultilineAssignmentLayout:
51
+ Enabled: false
52
+
53
+ Layout/RedundantLineBreak:
54
+ Enabled: false
55
+
56
+ Layout/SingleLineBlockChain:
57
+ Enabled: false
58
+
59
+ Layout/SpaceAroundEqualsInParameterDefault:
60
+ EnforcedStyle: no_space
61
+
62
+ Layout/SpaceAroundOperators:
63
+ AllowForAlignment: false
64
+
65
+ Layout/SpaceBeforeFirstArg:
66
+ AllowForAlignment: false
67
+
68
+ Layout/SpaceInsideArrayLiteralBrackets:
69
+ EnforcedStyle: no_space
70
+ EnforcedStyleForEmptyBrackets: no_space
71
+
72
+ Layout/SpaceInsideBlockBraces:
73
+ EnforcedStyle: space
74
+ EnforcedStyleForEmptyBraces: no_space
75
+ SpaceBeforeBlockParameters: false
76
+
77
+ Layout/SpaceInsideHashLiteralBraces:
78
+ EnforcedStyle: no_space
79
+ EnforcedStyleForEmptyBraces: no_space
@@ -0,0 +1,7 @@
1
+ inherit_from: ../defaults/lint.yml
2
+
3
+ Lint/ConstantResolution:
4
+ Enabled: false
5
+
6
+ Lint/UnusedBlockArgument:
7
+ IgnoreEmptyBlocks: false
@@ -0,0 +1,14 @@
1
+ inherit_from: ../defaults/metrics.yml
2
+
3
+ Metrics/BlockLength:
4
+ AllowedMethods:
5
+ - context
6
+ - describe
7
+ - file
8
+ - namespace
9
+ - refine
10
+ - shared_context
11
+ - shared_examples
12
+
13
+ Metrics/ParameterLists:
14
+ CountKeywordArgs: false
@@ -0,0 +1,2 @@
1
+ inherit_from: ../defaults/migration.yml
2
+
@@ -0,0 +1,4 @@
1
+ inherit_from: ../defaults/naming.yml
2
+
3
+ Naming/InclusiveLanguage:
4
+ Enabled: false
@@ -0,0 +1,7 @@
1
+ inherit_from: ../defaults/performance.yml
2
+
3
+ Performance/ArraySemiInfiniteRangeSlice:
4
+ Enabled: false
5
+
6
+ Performance/MethodObjectAsBlock:
7
+ Enabled: false
@@ -0,0 +1,5 @@
1
+ inherit_from: ../defaults/rake.yml
2
+
3
+ Rake/MethodDefinitionInTask:
4
+ Enabled: false
5
+
@@ -0,0 +1,41 @@
1
+ inherit_from: ../defaults/rspec.yml
2
+
3
+ RSpec/AlignLeftLetBrace:
4
+ Enabled: false
5
+
6
+ RSpec/AlignRightLetBrace:
7
+ Enabled: false
8
+
9
+ RSpec/ContextWording:
10
+ Prefixes:
11
+ - "on"
12
+ - when
13
+ - with
14
+ - without
15
+
16
+ RSpec/DescribedClass:
17
+ Enabled: true
18
+ EnforcedStyle: explicit
19
+
20
+ RSpec/Dialect:
21
+ Enabled: false
22
+
23
+ RSpec/ExampleLength:
24
+ Enabled: true
25
+ CountAsOne:
26
+ - array
27
+ - hash
28
+ - heredoc
29
+ - method_call
30
+
31
+ RSpec/MultipleMemoizedHelpers:
32
+ Max: 10
33
+
34
+ RSpec/MultipleExpectations:
35
+ Enabled: false
36
+
37
+ RSpec/NestedGroups:
38
+ Enabled: false
39
+
40
+ RSpec/Pending:
41
+ Enabled: false
@@ -0,0 +1 @@
1
+ inherit_from: ../defaults/security.yml
@@ -0,0 +1,2 @@
1
+ inherit_from: ../defaults/sequel.yml
2
+
@@ -0,0 +1,153 @@
1
+ inherit_from: ../defaults/style.yml
2
+
3
+ Style/AccessorGrouping:
4
+ EnforcedStyle: separated
5
+
6
+ Style/AccessModifierDeclarations:
7
+ EnforcedStyle: inline
8
+
9
+ Style/ArrayFirstLast:
10
+ Enabled: false
11
+
12
+ Style/AsciiComments:
13
+ Enabled: false
14
+
15
+ Style/BlockDelimiters:
16
+ EnforcedStyle: semantic
17
+ AllowBracesOnProceduralOneLiners: true
18
+
19
+ Style/CaseEquality:
20
+ Enabled: false
21
+
22
+ Style/CommandLiteral:
23
+ EnforcedStyle: percent_x
24
+
25
+ Style/ConstantVisibility:
26
+ IgnoreModules: true
27
+
28
+ Style/Copyright:
29
+ Enabled: false
30
+
31
+ Style/DisableCopsWithinSourceCodeDirective:
32
+ AllowedCops:
33
+ - Metrics/AbcSize
34
+ - Metrics/CyclomaticComplexity
35
+ - Naming/AccessorMethodName
36
+ - RSpec/ExampleLength
37
+ - RSpec/InstanceVariable
38
+ - RSpec/MultipleExpectations
39
+ - RSpec/RepeatedExampleGroupBody
40
+ - Style/HashEachMethods
41
+ - Style/RedandantEach
42
+ - Style/RedundantFetchBlock
43
+ - ThreadSafety/NewThread
44
+
45
+ Style/EndlessMethod:
46
+ EnforcedStyle: allow_single_line
47
+
48
+ Style/ExplicitBlockArgument:
49
+ Enabled: false
50
+
51
+ Style/FetchEnvVar:
52
+ AllowedVars: []
53
+
54
+ Style/FormatString:
55
+ EnforcedStyle: percent
56
+
57
+ Style/FormatStringToken:
58
+ Enabled: false
59
+
60
+ Style/FrozenStringLiteralComment:
61
+ EnforcedStyle: always_true
62
+
63
+ Style/HashConversion:
64
+ Enabled: false
65
+
66
+ Style/HashSyntax:
67
+ EnforcedStyle: ruby19_no_mixed_keys
68
+ EnforcedShorthandSyntax: always
69
+
70
+ Style/IfUnlessModifier:
71
+ Enabled: false
72
+
73
+ Style/ImplicitRuntimeError:
74
+ Enabled: true
75
+
76
+ Style/InlineComment:
77
+ Enabled: false
78
+
79
+ Style/Lambda:
80
+ EnforcedStyle: literal
81
+
82
+ Style/MethodCallWithArgsParentheses:
83
+ Enabled: false
84
+
85
+ Style/MissingElse:
86
+ EnforcedStyle: case
87
+
88
+ Style/MultilineBlockChain:
89
+ Enabled: false
90
+
91
+ Style/MultipleComparison:
92
+ Enabled: false
93
+
94
+ Style/NegatedWhile:
95
+ Enabled: true
96
+
97
+ Style/Not:
98
+ Enabled: false
99
+
100
+ Style/NumericLiteralPrefix:
101
+ EnforcedOctalStyle: zero_only
102
+
103
+ Style/NumericLiterals:
104
+ MinDigits: 6
105
+
106
+ Style/NumericPredicate:
107
+ Enabled: false
108
+
109
+ Style/PercentLiteralDelimiters:
110
+ Enabled: false
111
+
112
+ Style/PerlBackrefs:
113
+ Enabled: false
114
+
115
+ Style/RedundantException:
116
+ Enabled: false
117
+
118
+ Style/ReturnNil:
119
+ Enabled: false
120
+
121
+ Style/RescueStandardError:
122
+ EnforcedStyle: implicit
123
+
124
+ Style/Semicolon:
125
+ AllowAsExpressionSeparator: true
126
+
127
+ Style/SpecialGlobalVars:
128
+ Enabled: false
129
+
130
+ Style/StringConcatenation:
131
+ Mode: conservative
132
+
133
+ Style/StringHashKeys:
134
+ Enabled: false
135
+
136
+ Style/StringLiterals:
137
+ EnforcedStyle: double_quotes
138
+
139
+ Style/StringLiteralsInInterpolation:
140
+ EnforcedStyle: double_quotes
141
+
142
+ Style/SymbolArray:
143
+ Enabled: true
144
+ EnforcedStyle: percent
145
+
146
+ Style/YodaCondition:
147
+ EnforcedStyle: forbid_for_equality_operators_only
148
+
149
+ Style/YodaExpression:
150
+ Enabled: false
151
+
152
+ Style/ZeroLengthPredicate:
153
+ Enabled: false
@@ -0,0 +1,5 @@
1
+ inherit_from: ../defaults/thread_safety.yml
2
+
3
+ ThreadSafety/DirChdir:
4
+ AllowCallWithBlock: true
5
+