MSDN マガジン > ホーム > アーカイブ > 2008 > December >  ツールボックス: .NET 用の静的分析ツール、Matt Berseth のブログ
ツールボックス
.NET 用の静的分析ツール、Matt Berseth のブログ
Scott Mitchell

記載価格は 2008 年 10 月 30 日時点のものであり、変更されている可能性があります。このコラムに記載されている見解は、執筆者の個人的な見解であり、必ずしもマイクロソフトの見解を反映するものではありません。


静的コード分析ツールによるソフトウェア品質の向上
ほとんどのソフトウェア チームはコード レビューを使用して、開発者が会社のデザイン ガイドラインに従った正しい、安全なコードを作成していることを確認します。これらのガイドラインには、名前付け規則や、データまたは他の外部リソースへのアクセスに使用するパターンなどの概略が示されています。コード レビュー プロセスのほとんどの側面はかなり機械的であり、自動化できます。静的コード分析ツールは、ソース コードまたは中間コードをスキャンし、定義されたデザイン ガイドライン ルールに対する違反を検出します。
マイクロソフトが開発したフリー ツール FxCop (Version 1.36) は、Microsoft .NET Framework 内のアプリケーションに対応する静的分析ツールの 1 つです。FxCop はコンパイルされた .NET アセンブリの中間コードを分析し、デザイン、セキュリティ、およびパフォーマンス向上のための推奨事項を提供します。既定では、FxCop はクラス ライブラリ開発のデザイン ガイドラインに定められているルールに基づいてアセンブリを分析します。デザイン ガイドライン ルールは、デザイン、グローバリゼーション、パフォーマンス、およびセキュリティなどの 9 つのカテゴリに分類されます。名前付け規則の一例には、"イベントに 'before' または 'after' プレフィックスを使用してはならない" などがあります。FxCop は、BeforeUpdate という名前のイベントを識別した場合、BeforeUpdate を現在時制のイベント名 (つまり、Update) で置き換えるよう推奨します。自社の内部的なデザイン ガイドラインを反映したカスタム ルール クラスを組み込むことも可能です。
アセンブリを分析するには、FxCop を起動し、新しいプロジェクトを作成し、プロジェクトにアセンブリを追加します。FxCop では、アセンブリの分析時に使用される 200 を超えるルールが表示されます。既存のルールをオフにしたり、独自のルールを追加したりできます。[Analyze] (分析) ボタンをクリックして、分析を開始します。型、クラス、メソッド、およびアセンブリのメンバを列挙した後、FxCop は適切でないコードおよび違反のあるルールの一覧を示す分析結果を表示します。結果を選択して、より詳細な説明と解決策を参照できます。
FxCop はスタンドアロン アプリケーションとして使用できます。また、自動化されたビルド プロセスに簡単に組み込み可能なコマンドライン実装も含まれています (FxCop とほぼ同様のツールである Code Analysis は、Visual Studio Team System に付属し、Visual Studio シェルに統合されています)。FxCop の使用方法の詳細については、John Robbins による Bugslayer のコラム「Bad Code? FxCop to the Rescue (FxCop による適切でないコードの救出)」および「Three Vital FXCop Rules (3 つの重要な FXCop ルール)」を参照してください。
.NET デザイン ガイドラインが設定するルールに基づいた FxCop によるアセンブリの分析 (クリックすると拡大画像が表示されます)
マイクロソフトのもう 1 つの静的コード分析ツールは、StyleCop (Version 4.3) です。FxCop では中間コードに対してデザイン ガイドラインが評価されましたが、StyleCop では C# ソース コードのスタイルが評価されます。スタイル ガイドラインは、ソース コードの書式設定を指定するルールです。インデントにスペースやタブを使用するかどうかや、for ループまたは if ステートメントなどの構成要素の形式を指定します。StyleCop のルールの例としては、for ステートメントの本体は中かっこで囲む必要がある、= および != 演算子の両端にはホワイト スペースを書く必要がある、クラス内でメンバ変数を呼び出すときは "this" で始める必要がある、などがあります。
StyleCop は Visual Studio Team System にインストールされていないため、自身でインストールする必要があります。Visual Studio 内部から StyleCop を実行すると、現在開いているソリューションのソース コードが分析され、エラー一覧のウィンドウに結果が警告として表示されます。StyleCop を MSBuild に統合することも可能です。
FxCop と StyleCop ではルール違反が特定されますが、これらのツールの推奨事項を反映するのは開発者の役目です。SubMain の CodeIt.Right (Version 1.1) は、静的コード分析を次のレベルまで引き上げ、ルール違反が自動的に準拠コードにリファクタリングされることを実現しました。FxCop と同様、CodeIt.Right は前述のデザイン ガイドライン ドキュメントに基づいた豊富な事前定義ルールを含み、カスタム ルールを追加する機能も備えています。CodeIt.Right ではさらに簡単にカスタム ルールを作成、使用できます。
FxCop でカスタム ルールを使用するには、ルール クラスを作成およびコンパイルし、FxCop に組み込む必要があります。CodeIt.Right では、グラフィカル ユーザー インターフェイスからカスタム ルールが生成されます。新しいルールを定義する際に、基本の動作パターンを選択し、いくつかのプロパティをカスタマイズします。CodeIt.Right は Visual Studio .NET 2003、Visual Studio 2005、および Visual Studio 2008 のシェルの内部に統合され、また、コマンドライン実装も提供されます。
CodeIt.Right で選択した違反がルールに準拠するよう更新される (クリックすると拡大画像が表示されます)
Visual Studio の内部から CodeIt.Right を使用するには、CodeIt.Right メニューの [Start Analysis] (分析の開始) オプションを選択します。ソリューションの分析が終了すると、CodeIt.Right により Visual Studio IDE 内のウィンドウに結果が表示され、ルール違反の一覧が示されます。このレポートを XML または Microsoft Office Excel ファイルにエクスポートできます。
CodeIt.Right の最大の利点は自動的なコード リファクタリングです。結果の画面から、修正する違反を選択し、[Correct Checked] (選択項目の修正) をクリックします。CodeIt.Right で加えられたすべての変更は Visual Studio 内部で強調表示され、ボタンをクリックして自動変更をロールバックできます。
静的コード分析ツールは、ソース コードが事前定義されたデザインおよびスタイルのガイドラインに準拠していることを迅速で自動的に確認する手段を提供します。これらのガイドラインに準拠することは、より一貫性のあるコードを作成するのに役立ちます。また、セキュリティ、パフォーマンス、相互運用性、およびグローバリゼーションが潜在的に不足している箇所が指摘される場合もあります。静的コード分析ツールは、手動によるコード レビューに置き換わるものではありません。むしろ、コード ベースの最初の確認を行って、上級開発者が慎重に確認する必要のある領域を強調します。
価格: FxCop (無料)、StyleCop (無料)、CodeIt.Right (ユーザー ライセンスごとに 250 ドル)。

