2

複数の出口点を持つ関数の循環的複雑度を見つける方法は? wiki ページには p-s+2 と記載されています。ここで、p は決定点の数、s は終了点の数です。

しかし、より独立したパスにつながる可能性があるため、より多くの出口点が循環的複雑性を高めるべきではないでしょうか?

乾杯、

4

3 に答える 3

5

CC は、線形に独立したパスを測定します。出口点はコードにパスを追加せず、パスを終了するため、CC が減少します (少なくとも、 CC は増加しません)。

別の言い方をすれば、出口点を追加する唯一の方法は、さらにパスを追加することです (IF のような条件)。それ以外の場合、「裸の」終了ポイントの後のコードには到達できないため、複雑さを追加するのは終了ポイントではなく条件です。

于 2010-01-15T17:21:01.233 に答える
1

NDependを試してみませんか?循環的複雑度と他の多くのコード メトリックを計算します。

于 2010-01-15T17:18:53.153 に答える
0

ありがとうマイケル。質問を投稿した後、自分の間違いに気づきました。私の間違いは、JavaNcss (ソース ファイルを使用する) と Xdepend (jar ファイルを使用する) の両方が、複数の出口点を持つコードの CC を過大評価しているように見えるという観察から生じました。ここにコードを掲載し ました。しかし、式 p-s+2 を使用すると、答えは 4 のようです。私が見逃している簡単な説明はありますか?

@リチャード:私はXdepend(Ndependの非.NETバージョン)を試しました。それは良いツールに見えます。しかし、jar ファイルを使用すると、CC が過大評価されます (ドキュメントで受け入れられています)。この段階で、さまざまなツールを検討しています。より良いものを知っていますか?

乾杯。

于 2010-01-16T10:42:41.243 に答える