2012-05-03 6 views
2

私はそれにC#コードファイルのコレクションを与え、それらをtestability problemsのために分析できるようにするプログラムを書こうとしています。私は前のリンクで提供された4つだけで始まります。テスト容易性を評価するためのC#コードのパーサー?

最終的な目標は、すべてのファイル、テスト可能性の問題、およびこれらの問題が発生する可能性のある箇所での特定のコード注釈のレポートを作成することです。私が助けたいのは、コードを簡単に解析するためのツールを選択することです。私は文字列としてすべてを読むことができますが、その状況を分析するコードを整理することは非常に困難です。

私はこれまでのところ、以下のことを評価した:

  • FxCop(いくつかのテストプロジェクトはそのコントローラまたはプレゼンターでテスト可能なロジックを持つWebプロジェクトです、.dllファイルではありません何のために機能していない)
  • Code Contracts(私は必要ないものを、これは問題を識別しやすくしません)
  • Pex(同上)
  • NRefactory(興味深いことが、ドキュメント、および使用方法の情報がnである可能性があります限り私が探しているものと

(.Parse方法は、NotImplementedExceptionを返す)

  • CSharpCodeProvider)onexistantやデモであっても窓にインストールGTK /モノで、壊れている:

    私は少なくともにナビゲートするための基本的なオブジェクト構造とアクセサオブジェクトの検出を持っていると思います(例えば、ファイルオブジェクトがクラスの収集、各クラスと名前空間性質を持っていメンバーのコレクションを持っています。コンストラクタ、およびメソッドなど)があります。明らかに、より洗練され、詳細になるツールがあれば、驚くべきことですが、これらのものを利用して、小さくて集中した文字列を処理できるようにするのは、完全な神です。

    ありがとうございます。

  • +4

    [CodeDom。](http://msdn.microsoft.com/en-us/library/system.codedom.aspx)を探しているようですね –

    +1

    私はあなたが間違っていると思います。私は、テスト可能ではないコーディングガイドラインと一致しないコードを作成できないという立場からアプローチすべきだと思います。私はWPF/Win32/dllプロジェクトの巨大なソリューションでFxCopを設定することに問題はありませんでした。 –

    +0

    @Ramhoundこの場合コントローラ/プレゼンターをテスト/分析するには? –

    答えて

    3

    あなたはプレリリースコードを使用することができる場合、あなたはroslynをチェックアウトする場合があります、つまり「サービスとしてのコンパイラ」:

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

    しかし、あなたが得意なこと(構文木)を解釈することは、依然として多くの作業になるかもしれません。

    1

    NRefactory 5は、C#のRoslyn for C#とほぼ同じ分析機能を提供しますが、ILのみをコンパイルする機能はありません。

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

    C#コードの解析にはnew CSharpParser().Parse(sourceCode, "filename.cs")を使用してください。これにより、ファイルの完全な構文ツリーが表示されます。すなわちCompilationUnitルートノードNamespaceDeclarationを子として持つ。デモアプリケーションを使用して、ツリーの外観を確認します。

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

    私は、パターンマッチングでNRefactoryがあなたの用途に合わせてRoslynよりもうまくいくかもしれないと思います。

    関連する問題