注目のブログ
多くの Web サイトでは、応答性の高いユーザー インターフェイスを構築するための一連のテクノロジである AJAX を取り入れてきました。AJAX 対応の Web アプリケーションの構築を助けるため、ASP.NET には、AJAX シナリオの実装の中心的な機能を提供する ASP.NET AJAX Framework が付属しています。また、マイクロソフトは AJAX コミュニティと組んで、オープン ソースの AJAX 対応 Web コントロールのセット AJAX Control Toolkit を無償でリリースしました。
AJAX 対応のサイトを構築するすべての Web 開発者は、Matt Berseth のブログをチェックする必要があります。ほとんどのブログ エントリでは、特定の Web ベースの UI を作成する方法が、ダウンロード コード、ライブ デモ、大量のコード スニペットおよびスクリーンショットを使って非常に詳しく説明されています。たとえば、あるブログ エントリでは、AJAX Control Toolkit の ListView コントロールと Accordion コントロールを使用して、Microsoft Office Outlook のナビゲーション バーをミラーリングする UI を作成する方法について説明しています。別のエントリでは、ModalPopup コントロールを GridView および DetailsView コントロールと共に使用して、編集インターフェイスがモーダル ウィンドウに表示される編集可能なグリッドを作成する方法について説明しています。Matt のブログにはデモ ギャラリーもあり、ブログ エントリ全体に分散しているライブ デモのすべてがこのページに集められています。
また、Silverlight、JavaScript、LINQ、および ASP.NET データ Web コントロールなどのテクノロジを扱った投稿もあります。数日ごとに新しい投稿が掲載される Matt のブログは、ASP.NET を使用する最先端の Web 開発者のための情報が満載です。

ご意見やご質問は、Scott (toolsmm@microsoft.com) までお送りください。


Scott Mitchell は、多数の著書を出版し、4GuysFromRolla.com の創設者でもあります。また、1998 年からは Microsoft MVP としてマイクロソフトの Web テクノロジに携わっています。現在は、フリーのコンサルタント、トレーナー、およびライターとして活躍しています。Scott の連絡先は、Mitchell@4guysfromrolla.com です。また、ScottOnWriting.NET にブログを公開しています。

Page view tracker