これでメンテも楽々!Visual Studio 新機能

コードのメンテナンスを行う場合、コードの変更がどこに影響するかを素早く確認する必要がありませんか?また既存のコードの変更履歴を確認した上で改変する必要ありませんか?またまた本番システムへの影響を最小限にするために別に作成された似たコードを包括的にメンテナンスする必要がありませんか?またまたまたコードの変更により単体テストのカバー範囲を確認する必要がありませんか?

これらに役立つ機能の使い方をご紹介します。

 

依存関係グラフでコードの構造を確認

依存関係グラフをご存知ですか?

依存関係グラフは、ソースコードを分析し、現状のソースの構造を視覚化して表示します。既存コードを使った開発を行うには、各コードの連携状況や、変更による影響を把握することが重要です。また設計書が不十分な場合や、以前の作成者のコメントが不足している場合には特に有効な機能になります。

依存関係グラフは、Visual Studio の [アーキテクチャ] メニューの [依存関係グラフの生成] から [ソリューション] を選択すると作成できます。

clip_image002

1.依存関係グラフ

この依存関係グラフでは「循環参照」などの問題も分析によって検出し描画します。

clip_image004

2.依存関係グラフ内の循環参照の表示

またグループ間の依存関係もグラフ上の項目をクリックすることで確認することができます。

clip_image006

3.グループ間の依存関係の表示

このような機能を使ってアセンブリ、クラス単位で継承やメソッド呼び出しの相関関係を容易に確認することができます。MSDN ライブラリにも依存関係グラフに関する説明がありますので、是非ご参照ください。

 

CodeLensで以前の変更内容を確認

実際に既存のコードを編集する際には以前の作成・変更情報を確認すると思います。

CodeLensはコード内にメタ情報として以前のコードの作成者の情報や、その変更の内容や、変更日等を保有してマウスオーバーで確認できる機能です。Lyncも同時に使用していれば、その場で作成者の状態を確認し、直接 IM や電話で確認することもできます。

clip_image008

4CodeLens での参照元の確認

clip_image010

5CodeLens での変更内容の確認

clip_image012

6CodeLens でのユニットテストの結果確認

CodeLens の説明が MSDN ライブラリにもありますので、是非参考にしてください。

 

コードクローン分析で包括的にメンテナンス

大規模システムの既存コードの改変時、現状稼働しているロジックへの影響を出さないようにするためにあえて似たような別コードを作成したり、既存のコードの存在を把握しきれずに似たようなコードを作成してしまうことがあるかと思います。これらの類似性の高いコードは保守作業において大きな問題になりやすいです。

このような類似性の高いコードや重複コードを検出するのがクローン分析機能です。

メソッドや定義内のコード フラグメントを強調表示し、ショートカット メニューで [ソリューション内で一致するクローンを検索] を実行するか、 [分析] メニューの [コード クローンのソリューション分析] を実行します。

clip_image014

7.コードクローン分析による類似性の高いコードのリストアップ

リストアップした類似性の高いコードを比較するには、 [Code Clone Results (コード クローンの結果) ] ウィンドウで 2 ファイルを選択するか、 2 ファイルを含むクローン グループを選択します。

clip_image016

8.類似性の高いコードの比較

このようにクローン コードの分析は改修箇所を的確にし抽出しコード変更を行っていくことが可能です。MSDN ライブラリにコード クローン分析に関する説明がありますので、こちらも参考にしてください。

 

テストマネージャーの影響分析で単体テストの影響範囲を確認

既存コードを変更した場合、どこまでテストをやらなければならないかを判断するのは非常に難しいかと思います。

テスト マネージャーの影響分析は、Team Foundation Server でコード、テスト ケース、テスト結果、ビルド等を管理しておけばコードの変更により必要となるテスト ケースを自動的に抽出する機能です。

clip_image018

9.テスト影響分析概念図

実際にテスト マネージャーで推奨されるテストを抽出すると、以下のような画面で実施すべきテスト ケースが確認できます。

clip_image020

10.テスト マネージャーによるテスト影響分析

自動UIテストで効率よくテストを実施

テストは工数がもっとも多くかかる工程で、実施者によっては品質のバラツキがでるとこでもあります。また同じテストを何度もやる場合、その課題は大きくなり、面倒な局面もあるかと思います。

自動UIテストはテスト ケースをコード化し、Visual Studioが自動で UI テストを行うものになります。この自動 UI テストの効果が一番上がるのは再テスト(回帰テスト)になります。多くのコードが一度作って一度きりのテストしか行わないというものはなく、何度も再テストを繰り返すことになります。

自動 UI テストを実際に使うには、対象アプリケーションへの操作をレコーディングしスクリプトとして変換します。このスクリプトをVisual Studioが自動で実行してテストすることになります。また、このスクリプトは編集することが可能です。

clip_image022

9.自動 UI テストの概念図

(実際の機能の話)

この機能を使うと複数ブラウザでの同一機能のテストを効率的に進めることも可能です。

利用しているクラウド サービスの稼働仕様の変更に伴い、お客様に提供している自社サービスの変更が必要になることがあります。また、クラウド サービスや自社サービスが変わらなくてもブラウザのバージョン アップにより自社サービスのテストおよび変更が必要になることがあります。このようなケースでは自動 UI テストを活用することが非常に有効です。

clip_image024

9.クロス ブラウザの自動 UI テスト

この自動 UI テスト機能を活用した事例としてビービーシステム様の事例があります。

ビービーシステム様では自動テスト機能を活用して1回のテストに費やされる工数を 1/3 ~ 1/5 にまで削減され、これまで改修開始からリリース準備までに2か月ほどかかっていたものが2日で終わったという例も出てきました。またテスト内容のバラツキや漏れも無くして均質化することもでき、提供するクラウド上のサービスに予防保全的な自動テストも行い顧客対応の品質を向上させました。

 

 

今回はメンテナンス開発にテーマを設定して Visual Studio の最新機能をご紹介しました。旧 .NET のバージョンでもこれらの最新機能を活用することも可能です。詳しくは「過去コードを最新VSで効率開発」で説明していますので、こちらもご確認いただけますと幸いです。

これらのVisual Studio の機能の活用が皆様のメンテナンス開発の効率化のきっかけになれば嬉しいです。