実装において保守性と可読性を気にされたうえでコーディングされるかと思いますが 品質は個人の主観的な目線がどうしても強く出てしまい、なかなか測りづらい所があるのではないでしょうか。
今回はソフトウェアの品質を機械的に測ることができる「コードメトリクス値」と、 Microsoft Visual Studioにコードメトリクス値を計算できる機能がありますので、 そちらをご紹介したいと思います。
コードメトリクス値とは?
ソフトウェアの品質や複雑さ、保守性などを定量的に評価するための指標となります。
評価する内容は様々な種類がありますが、 代表的なものをご紹介いたします。
-
サイクロマティック複雑度
プログラムの複雑さを定量的に評価するための指標です。 分岐や処理が多いほど、数値が高くなります。 サイクロマティック複雑度が高いほど、プログラムのロジックが複雑であることを示し、テストや保守が難しくなる可能性があります。 -
継承の深さ
あるクラスが継承階層の中でどの位置にあるかを示す指標です。 継承した基底クラスが多いほど数値が高くなります。 継承の深さ値が高いほど、クラスの設計やメンテナンスが複雑になる可能性があります。 -
クラス結合
あるクラスが他のクラスにどれだけ依存しているかを示す指標です。 依存しているクラスの数だけ値が多くなります。 値が高いと、他の型との相互依存関係が多いために、再利用や保守が難しい設計であることを示しています。 -
ソースコードの行
名称通り、ソースファイル内に含まれるコードの行数を示す指標です。 行数が多いほど複雑度が高まりますが、コメントなども含まれるため、 一概に数値が高ければ悪いという値ではありません。 -
実行可能コードの行数
実際にソース内で処理が発生している行数を示す値です。 ソースコードの行と同様、行数が多いほど複雑度が高まります。 -
保守容易性指数
上記の要素から計算し、コードの保守の相対的な容易さを表す 0 から 100 の範囲で示す値です。 要素を総括して数値を出しているため、基本的にはこの値を見ると複雑度が大まかにわかります。 100に近いほど保守容易性が優れています。
これらの値から実装の品質を評価でき、開発時にリスクを確認することができます。
コードメトリクス値について更に知りたい方は以下をご参照ください。
Microsoft Visual Studioでのコードメトリクス値分析方法
Microsoft Visual Studioでのコードメトリクス値を分析する方法を画面を見ながら記載します。
※画面はMicrosoft Visual Studio2022を使っています。
上部メニューの分析ー>コードメトリックスを計算するー>ソリューション用を選択します。 計算するプロジェクトを指定したい場合は、「(プロジェクト名)の場合」を選択します。

すると静的解析を実施し、コードメトリックスの結果画面が表示されますので、 それぞれの項目評価値を名前空間、クラス、関数毎で確認することができます。

保守容易性指数の左にある四角の色は、値によってレベル分けをされており、■は20~100、▲は10~19、●は0~9となり、一目で見てレベルがわかるようになっております。
例として、ネストが多層になったソースで分析してみると

保守容易性指数が10以下となり、色付けも●で表示され、改善の余地が必要であることを教えてくれます。

コードメトリクス値と分析方法についてご紹介させていただきました。自身でも実装の際に利用していますが、定量的に評価してもらえるので保守性と可読性が高い実装ができていると実感できております。
以上です、ご参考にしていただけますと幸いです。ここまでお読みいただき、ありがとうございました。

