.NET Compiler Platform SDKThe .NET Compiler Platform SDK

コンパイラでは、コードの構文とセマンティクスを検証するように、アプリケーション コードの詳細なモデルをビルドします。Compilers build a detailed model of application code as they validate the syntax and semantics of that code. このモデルを使用して、ソース コードから実行可能な出力をビルドします。They use this model to build the executable output from the source code. .NET Compiler Platform SDK では、このモデルへのアクセスが提供されます。The .NET Compiler Platform SDK provides access to this model. Microsoft では、生産性を向上させるために、IntelliSense、リファクタリング、インテリジェントな名前の変更、"すべての参照の検索"、"定義へ移動" などの統合開発環境 (IDE) 機能をますます使用するようになっています。Increasingly, we rely on integrated development environment (IDE) features such as IntelliSense, refactoring, intelligent rename, "Find all references," and "Go to definition" to increase our productivity. コードの品質を向上させるためにコード分析ツールを使用し、アプリケーションの構築に役立てるためにコード ジェネレーターを使用します。We rely on code analysis tools to improve our code quality, and code generators to aid in application construction. これらのツールがスマートになったので、アプリケーション コードを処理するときに、コンパイラのみが作成するモデルにますますツールがアクセスする必要が生じます。As these tools get smarter, they need access to more and more of the model that only compilers create as they process application code. これが Roslyn API の主要な目的です。ブラック ボックスを開いて、ツールとエンド ユーザーが豊富な情報コンパイラを共有することを許可するためにこのコードがあります。This is the core mission of the Roslyn APIs: opening up the black boxes and allowing tools and end users to share in the wealth of information compilers have about our code. コンパイラは Roslyn の使用により、ソース コード イン、オブジェクト コード アウトの曖昧なトランスレーターではなく、次のようなプラットフォームになります。ツールとアプリケーションのコード関連のタスクで使用できる API。Instead of being opaque source-code-in and object-code-out translators, through Roslyn, compilers become platforms: APIs that you can use for code-related tasks in your tools and applications.

.NET Compiler Platform SDK の概念.NET Compiler Platform SDK concepts

.NET Compiler Platform SDK は、コードにフォーカスされたツールとアプリケーションの作成における参入障壁を劇的に低くします。The .NET Compiler Platform SDK dramatically lowers the barrier to entry for creating code focused tools and applications. これにより、メタプログラミング、コードの生成と変換、C# と VB 言語の対話型の使用、ドメイン固有の言語での C# と VB の埋め込みなどの領域で多くの革新の機会を生み出します。It creates many opportunities for innovation in areas such as meta-programming, code generation and transformation, interactive use of the C# and VB languages, and embedding of C# and VB in domain specific languages.

.NET Compiler Platform SDK では、コードの誤りを見つけるアナライザーと、修正するコード修正機能をビルドできます。The .NET Compiler Platform SDK enables you to build analyzers and code fixes that find and correct coding mistakes. アナライザーでは、構文とコードの構造を理解し、修正すべき慣用・誤実装・非推奨実装を検出します。Analyzers understand the syntax and structure of code and detect practices that should be corrected. コード修正機能では、アナライザーによって検出されたコードの誤りに対処するために、1 つまたは複数の修正方法が提案されます。Code fixes provide one or more suggested fixes for addressing coding mistakes found by analyzers. 通常、アナライザーと関連付けられているコード修正は、1 つのプロジェクトにまとめてパッケージ化されます。Typically, an analyzer and the associated code fixes are packaged together in a single project.

アナライザーとコード修正機能では、スタティック分析を使用してコードを理解します。Analyzers and code fixes use static analysis to understand code. コードを実行したり、その他のテストのメリットを提供したりすることはありません。They do not run the code or provide other testing benefits. ただし、バグ、メンテナンスできないコード、または標準ガイドラインの検証につながることが多い使用方法を指摘することができます。They can, however, point out practices that often lead to bugs, unmaintainable code, or standard guideline validation.

.NET Compiler Platform SDK では、C# または Visual Basic のコードベースを調査および理解できる API のセットが 1 つ提供されます。The .NET Compiler Platform SDK provides a single set of APIs that enable you to examine and understand a C# or Visual Basic codebase. この単一のコードベースを使用できるため、.NET Compiler Platform SDK によって提供される構文と意味の分析 API を利用して、簡単にアナライザーとコード修正機能を記述できます。Because you can use this single codebase, you can write analyzers and code fixes more easily by leveraging the syntactic and semantic analysis APIs provided by the .NET Compiler Platform SDK. コンパイラによって行う分析を何度も繰り返している大規模なタスクから解放されると、プロジェクトやライブラリの一般的なコーディング エラーの検出と修正という、より集中したタスクに専念することができます。Freed from the large task of replicating the analysis done by the compiler, you can concentrate on the more focused task of finding and fixing common coding errors for your project or library.

