Roslynとは?
コンパイルの過程やコンパイラが持っている情報をAPIとして提供するコンパイラプラットフォームです。Roslynを使えば、C#のソースコードをパースしたり、メソッドや変数やの情報を取得できたりします。つい最近公開されたVisualStudio14 CTPでRoslynが使用されていることからも、今後Roslynが.NETの中核になっていくのではないかと思います。要注目ですね!
※ちなみにRoslynはオープンソースとしてCodePlexで公開されています。
最近のMicrosoftはオープンで良いですねd(*´∀`*)
使ってみよう
早速Roslynを使ってみましょう。まずはNuGetでRoslynのパッケージをインストールします。VisualStudioのメニューから[プロジェクト]‐[NuGet パッケージの管理]を選択すると下記のダイアログが開きます。左側の項目で「オンライン」を選択し、
1. 上部のコンボボックスで「リリース前のパッケージを含める」を選択
2. 右上にある検索ボックスに「Microsoft.CodeAnalysis」を入力
とすると、一番上に「Microsoft.CodeAnalysis」が出てくるので、これをインストールします。
インストールが終わった後にプロジェクトの参照設定を見ると、Microsoft.CodeAnalysis関係の項目が追加されています。
これでRoslynを使う準備は完了です。
C#のソースコードをパースしてみる
準備が出来たら実際にソースコードをパースしてみましょう。以下のコードがソースコードをパースするコードです(...と言ってもパースしてるのはMainの中の1行だけですけど(^_^;))。using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// usingは以下の2つを追加
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
namespace RoslynSample
{
class Program
{
// パース対象のコード
private static string m_sourceCode =
@"using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RoslynSample
{
class Program
{
///
/// エントリポイントです。
///
/// コマンドライン引数 static void Main(string[] args)
{
System.Console.WriteLine(""Hello Roslyn!"");
}
}
}";
static void Main(string[] args)
{
// ParseText()にパース対象のコードを渡せば、コードの構文木を作成できる。
// コードをファイルで指定する場合はParseFile()を使用する。
SyntaxTree tree = CSharpSyntaxTree.ParseText(m_sourceCode);
}
}
}
パースしたいソースコードをCSharpSyntaxTree.ParseText()に渡すだけです。
ParseText()の戻り値のSyntaxTreeは、ソースコードの構文を表した木構造になっていて、SyntaxTreeのノードであるSyntaxNodeにメソッドや変数の情報が格納されています。
次回はこのSyntaxTreeの中身を探ってみます。


0 件のコメント:
コメントを投稿