2009-03-28 12 views
2

C#ソースコード内のコメントをどのように認識するのですか? コメントからすべての情報を取得したいと思います。C#ソースコード内のコメントを認識する

public class TestClass 
    { 
     /// <summary> 
     /// Sample method 
     /// </summary> 
     /// <param name="a">1 argument</param> 
     /// <param name="b">2 argument</param> 
     /// <param name="c">3 argument</param> 
     /// <returns>true or false</returns> 
     /// <exception cref="NotImplementedException">Always throw exception</exception> 
     public bool Method(int a, object b, Panel c) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
  1. 方法の説明 - "サンプル・メソッド" パラメータの
  2. 説明 - 返される値の "1つの引数、..."
  3. 説明 - "真または偽"
  4. 例外の種類と説明
  5. 他のユーザータグ

答えて

5

最も簡単な方法のwoul XMLコメント生成(プロジェクトのプロパティ - >ビルド)を有効にすることD、およびXMLファイルを解析...

<?xml version="1.0"?> 
<doc> 
    <assembly> 
     <name>ClassLibrary2</name> 
    </assembly> 
    <members> 
     <member name="M:TestClass.Method(System.Int32,System.Object,System.Windows.Forms.Panel)"> 
      <summary> 
      Sample method 
      </summary> 
      <param name="a">1 argument</param> 
      <param name="b">2 argument</param> 
      <param name="c">3 argument</param> 
      <returns>true or false</returns> 
      <exception cref="T:System.NotImplementedException">Always throw exception</exception> 
     </member> 
    </members> 
</doc> 
+0

しかし、XMLファイルがないとどうしたらいいですか? 正規表現を使用できますか? –

+0

C#をお持ちの方は、いつでもxmlファイルを取得するためにコンパイルすることができます...正規表現を試すことはできますが、簡単にできます。 –

+0

しかし、私はプロジェクトへのアクセス権がなく、コンパイルできません。私は特定のファイルしか持っていません。 –

0

私はどのようにあなたの計画このデータを提示する上でわからないんだけど、オープンソースプロジェクトがありますこの情報をウェブページできちんと整形するnDocと呼ばれています。

nDocを使用するには、プロジェクト設定でxml出力を有効にする必要があります。これにより、すべてのコメントがXML形式で取得されます。あなたがたNdoc彼ら

0

マルクの答えはあなたの最善の策であるXML出力を有効にするいくつかの素晴らしいinstructionsを使用していない場合でも

。何らかの理由で手動で行うことを望む場合、///で始まる連続した行を探して連結し、その文字列をXMLとして扱う必要があります。

1

本当にgung hoを取得したい場合は、パーサーを構築することができます。私はそれがあなたが達成しようとしていること、なぜ、そしてあなたがそれに入れなければならないリソース/時間に依存すると思います。 C#の解析を試みる場合は、ANTLRまたは別のパーサ/コンパイラジェネレータを検討してください。

私は複雑さのスペクトルの反対側にジャンプしていますが、私はあなたの状況を知らないので、適切かもしれません。

コメントは本格的なパーサなしでは難しいかもしれません。

// Blah blah // another double slash on the same line. 
/* 
What about multi-line comments? 
*/ 

/* 
    // What about double-slash comments inside of multi-line comments? 
*/ 

(これらのエッジケースで表面を傷つけるだけです)。

関連する問題