小さな利点として、独自のプロジェクトでコード解析機能を記述するよりも、Visual Studio で読み込んだほうがアナライザーとコード修正機能が小さくなり、使用するメモリがはるかに少なくなります。A smaller benefit is that your analyzers and code fixes are smaller and use much less memory when loaded in Visual Studio than they would if you wrote your own codebase to understand the code in a project. コンパイラと Visual Studio とで使用される同じクラスを利用して、独自の静的分析ツールを作成できます。By leveraging the same classes used by the compiler and Visual Studio, you can create your own static analysis tools. つまり、チームは IDE のパフォーマンスに顕著な影響をあたえることなく、アナライザーとコード修正機能を使用できるということです。This means your team can use analyzers and code fixes without a noticeable impact on the IDE's performance.

アナライザーとコード修正機能の記述には、3 つの主なシナリオがあります。There are three main scenarios for writing analyzers and code fixes:

  1. チームのコーディング標準を適用するEnforce team coding standards
  2. ライブラリ パッケージと共にガイダンスを提供するProvide guidance with library packages
  3. 一般的なガイダンスを提供するProvide general guidance

チームのコーディング標準を適用するEnforce team coding standards

多くのチームには、他のチーム メンバーとのコード レビューを介して適用されたコーディング標準があります。Many teams have coding standards that are enforced through code reviews with other team members. アナライザーとコード修正を使用すると、このプロセスの効率をさらに高めることができます。Analyzers and code fixes can make this process much more efficient. 開発者がチームの他のユーザーと作業を共有するときに、コード レビューが行われます。Code reviews happen when a developer shares their work with others on the team. 開発者はコメントを受け取る前に、新機能を完成させるために必要な投資を常に行うことになります。The developer will have invested all the time needed to complete a new feature before getting any comments. チームの慣行に合わない習慣を徹底するには、数週間かかる場合があります。Weeks may go by while the developer reinforces habits that don't match the team's practices.

開発者がコードを記述すると同時にアナライザーは実行されます。Analyzers run as a developer writes code. 開発者は、すぐにガイダンスに従うように促す即時フィードバックを受け取ります。The developer gets immediate feedback that encourages following the guidance immediately. 開発者はプロトタイプの作成を始めるとすぐに、準拠したコードを記述する習慣を身に付けます。The developer builds habits to write compliant code as soon as they begin prototyping. そのコードが人間によるコードレビューできるようになるときには、すべての標準的なガイダンスが適用されています。When the feature is ready for humans to review, all the standard guidance has been enforced.

チームは、チームのコーディング規約に違反している一般的な規約を探すアナライザーとコード修正機能をビルドできます。Teams can build analyzers and code fixes that look for the most common practices that violate team coding practices. これらは標準を適用するために、各開発者のマシンにインストールできます。These can be installed on each developer's machine to enforce the standards.

ライブラリ パッケージと共にガイダンスを提供するProvide guidance with library packages

NuGet には .NET 開発者が使用できる豊富なライブラリがあります。There are a wealth of libraries available for .NET developers on NuGet. それらは Microsoft から提供されたり、サード パーティの会社から提供されたり、コミュニティ メンバーやボランティアから提供されたものです。Some of these come from Microsoft, some from third-party companies, and others from community members and volunteers. 開発者がこれらのライブラリを活用すると、ライブラリはより多く導入され、さらによいレビューを得ることができます。These libraries get more adoption and higher reviews when developers can succeed with those libraries.

ドキュメントの提供のほか、ライブラリの一般的な誤用を見つけて修正するアナライザーとコード修正を提供できます。In addition to providing documentation, you can provide analyzers and code fixes that find and correct common mis-uses of your library. これらの迅速な修正は、開発者が早く成功するために役立ちます。These immediate corrections will help developers succeed more quickly.

NuGet 上の自分のライブラリを使用して、アナライザーとコード修正をパッケージ化することができます。You can package analyzers and code fixes with your library on NuGet. このシナリオでは、お客様の NuGet パッケージをインストールする開発者もすべて、このアナライザー パッケージをインストールします。In that scenario, every developer who installs your NuGet package will also install the analyzer package. お客様のライブラリを使用しているすべての開発者が、誤りや修正案への即時フィードバックの形式で、お客様のチームからガイダンスをすぐに受け取ります。All developers using your library will immediately get guidance from your team in the form of immediate feedback on mistakes and suggested corrections.

