Распознавание комментариев в исходном коде C # - PullRequest
2 голосов
/ 29 марта 2009

как распознать комментарий в исходном коде 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 ]

5 голосов
/ 29 марта 2009

Самый простой способ - включить генерацию комментариев xml (свойства проекта -> build) и проанализировать файл 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 голос
/ 29 марта 2009

Если вы действительно хотите получить удовольствие, вы можете создать парсер. Я полагаю, это зависит от того, чего вы пытаетесь достичь, почему и какие ресурсы / время вы должны вложить в это. Если вы собираетесь попытаться проанализировать 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?
*/

(и я просто царапаю поверхность этими краевыми чехлами).

0 голосов
/ 29 марта 2009

Ответ Марка - ваша лучшая ставка. Если вы (по какой-то причине) хотели сделать это вручную, вам нужно искать непрерывные серии строк, начинающиеся с ///, объединять их и затем обрабатывать эту строку как XML.

0 голосов
/ 29 марта 2009

Я не уверен, как вы планируете представлять эти данные, но есть проект с открытым исходным кодом под названием nDoc , который хорошо форматирует эту информацию на веб-странице.

Чтобы использовать nDoc, вам нужно включить вывод xml в настройках проекта. Вы получите все ваши комментарии в формате XML.

Даже если вы не используете nDoc, у них есть хорошие инструкции по включению вывода XML

...