JavaクラスのRFCは、クラスのオブジェクトへのメッセージまたはクラス内の何らかのメソッドによって呼び出されるすべてのメソッドのセットです。 RFC = M + R M =クラス内のメソッドの数。 R = Mから直接呼び出される他のメソッドの総数JavaでRFC計算を実行するアルゴリズム
Thinking Cは.classであり、Jは.javaファイルであり、RFCを計算する必要があります。ここ
class J{ a(){} b(){} c(){ e1.e(); e1.f(); e1.g(); } h(){ i.k(); i.j(); } m(){} n(){ i.o(); i.p(); i.p(); i.p(); } }
M = 6 とR = 9(ループ内で呼び出しを心配しないでください。これは、単一の呼び出しと考えられています)
計算Mは簡単です。クラスローダーを使用してCをロードし、リフレクションを使用してメソッドの数を取得します。
Rを計算することは直接的ではありません。クラスからのメソッド呼び出しの数を数える必要があります。最初のレベルのみ。
Rを計算するには、正規表現を使用する必要があります。コールリターンを直接別のメソッドにパラメータになると、通常形式はアウトセミコロン
[variable_name].[method_name]([zero or more parameters]);
又は
[variable_name].[method_name]([zero or more parameters])
を(使用せずにコールカウントされない)であろう。 または
[variable_name].[method_name]([zero or more parameters]).method2();
これは、二つの方法は、あなたが考えることができる他のどのようなメソッド呼び出しのパターン
を呼び出しなっ? R.
を計算するために使用することができる正規表現を使用した以外の他の方法はありUPDATE:
@McDowell は、私は全体のプロセスを簡素化することができますBCELを使用しているように見えます。私はそれを試してみましょう。