RuboCopのMetrics/AbcSizeについて

photo credit: gremionis via photopin cc

コーディング規約に対応していなかった既存のRailsプロジェクトをRuboCopでチェックしている。RuboCop(コーディング規約)を通じて、既存のRailsプロジェクトへの理解も深まるので一石二鳥である。その中でrubocop -a/--auto-correctで対応されない指摘について、内容把握のために以下に記載する。

概要

RuboCopのMetrics/AbcSizeの指摘は、AbcMetricの結果が適切な値になっているかをチェックしている。

Abc Metricとは?

Abc Metric

Assignment — an explicit transfer of data into a variable, e.g. = = /= %= += <<= >>= &= |= ^= >>>= ++ –
Branch — an explicit forward program branch out of scope — a function call, class method call, or new operator
Condition — a logical/Boolean test, == != <= >= < > else case default try catch ? and unary conditionals.
A scalar ABC size value (or “aggregate magnitude”) is computed as:
|ABC| = sqrt((A
A)+(BB)+(CC))

ソフトウェア(メソッド)のサイズを示す値。

RuboCop Metrics/AbcSizeのデフォルト値

有効(enable)で、閾値は15になっている。

以下の通り、AbcMetricの結果が適切な値になっているかをチェックしている。

RuboCop Metrics/AbcSizeのチェック内容

参考情報

Ruby Style Guideの該当する箇所はない