2

私は、C# コード ファイルのコレクションを提供し、それらをテスト容易性の問題について分析できるようにするプログラムを作成しようとしています。前のリンクで提供されている 4 つだけから始めています。

最終的な目標は、すべてのファイル、それらが持つ可能性のあるテスト可能性の問題、およびこれらの問題が観察される可能性のある場所に関する特定のコード注釈 (該当する場合) のレポートを作成することです。私が助けてほしいのは、コードの解析作業を簡単にするツールを選択することです。すべてを文字列として読み取ることはできますが、その状況でコードを分析するために順序を決めることは非常に困難です。

これまでに以下の点を評価しました。

  • FxCop (.dll 以外では機能しません。いくつかのテスト プロジェクトは、コントローラーまたはプレゼンターにテスト可能なロジックを含む Web プロジェクトです)
  • Code Contracts (私が必要とするものではありません。これは問題の特定には役立ちません)
  • ペックス(同上)
  • NRefactory (興味深いかもしれませんが、Windows に gtk/mono がインストールされていても、ドキュメントと使用法に関する情報が存在せず、デモが壊れています)
  • CSharpCodeProvider (.Parse メソッドは NotImplementedException を返します)

私が探している限り:

少なくとも、基本的なオブジェクト構造とアクセサー オブジェクトを検出してナビゲートしたいと考えています (たとえば、FileオブジェクトにはClassesのコレクションを持つNamespaceプロパティがあり、各ClassにはMemberConstructors、およびMethodsなどのコレクションがあります)。明らかに、より精巧で詳細なツールがあればそれは素晴らしいことですが、これらのツールを利用して、小さくて焦点を絞った文字列を処理できるようにすることは、完全な天の恵みです.

前もって感謝します。

4

2 に答える 2

3

プレリリース コードを使用できる場合は、roslyn、つまり「サービスとしてのコンパイラ」を確認することをお勧めします。

伝統的に、コンパイラはブラック ボックスです。ソース コードが一方の端から出て、オブジェクト ファイルまたはアセンブリが他方の端から出てきます。Roslyn [プロジェクト]は、Visual Basic および C# コンパイラを API として公開することで、そのモデルを変更します。これらの API により、ツールとエンド ユーザーは、コンパイラがコードに関して持っている豊富な情報を共有できます。

ただし、取得したもの (構文ツリー) を解釈するのは依然として大変な作業になる可能性があることに注意してください。

于 2012-05-03T17:01:03.983 に答える
1

NRefactory 5は、C# の Roslyn とほぼ同じ分析機能を C# に提供しますが、IL にコンパイルする機能が「のみ」欠けています。

GTK ベースのデモで何が起こっているのかわかりません。そのため、WinForms ベースのデモを修正し、それをソリューションに追加しました。

C# コードを解析するには、 を使用しますnew CSharpParser().Parse(sourceCode, "filename.cs")。これにより、ファイルの完全な構文ツリーが得られます。つまり、子として s を持つCompilationUnitルート ノードです。NamespaceDeclarationデモ アプリケーションを使用して、ツリーがどのように見えるかを確認します。

特定のコード パターン (テスト容易性の問題) を検出したい場合は、NRefactory のパターン マッチング機能を使用できます。(詳細はdoc/Pattern Matching.htmlを参照)

パターン マッチングを使用した NRefactory は、あなたのユースケースでは Roslyn よりもうまく機能すると思います。

于 2012-05-19T11:04:59.423 に答える