2011-07-28 11 views
1

私はresharperのためのテストフレームワーク拡張を書いてみたいです。このためのドキュメントは次のとおりです。http://confluence.jetbrains.net/display/ReSharper/Test+Framework+Support特定のJetBrains.ReSharper.Psi.IDeclaredElementのファイル名と行番号を取得する方法は?

特定のコードがテストの一部であるかどうかを示す1つの側面です。コードの一部は、IDeclaredElementとして表されます。

特定のIDeclaredElementで表されるコードのファイル名と行番号を取得できますか?以下の応答まで続い

@Evgenyあなたは私のために一点を明確にすることができた場合、その答えのためのおかげで、私は疑問に思います。

ビジュアルスタジオでこのテストを開いたとします。https://github.com/fschwiet/DreamNJasmine/blob/master/NJasmine.Tests/SampleTest.cs ユーザーが「player.Resume()」という行48を右クリックしたとします。 IDeclaredElementは、特に48行目で実行したいと教えてくれますか?それとも、クラス全体に対応するIDeclaredElementと、クラス全体のファイル名/行番号の範囲を私に与えようとしていますか?

私はこれで自分自身で遊ぶべきですが、私はあなたがすでに知っているものをタップしていただきありがとうございます。

答えて

3

はい。

"IDeclaredElement"エンティティは、コードシンボル(クラス、メソッド、変数など)です。アセンブリメタデータからロードすることも、ソースコードで宣言することも、ソースコードから暗黙的に呼び出すこともできます。

あなたは

その後、任意のIDeclarationのために、あなたは

を使用することができます(たとえば、これは部分クラスに対して複数の宣言を返すことができます)、それが宣言し、すべてのAST要素を取得するために

var declarations = declaredElement.GetDeclarations() 

を使用することができます

ところで、どのテストフレームワークの拡張機能を開発していますか?

+0

感謝をASTツリーをトラバースし、特異的な発現/文の文書の座標を確認してください。フレームワークはhttps://github.com/fschwiet/DreamNJasmine/です。 –

+0

Evgeny私は返されるものの詳細を求める質問を更新しました。ご協力いただきありがとうございます。 –

0

IDeclaredElementは、具体的には、 行48で実行しますか?

もう一度:IDeclaredElementにファイル内の位置がありません。代わりに、宣言にはそれらがあります。 すべての宣言(IDeclarationは通常のASTノード)には、それをカバーする文書内の範囲があります。前の例では、TextRange.EndOffsetを使用することはできますが、TextRange.StartOffsetを使用しました。

ファイルでより多くのprcise位置が必要な場合は、応答のための

+0

ありがとうEvgeny。私は、IDeclaredElementとGetDeclarations()によって返されたオブジェクトの違いを気にしていませんでした。なぜなら、私がクリックされたデリゲート内の特定の要素を取得できるかどうか、全体的な機能にもっと関心があるからです。それはASTで利用できるように聞こえる。私は行番号に焦点を当てていましたが、それについて考えてみれば、誰かが同じ行に他のものをたくさん置く可能性があるからです。とにかく、歓声 –

関連する問題