私はコードベースを評価するためのメトリックとしてMccabeコードの複雑さを使用していますが、個々の関数のコード複雑度スコアのみを示しています。 全体のコード複雑度スコアは、コードベース内のすべての関数のスコアの合計で与えられます。 私は、時間の経過とともにコードベースの複雑さを軽減する私たちの努力の傾向を反映するために、標準化されたメトリック(コードラインを考慮して)を考え出しています。 (関数を削除/追加すると複雑さのスコアが変わるが、複雑さは変わらないことがわかっているので) 標準的な方法はありますか?平均的な複雑さのようなもの?Cコードベース全体のコード複雑度メトリック
0
A
答えて
1
McCabeコードの複雑度メトリックは、プログラム全体ではなく、関数ではを意味するを意味します。簡単な言葉で言えば、関数が特定の制限(vulga:スパゲッティコード)を超えるMcCabe数を持つ場合、それをいくつかのより単純な関数に分割する必要があります。
実際のメジャーは、可能なパスの数です。これは比較的単純な関数ですが、依存している場合、つまりこれらの関数が互いに呼び出す場合は、いくつかの関数ではかなり複雑です。
独立した機能(ライブラリなど)がある場合は追加できますが、依存している場合(例:本格的なプログラム)は、プログラム全体の可能なすべてのパスを数えなければなりません。ノードが関数である場合、McCabe番号を含める必要があり、そうでない場合(たとえば、単純なブランチ)、単一の関数と同じように1(1)として含めることができます。だから、
:
- 独立した機能:リニアウェイ(シングルパス)で呼び出さ
- ::二つの方法で呼び出され、それらを追加し、すべての
- それらをすべて
- 独立した機能を追加(2つの線形パス):関数内の分岐のように、各パスに関数を追加し、両方のパスを追加する
- n way(n linear paths):関数内の分岐のように、各パスに関数を追加してください。
- 依存関数:上記のように、大きな数になる可能性のあるすべてのパスを数えなければならないからです早く。
もちろん、それをすべて自動化することができます。確かに、すべての可能なパスを数えることができるあなたの言語用のパーサーを書く必要があります。そして、それがお金と盗難に値するなら、私は分かりません。
さらに、大きな関数をいくつかの単純な関数に分割することで、関数のMacCabe数を減らすことができます。今、あなたは完全なプログラムでそれをどのようにしていますか?いくつかの簡単なプログラム/ライブラリに分割しますか?はい、私はそれがうまくいくと思うので、あなたの考えは健全なようです。
しかし、それでもまだ多くの作業があります。
私はペットの仲間かもしれませんが、LoCの数は複雑さとは関係がありません。 LoCは、コード行数以外の何ものにとっても悪い評価基準です。
関連する問題
- 1. C#コードの完全なリスト循環的複雑さ+1 +1
- 2. 以下のコードの時間複雑度
- 3. コードの最悪の時間複雑度
- 4. 次のコードの時間複雑度
- 5. アルゴリズム全体の時間複雑度はどのくらいですか?
- 6. 複数の操作の全体的な複雑さ?
- 7. Cプログラムの時間複雑度
- 8. C++ソートベクトルの時間複雑度
- 9. cプログラムの時間複雑度
- 10. マージソートの空間複雑度解析(C++)
- 11. スタックの複雑度
- 12. 複数の複雑度
- 13. UTF-16からUTF-8へのコードベース全体の再エンコード
- 14. プログラムの時間複雑度
- 15. フィボナッチアルゴリズムの時間複雑度
- 16. フィボナッチシーケンスの空間複雑度
- 17. デデューピングアルゴリズムの時間複雑度
- 18. プログラムの時間複雑度
- 19. IDDFSの空間複雑度
- 20. クイックセレクト時間の複雑度
- 21. random.sampleの時間複雑度
- 22. AWS CloudWatch API:データベース全体のメトリックを取得する
- 23. 以下のJavaコードの時間複雑度は
- 24. 複雑なMySQLのクエリ・コード
- 25. Pythonコードの複雑さ
- 26. プロジェクト全体のIntellisense(VSコード)?
- 27. 代数と複雑度クラス
- 28. 時間複雑度ヒープソートアルゴリズム
- 29. 対数時間複雑度
- 30. BST時間複雑度
*「ただそれだけです」* * *それは何ですか?あなたが持っているツールは?コード全体を評価するための別のツールを見つけてください。 –
https://people.debian。org /〜bame/pmccabe/pmccabe.1それは全体のコードベースの数を与えますが、単に数字を追加するだけです.... – yangjeep