认识到C#源代码中的注释

时间:2009-03-28 23:57:35

标签: c# visual-studio-2008

如何识别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. 返回值的说明 - “true或false”
  4. 例外类型和说明
  5. 其他用户标记

4 个答案:

答案 0 :(得分:5)

最简单的方法是启用xml注释生成(项目属性 - &gt;构建),并解析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>

答案 1 :(得分: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?
*/

(而我只是抓住这些边缘情况的表面)。

答案 2 :(得分:0)

我不确定您计划如何呈现此数据,但有一个名为nDoc的开源项目可以很好地在网页中格式化这些信息。

要使用nDoc,您需要在项目设置中启用xml输出。这将以XML格式提供您的所有评论。

即使你没有使用nDoc,他们在启用XML输出时也有一些不错的instructions

答案 3 :(得分:0)

马克的答案是你最好的选择。如果您(由于某种原因)需要手动执行此操作,则需要查找以///开头的连续行,连接它们,然后将该字符串视为XML。