一般的なガイダンスを提供するProvide general guidance

.NET 開発者コミュニティは、適切に動作するパターンと避けた方がよいパターンの経験によって見いだされました。The .NET developer community has discovered through experience patterns that work well and patterns that are best avoided. 数人のコミュニティ メンバーが、推奨されるパターンを適用するアナライザーを作成しています。Several community members have created analyzers that enforce those recommended patterns. 理解を深めると、常に新しいアイデアの余地が生まれます。As we learn more, there is always room for new ideas.

これらのアナライザーは、Visual Studio Marketplace にアップロードしたり、Visual Studio を使用して開発者がダウンロードしたりすることができます。These analyzers can be uploaded to the Visual Studio Marketplace and downloaded by developers using Visual Studio. 言語とプラットフォームの初心者の方は承認済みのプラクティスをすばやく学習し、.NET 体験で生産性を早く向上させることができます。Newcomers to the language and the platform learn accepted practices quickly and become productive earlier in their .NET journey. これらが広く使われるようになると、コミュニティがこれらのプラクティスを導入します。As these become more widely used, the community adopts these practices.

次の手順Next steps

.NET Compiler Platform SDK には、コードの生成、分析、リファクタリングを行うために、最新の言語オブジェクト モデルが含まれています。The .NET Compiler Platform SDK includes the latest language object models for code generation, analysis, and refactoring. このセクションでは、.NET Compiler Platform SDK の概念的な概要を示します。This section provides a conceptual overview of the .NET Compiler Platform SDK. 詳細については、クイックスタート、サンプル、チュートリアルのセクションで確認できます。Further details can be found in the quickstarts, samples and tutorials sections.

.NET Compiler Platform SDK の概念の詳細については、次の 5 つのトピックを参照してください。You can learn more about the concepts in the .NET Compiler Platform SDK in these five topics:

まず .NET Compiler Platform SDK をインストールする必要があります。To get started, you'll need to install the .NET Compiler Platform SDK:

インストール手順 - Visual Studio インストーラーInstallation instructions - Visual Studio Installer

Visual Studio インストーラー.NET Compiler Platform SDK を見つけるには、以下の 2 つの異なる方法があります。There are two different ways to find the .NET Compiler Platform SDK in the Visual Studio Installer:

Visual Studio インストーラーを使用したインストール - ワークロード ビューInstall using the Visual Studio Installer - Workloads view

.NET Compiler Platform SDK は、Visual Studio 拡張機能の開発ワークロードの一部として自動的に選択されません。The .NET Compiler Platform SDK is not automatically selected as part of the Visual Studio extension development workload. 省略可能なコンポーネントとして選択する必要があります。You must select it as an optional component.

  1. Visual Studio インストーラーを実行します。Run Visual Studio Installer
  2. [変更] を選択します。Select Modify
  3. Visual Studio 拡張機能の開発ワークロードを確認します。Check the Visual Studio extension development workload.
  4. 概要ツリーの [Visual Studio 拡張機能の開発] ノードを開きます。Open the Visual Studio extension development node in the summary tree.
  5. [.NET Compiler Platform SDK] のチェック ボックスをオンにします。Check the box for .NET Compiler Platform SDK. 省略可能なコンポーネントの最後に表示されます。You'll find it last under the optional components.

また、必要に応じて、DGML エディターのビジュアライザーでグラフを表示します。Optionally, you'll also want the DGML editor to display graphs in the visualizer:

  1. 概要ツリーの [個別のコンポーネント] ノードを開きます。Open the Individual components node in the summary tree.
  2. [DGML エディター] のチェック ボックスをオンにします。Check the box for DGML editor

Visual Studio インストーラーを使用したインストール - [個別のコンポーネント] タブInstall using the Visual Studio Installer - Individual components tab

  1. Visual Studio インストーラーを実行します。Run Visual Studio Installer
  2. [変更] を選択します。Select Modify
  3. [個別のコンポーネント] タブを選択します。Select the Individual components tab
  4. [.NET Compiler Platform SDK] のチェック ボックスをオンにします。Check the box for .NET Compiler Platform SDK. [コンパイラ、ビルド ツール、およびランタイム] セクションの上部に表示されます。You'll find it at the top under the Compilers, build tools, and runtimes section.

また、必要に応じて、DGML エディターのビジュアライザーでグラフを表示します。Optionally, you'll also want the DGML editor to display graphs in the visualizer:

  1. [DGML エディター] チェック ボックスをオンにします。Check the box for DGML editor. [コード ツール] セクションに表示されます。You'll find it under the Code tools section.