RubocopのMetrics Abcsizeとは

2020年4月20日

本稿ではRubocopのMetrics Abcsizeの概要を説明致します。

 

Metrics Abcsizeとは

公式サイトの引用を要約しますと、
代入(A)、メソッド呼び出し(B)、条件式(C)の数を数え、それぞれの2乗の和の平方根がABCSizeになります。

一般的に一つのメソッドが複雑になると保守性が下がるため、メソッドを分割するための指標が必要になります。
RuboCopではメソッド毎にこのABCSizeを集計し、デフォルトで15を超えると警告を出すようになっています。

http://wiki.c2.com/?AbcMetric

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)+(B*B)+(C*C))