Извлечение комментариев к документу из исходного файла C#
Кто-нибудь знает какие-либо инструменты, которые позволяют извлекать комментарии непосредственно из файла.cs в какой-то простой текст или даже в буфер обмена? Еще лучше, если такой инструмент может работать на уровне метода тоже.
Я не ищу что-то вроде Sandcastle, которое работает во время сборки, я ищу что-то, что работает с отдельными файлами исходного кода. В основном мне нужно скопировать часть сигнатур методов и связанных комментариев к документу в текстовый файл, но мне надоело удалять "///" и переформатировать строки. Я хотел бы иметь возможность щелкнуть правой кнопкой мыши на метод и иметь пункт контекстного меню в соответствии с "Копировать документацию в буфер обмена".
Существуют ли такие инструменты?
3 ответа
Не нужно накатывать свои собственные, взгляните на cr-documentor.
CR_Documentor - это плагин для DXCore, который позволяет вам предварительно просмотреть, как будет выглядеть документация при ее визуализации - в окне инструментов внутри Visual Studio.
Он работает довольно хорошо, но я подозреваю, что он работает вместе с Resharper немного шатко, поэтому я отключаю его, пока не буду его использовать.
Я только что написал инструмент, который делает это. Это всего лишь несколько строк кода, и он еще не закончен, но его очень просто расширить (я мог бы сделать это где-нибудь завтра).
Результат: просто нажмите извлечь из меню, и результат будет в буфере обмена.
Два очень простых шага:
- Напишите программу, которая принимает файл в качестве аргумента, берет некоторый текст из этого файла и вставляет их в буфер обмена.
- Интегрируйте эту программу в вашу IDE.
ШАГ 1, часть 1 Основная программа, возьмите файл, отправьте его в "экстрактор" и запишите результаты в буфер обмена.
class Program
{
[STAThread]
static void Main(string[] args)
{
if (args.Length == 0) return;
FileInfo f = new FileInfo(args[0]);
Extracter e = new Extracter(f.OpenText().ReadToEnd());
Clipboard.SetText(e.GetExtractedText());
}
}
ШАГ 1, часть 2 Экстрактор: извлеките из него все необходимые текстовые шаблоны, используя, конечно, регулярное выражение, и верните соответствующую строку. Я пропустил комментарии для плотности поста, и так как принцип прост и уже объяснен.
public class Extracter
{
private Regex re;
// extend/adapt regex patterns for better result.
const String RE_COMMENT_AND_NEXT_LINE= @"(?<=([\/]{3})).+";
public string FileText { get; set; }
public Extracter(String FileText)
{
this.FileText = FileText;
}
public String GetExtractedText()
{
StringBuilder sb = new StringBuilder(String.Empty);
re = new Regex(RE_COMMENT_AND_NEXT_LINE);
foreach (Match match in re.Matches(FileText))
{
sb.Append(match.ToString());
}
return sb.ToString();
}
}
ШАГ 2: Добавить в IDE
От этого IDE зависит конечно, но всегда легко. Смотрите мой скриншот для VS2008:
Форма комментариев.cs файлы автоматически отправляются в XML-файл. Ниже приведены инструкции:
- Откройте свойства проекта -> Построить
- перейти вниз, есть раздел "Вывод"
- Установите флажок для "XML-файла документации" и установите выходной путь для этого файла.
- в этот файл будет скопирована вся документация вашего кода при его создании.
Как только вы получите все комментарии от вашего проекта, вы можете использовать его так, как вы хотите.
http://msdn.microsoft.com/en-us/magazine/cc302121.aspx
рекомендация:
Вы можете отключить его во время повседневной работы, так как если размер проекта увеличивается, то во время сборки потребуется время, чтобы сгенерировать этот файл, поскольку ему нужно собрать все комментарии. Просто запустите, когда вы выпускаете код, чтобы получить всю документацию.