rubocopの設定
rubocopの設定
rubocopの設定方法がイマイチ分からず調べたので、こちらに備忘録として残します。
rubocopでは、最初からLintチェックのレベルが設定されているが特定のファイルだけLintチェックを行わないようにしたい場合がある。(特定のファイルのみどうしてもLintチェックを通過するようにコードを書けない場合など。。)
そんな時に、そのファイルのみ特定のLintチェックをパスするようにする方法を以下に示します。
以下のように記載することで特定のLintチェックを指定したファイルでパスするようにできます。
[.rubocop.yml] inherit_from: .rubocop_todo.yml AllCops: TargetRubyVersion: 2.5 # 除外 Exclude: - 'bin/**' - 'lib/**' - 'db/migrate/*' - 'db/schema.rb' - 'config/puma.rb' - 'config/spring.rb' - 'config/application.rb' - 'config/environments/*' - 'config/initializers/*' - 'script/**/*' - 'node_modules/**/*' - Gemfile - 'vendor/**/*' - 'spec/**/*' CyclomaticComplexity: # ① Exclude: - 'app/forms/calculate_cooking_time.rb'
①を記載しないと以下のようになる。
% rubocop The following cops were added to RuboCop, but are not configured. Please set Enabled to either `true` or `false` in your `.rubocop.yml` file. Please also note that you can opt-in to new cops by default by adding this to your config: AllCops: NewCops: enable Gemspec/DateAssignment: # new in 1.10 Enabled: true Layout/LineEndStringConcatenationIndentation: # new in 1.18 Enabled: true Layout/SpaceBeforeBrackets: # new in 1.7 Enabled: true Lint/AmbiguousAssignment: # new in 1.7 Enabled: true Lint/AmbiguousOperatorPrecedence: # new in 1.21 Enabled: true Lint/AmbiguousRange: # new in 1.19 Enabled: true Lint/DeprecatedConstants: # new in 1.8 Enabled: true Lint/DuplicateBranch: # new in 1.3 Enabled: true Lint/DuplicateRegexpCharacterClassElement: # new in 1.1 Enabled: true Lint/EmptyBlock: # new in 1.1 Enabled: true Lint/EmptyClass: # new in 1.3 Enabled: true Lint/EmptyInPattern: # new in 1.16 Enabled: true Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21 Enabled: true Lint/LambdaWithoutLiteralBlock: # new in 1.8 Enabled: true Lint/NoReturnInBeginEndBlocks: # new in 1.2 Enabled: true Lint/NumberedParameterAssignment: # new in 1.9 Enabled: true Lint/OrAssignmentToConstant: # new in 1.9 Enabled: true Lint/RedundantDirGlobSort: # new in 1.8 Enabled: true Lint/RequireRelativeSelfPath: # new in 1.22 Enabled: true Lint/SymbolConversion: # new in 1.9 Enabled: true Lint/ToEnumArguments: # new in 1.1 Enabled: true Lint/TripleQuotes: # new in 1.9 Enabled: true Lint/UnexpectedBlockArity: # new in 1.5 Enabled: true Lint/UnmodifiedReduceAccumulator: # new in 1.1 Enabled: true Security/IoMethods: # new in 1.22 Enabled: true Style/ArgumentsForwarding: # new in 1.1 Enabled: true Style/CollectionCompact: # new in 1.2 Enabled: true Style/DocumentDynamicEvalDefinition: # new in 1.1 Enabled: true Style/EndlessMethod: # new in 1.8 Enabled: true Style/HashConversion: # new in 1.10 Enabled: true Style/HashExcept: # new in 1.7 Enabled: true Style/IfWithBooleanLiteralBranches: # new in 1.9 Enabled: true Style/InPatternThen: # new in 1.16 Enabled: true Style/MultilineInPatternThen: # new in 1.16 Enabled: true Style/NegatedIfElseCondition: # new in 1.2 Enabled: true Style/NilLambda: # new in 1.3 Enabled: true Style/NumberedParameters: # new in 1.22 Enabled: true Style/NumberedParametersLimit: # new in 1.22 Enabled: true Style/QuotedSymbols: # new in 1.16 Enabled: true Style/RedundantArgument: # new in 1.4 Enabled: true Style/RedundantSelfAssignmentBranch: # new in 1.19 Enabled: true Style/SelectByRegexp: # new in 1.22 Enabled: true Style/StringChars: # new in 1.12 Enabled: true Style/SwapValues: # new in 1.1 Enabled: true For more information: https://docs.rubocop.org/rubocop/versioning.html Inspecting 31 files ..........C.................... Offenses: app/forms/calculate_cooking_time.rb:18:3: C: Metrics/PerceivedComplexity: Perceived complexity for calculate_cooking_total_time is too high. [27/8] ② def calculate_cooking_total_time ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 31 files inspected, 1 offense detected
Metrics/PerceivedComplexity
のLintチェックに引っかかる。
②のMetrics/PerceivedComplexity
を.rubocop.yml
に記載して除外ファイルを設定することで、このファイルではMetrics/PerceivedComplexity
のLintチェックが行われなくなる。