編集長より

解析

Michael Desmond

Michael Desmond今月号の MSDN マガジンでは、マイクロソフトのマネージ言語チームでシニア プログラム マネージャーを務める Alex Turner が、Visual Studio 2015 Preview と .NET コンパイラ プラットフォーム (旧称コードネーム "Roslyn") の新しいアナライザー機能に関する記事を執筆しています。この特集記事「Roslyn アナライザーへのコード修正の追加」は、新しいアナライザー機能について説明する 2 部構成の記事の第 2 部です。第 1 部の「Roslyn を使用した API 向けライブ コード アナライザーの作成」(msdn.microsoft.com/magazine/dn879356) については、先月の Visual Studio 2015 と Microsoft Azure を特集する特別号でご覧になれます。

このトピックに関して複数の記事を掲載していることには、理由があります。Turner が述べているように、Visual Studio 2015 に診断アナライザーが追加されたことで、開発者にとっての状況が一変し、コードの記述時に検出されたコードの問題についてリアルタイムでフィードバックを得られるようになりました。さらに、使用している API に限定したカスタム ガイダンスをアナライザーから得られます。コーディング環境全体でベスト プラクティスを実現して適用できる機能は非常に魅力的であり、今日のコード ビルドの足かせとなっている多くの一般的な欠陥やエラーの削減につながることは間違いありません。Azure Code Analysis パッケージはその代表例です。このパッケージは、クラウド アプリケーションのスケーラビリティ、信頼性、およびセキュリティを損なう可能性があるコードの問題を検出する、一連の規則を提供します。

この機能は、ビルド時のコードにしか使用できない従来のコード分析と比べると、大きな進歩です。Turner によると、この進歩に対して開発者からは「すばらしい」反応が返ってきています。Turner は次のように述べています。「コミュニティは、既に GitHub で複数のオープンソースのアナライザー プロジェクトを作成しています。たとえば、Code Cracker プロジェクトでは診断規則が 40 を超え、コミットが 300 を超えています。まだプレビュー版の Visual Studio 2015 の機能としては上出来です」

マイクロソフトがパッケージ管理に NuGet を利用すると決断したことで、早期導入に拍車がかかっています。「開発チームによる NuGet の使い方としては、外部パッケージのダウンロードだけでなく、プライベート パッケージ サーバーによる内部ライブラリ管理の実現も予想しています」と Turner は語っています。許可されているユーザーは内部ライブラリを見つけることができ、見つけた内部ライブラリと共にアナライザーを配布できます。

Turnerは、「アナライザーが検出する問題が増えるほど、ライブラリを使用しているチームから作成したチームに届く問い合わせの電子メールが減るので、開発チームは時間を節約して開発に集中できます」とも話しています。

アナライザーにまつわる誤解の 1 つは、アナライザーを作成するにはコンパイラか言語の専門家でなければならないという誤解です。Turner は、最近実施したブート キャンプ セッションを振り返っています。このセッションでは、90 分間講義した後で、参加者にアナライザーをビルドしてもらいました。

Turner は次のように述べています。「始めてから 2 時間で、参加者は既に 10 個の有益なアナライザーを作成していました。例を挙げると、接続文字列やパスワードなどの機密情報が誤って文字列リテラルにならないようにするアナライザーなどです。Roslyn を使用すると、あらゆる開発チームは、独自のコーディング プラクティスとビジネス ルールを適用するカスタム コード分析を簡単に作成できます。コード レビューまで進んでから見つかった問題で必要になるよりも、ずっと前にです」

Visual Studio 2015 のアナライザー機能を使い始めたばかりの開発者に対して、Turner はシンプルに始めることを勧めています。つまり、各規則の簡略版を実装し、徐々に発展させます。Turner によると、効果はすぐに現れます。なぜなら、検出しようとしている問題の 80% は、100 行未満のコードで捕捉できることが多いためです。

Turner は次のように付け加えています。「本当の問題を検出するアナライザーをうまく作れたら、検出できていない特殊なケースの特定を始めましょう。アナライザーが完ぺきでなくても、チームのデバッグ時間の大幅な短縮に取り掛かることはできます」


Michael Desmond* は MSDN マガジンの編集長です。*