Compartilhar via


Team System によるコード分析とコードメトリクス

おそらく、これがシアトルからの最後の投稿となると思います。途中まで渡米前に書いていたのですが、それに本日追記をした形になっています。かなり駄文になってますがご容赦ください。 

ソフトウェア開発というのは皆さんご存じのとおり、とても複雑なものです。最終的な目的は一緒であっても、役割が違えば、考え方や価値観も異なっています。同じ役割同士でもやっぱり考え方や価値観は異なっているのはある意味当然です。そりゃ、育ってきた環境(経験してきたプロジェクトなど)が異なれば考え方も多少異なるのは自然です。

たとえば、開発者だとしても、コーディングの仕方や記述の好き/嫌いなんてものは、いくらでもでてきます。でも、各自がオレ流で貫いてよいのか?というとそうでもありません。

プログラミング言語も「言語」ですので、人によってしゃべり方や方言、好きなフレーズなんてものもあります。しかし、ある程度、統一させて、誤解がないように、誰が聞いても同じ意味に深読みしなくてもわかるようになったらもっといいですよね?

ある程度統一されていれば、ほかの人が問題(バグとか)を発見しやすくなるかもしれません。コードのレビューもいつもより短い時間で効率よくできるかもしれません。何より、書いた人以外でもメンテナンスができるようになるかもしれませんし、過去の資産を再利用や流用、そしてナレッジとして活用し、開発者のスキルアップや開発生産性向上に活用できるかもしれません。そうです。結局のところ、そのソフトウェアの品質の維持・向上、開発の効率化、スキルアップのためにも、ある程度のコーディングの規約を持つことは重要になってくるんですよね。

ちょっと余談ですが、じゃぁ、ガチガチに縛ってしまえばいいかというとそうでもないですね。たとえば、「これから会話は「拙者・・・でござる」といった感じにしなければならないとか決めてしまったら、きっとみんな会話がぎこちなくなり、ルールを守ることに頭が言ってしまい、本来の会話(ディスカッション)ができなくなってしまうかもしれませんよね?

話を戻して、ある一定のルールを守りましょうと決めたとしても、守るのは結構大変です。メリットはわかっていても実践するのは日々の忙しい開発作業の中で難しかったりします。でもやらなければいけません。「慣れろ」だけではすまされないですよね。

そこで、ツールの登場となるわけです。ツールでルールに準拠しているかどうか判断してくれるとありがたいですよね。(ルールは意識しつつ)普段通りに開発作業に専念して、ツールでチェックする。そして、修正するということができれば、クリエイティブな作業にあまり影響を及ぼしませんし、自然とルールを覚えていき、徐々にツールのチェックにひっかからなくなってきたりもします。

Visual Studio Team System (以下、VSTS)には、コード分析の機能が装備されています。コード分析を活用することで、 Microsoft .NET Framework デザイン ガイドラインに規定された項目に準拠したデザイン/コードなのかをチェックすることができます。設定はいたって簡単で、

  • マネージコードのプロジェクトの場合
    プロジェクトのプロパティを開き、「コード分析」タブ中の「コード分析の有効化」にチェックする
  • ASP.NET の Web サイトの場合
    「Web サイト」メニューの「コード分析の構成」をクリックし、「コード分析の有効化」をチェックする
  • アンマネージコードのプロジェクトの場合
    プロジェクトのプロパティを開き、「構成プロパティ」を展開し、「コード分析」の「マネージ バイナリのコード分析を有効にする」をチェックする

Microsoft .NET Framework デザイン ガイドラインで規定されている項目は非常に膨大なものです。ですが、これらにはアプリケーションの信頼性やパフォーマンス向上などの TIPS 的な要素も含まれているので、チェックする項目を検討し、プロジェクトで活用できる限りで活用することをお勧めします。

また、Team Foundation Server と一緒に活用することで、チェックインのポリシーとしてコード分析を含めることができます。これはソースコードのチェックイン時に、コード分析がパスしていないとチェックインを許さないという設定ができるという意味です。これで、チェックイン時に最低限守ってほしいマナーを強制化することができます。強制化というと言葉が強いですが、「つい、うっかり忘れてしまった作業」を思い出させてくれるというように考えるといいと思います。後で、問題が発覚すると、かかるコストは2倍、10倍、100倍となっていきます。ちょっと手間が増えるように思うかもしれませんが、これで不必要な作業が減り、自分たちの開発作業により専念できると思えば大した労力ではないのではないでしょうか。

さて、次は、コードメトリクスです。VSTS 2008 からの新機能となりますが、これも VSTS で実現できます。コードメトリクスでは、コードの保守容易性(Maintainability Index)、循環的複雑度(Cyclomatic Complexity)、継承の深さ(Depth of Inheritance)、クラス結合度(Class Coupling)、コード行(Line Of Code)を示してくれます。またこれらは3段階(緑、黄、赤)で、コードのエレガントさを表してくれます。

VSTS のコード分析やコードメトリクスを用いることで、誰が開発しても(表記、作法として)均一なコードになり、他者が見てもわかりやすいコードになる可能性が高まります。これにより、あとになって発覚するコードレベルのバグやそれに伴う修正作業の手間とストレスを緩和するひとつの処方箋となることでしょう。

※ コードメトリクスについては、Tech・Ed の私のセッションで説明しますね。

ながさわ

Comments

  • Anonymous
    December 08, 2007
    MSDN オフラインセミナー 全国ツアー <チーム開発編>にご参加いただきありがとうございました。 このページでは、セミナーでご覧いただいたデモンストレーションでのオペレーションやテクニックについて主に、過去、そしてこれからこのブログに投稿する(した)ものを紹介する形でご紹介いたします。