--- require: rubocop-rspec inherit_from: .rubocop_todo.yml AllCops: TargetRubyVersion: '2.1' Include: - "**/*.rb" Exclude: - bin/* - ".vendor/**/*" - Gemfile - Rakefile - pkg/**/* - spec/fixtures/**/* - vendor/**/* Metrics/LineLength: Description: People have wide screens, use them. Max: 200 RSpec/BeforeAfterAll: Description: Beware of using after(:all) as it may cause state to leak between tests. A necessary evil in acceptance testing. Exclude: - spec/acceptance/**/*.rb RSpec/HookArgument: Description: Prefer explicit :each argument, matching existing module's style EnforcedStyle: each RSpec/SubjectStub: Exclude: - 'spec/puppet/resource_api/base_context_spec.rb' Style/BlockDelimiters: Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to be consistent then. EnforcedStyle: braces_for_chaining Style/ClassAndModuleChildren: Description: Compact style reduces the required amount of indentation. EnforcedStyle: compact # this needs to be easily usable in the gemspec Exclude: - 'lib/puppet/resource_api/version.rb' Style/EmptyElse: Description: Enforce against empty else clauses, but allow `nil` for clarity. EnforcedStyle: empty Style/FormatString: Description: Following the main puppet project's style, prefer the % format format. EnforcedStyle: percent Style/FormatStringToken: Description: Following the main puppet project's style, prefer the simpler template tokens over annotated ones. EnforcedStyle: template Style/Lambda: Description: Prefer the keyword for easier discoverability. EnforcedStyle: literal Style/RegexpLiteral: Description: Community preference. See https://github.com/voxpupuli/modulesync_config/issues/168 EnforcedStyle: percent_r Style/TernaryParentheses: Description: Checks for use of parentheses around ternary conditions. Enforce parentheses on complex expressions for better readability, but seriously consider breaking it up. EnforcedStyle: require_parentheses_when_complex Style/TrailingCommaInArguments: Description: Prefer always trailing comma on multiline argument lists. This makes diffs, and re-ordering nicer. EnforcedStyleForMultiline: comma Style/SymbolArray: Description: Using percent style obscures symbolic intent of array's contents. EnforcedStyle: brackets Layout/EndOfLine: Enabled: false Style/CollectionMethods: Enabled: true Style/MethodCalledOnDoEndBlock: Enabled: true Style/StringMethods: Enabled: true Metrics/AbcSize: Enabled: false Metrics/BlockLength: Enabled: false Metrics/ClassLength: Enabled: false Metrics/CyclomaticComplexity: Enabled: false Metrics/MethodLength: Enabled: false Metrics/ModuleLength: Enabled: false Metrics/ParameterLists: Enabled: false Metrics/PerceivedComplexity: Enabled: false RSpec/DescribeClass: Enabled: false RSpec/ExampleLength: Enabled: false RSpec/MessageExpectation: Enabled: false RSpec/MultipleExpectations: Enabled: false RSpec/NestedGroups: Enabled: false Style/AsciiComments: Enabled: false Style/IfUnlessModifier: Enabled: false Style/SymbolProc: Enabled: false # local overrides # overridden for local conventions Naming/FileName: Exclude: - 'puppet-resource_api.gemspec' # metaprogramming makes everything "fun" Lint/NestedMethodDefinition: Exclude: - 'lib/puppet/resource_api.rb' # Interacting with external API makes message spies pretty useless RSpec/MessageSpies: Enabled: false # If neighbouring parameters are both hashes, it helps to have braces round both. Style/BracesAroundHashParameters: Exclude: - 'spec/puppet/resource_api/base_context_spec.rb' # requires 2.3's squiggly HEREDOC support, which we can't use, yet # see http://www.virtuouscode.com/2016/01/06/about-the-ruby-squiggly-heredoc-syntax/ Layout/IndentHeredoc: Enabled: false # Updated in 0.53 (or thereabouts) Style/TrailingCommaInArrayLiteral: Description: Prefer always trailing comma on multiline literals. This makes diffs, and re-ordering nicer. EnforcedStyleForMultiline: comma Style/TrailingCommaInHashLiteral: Description: Prefer always trailing comma on multiline literals. This makes diffs, and re-ordering nicer. EnforcedStyleForMultiline: comma # Add allowing "is", as it is a technical term in puppet Naming/UncommunicativeMethodParamName: Description: Checks for method parameter names that contain capital letters, end in numbers, or do not meet a minimal length. Enabled: true MinNameLength: 3 AllowNamesEndingInNumbers: true AllowedNames: - io - id - is ForbiddenNames: [] # This cop breaks syntax highlighting in VSCode Layout/ClosingHeredocIndentation: Enabled: false