# RuboCop — libptouch gem
# https://docs.rubocop.org/

AllCops:
  TargetRubyVersion: 3.0
  NewCops: enable
  SuggestExtensions: false
  Exclude:
    - "vendor/**/*"
    - ".bundle/**/*"

Layout/LineLength:
  Max: 120

Layout/MultilineMethodCallIndentation:
  EnforcedStyle: indented_relative_to_receiver

Lint/RedundantCopDisableDirective:
  Severity: convention

# ステータスデコードはデータテーブル中心で行数・複雑度が大きくなりがち
Metrics/AbcSize:
  Max: 60

Metrics/BlockLength:
  Max: 35
  Exclude:
    - "**/*.gemspec"

Metrics/MethodLength:
  Max: 40

Metrics/ModuleLength:
  Max: 220

Metrics/ParameterLists:
  Max: 6

Naming/MethodParameterName:
  AllowedNames:
    - "b"
    - "w"

Style/Documentation:
  Enabled: false

Style/DoubleNegation:
  Enabled: false

# optional な環境変数の参照に fetch は不向きなことが多い
Style/FetchEnvVar:
  Enabled: false

Style/FrozenStringLiteralComment:
  EnforcedStyle: always

# FFI の %i[] / %w[] はそのままの方が読みやすい
Style/SymbolArray:
  Enabled: false

Style/WordArray:
  Enabled: false

Style/StringLiterals:
  EnforcedStyle: double_quotes
  ConsistentQuotesInMultiline: true
