C# のデバッグ環境を飛躍的に向上させる Visual Studio 拡張機能の OzCode を紹介します。
OzCode は、イスラエルの CodeValue 社が提供している製品で、Visual Studio に組み込むことにより、バグをピンポイントで発見したり、必要なデータにのみフォーカスできるようになるため、デバッグに費やす時間を軽減することができます。
特に LINQ のデバッグに頭を悩ませている開発者の方にとっては、必見のデバッグ支援ツールです。OzCode の主な機能は、以下の通り。
- LINQ のデバッグ : さまざまなアイテムが LINQ パイプラインをどのように通過したかを正確に把握でき、すべてのラムダ式の戻り値を確認できます。
- Magic Glance (マジックグランス) : ステップ スルーしたコードの各行の概要を表示して、コードの実態を視覚的に確認できます。
- 検索 : コレクションのサイズやオブジェクト グラフの複雑さに関係なく、迅速かつ簡単にメンバー名と値を検索できます。
- 予測 : 任意のループのどこにいるかを常に追跡、コレクション内の特定の項目に移動で
きます。 - 比較 : 深い構造にドリルダウンするために使用できるサイド・バイ・サイド ビュー内のオブジェクトとコレクションを比較できます。ワンクリックでオブジェクトやコレクションを比較できます。比較結果は横並びに表示され、ストラクチャを掘り下げて比較することも可能です。
などなど。今回は、OzCode の目玉機能となっている LINQ のデバッグを紹介します。
OzCode を使うとデバッグ中に、実行ポイント (黄色の行) が LINQ クエリに達すると、各 LINQ オペレーターの横にインジケーターが表示され、生成されたアイテムの数が示されます。
これらのインジケーターにより、各オペレーターが使用したアイテム数と生成されたアイテム数を一目で把握できるため、確認が必要なオペレーターを決めるのに役立ちます。
数値インジケーターをクリックすると、OzCode は LINQ デバッグモードになり、対象のオペレーターが生成したアイテムを示す LINQ DataTip ウィンドウが開きます。DataTip の “before/after” ボタンを押すと、生成されたアイテムとそのオペレーターが使用したアイテムを切り替えて表示することができます。
アイテムをクリックすると、ヘッドアップ ディスプレイが更新され、各ラムダ式が LINQ パイプラインを通じて引き渡した特定のアイテムとして返されたものが反映されます。また、マウスホイールを数値インジケータ上で動かすと、デバッグコードの値がすぐに変化することを確認しながらアイテム間を移動することもできます。
DataTip ウィンドウから、またはデバッグ対象のクエリの左に表示されるラムダアイコンをクリックして、詳細な解析ツールのウィンドウを開くことができます。
OzCode の Search と Reveal 機能を使用して対象のオブジェクトを検索したり、オペレーターのパンくずリストで LINQ パイプライン間を移動して、LINQ クエリのフローを視覚化することもできます。
対応が最も難しいバグの 1 つは、複雑な LINQ クエリの深い部分から例外がスローされたときで、これはデバッグがほとんど不可能です。OzCode は LINQ 数値インジケーターを赤で強調表示し、LINQ DataTip または LINQ Analysis ウインドウを使用してドリルダウンし、例外を発生させているアイテムの調査を可能にします。
LINQ を使用して、コレクションにクエリを発行してフィルタしたり、コレクションを操作する場合、開発者はラムダベースの Fluent API または SQL のようなクエリ式の 2 つのオプションを選択できます。
どのシンタックスを使用するかは、個人の好みや問題の性質によります。Fluent シンタックスは、より簡潔であり、クエリが単純な場合に向いています。一方、より複雑なクエリの方が、クエリのシンタックスをはるかに簡単に表現できるため、’let’ キーワードや複数の from 句を活用して複雑なデータを扱うことができます。
OzCode は LINQ の両方の特色を完全にサポートしています。クエリ シンタックスを使用した場合、OzCode はどのアイテムがどの from 句から来たのか、各アイテムの let 式で計算された値などを視覚的に強調表示します。
この様な具合に、OzCode を使用することで、LINQ のデバッグに頭を悩ますこともなくなります。その他の機能の詳細については、弊社の OzCode 製品ページでご確認ください。
百聞は一見に如かずなので、30日間の無償評価版を使って、OzCode の凄さを実際に体験してみてください。
OzCode の購入・自動見積はこちらからどうぞ。