Использование Doxygen с Visual Studio 2010 - PullRequest
12 голосов
/ 05 октября 2010

Мне трудно эффективно использовать Doxygen с Visual Studio 2010 и C ++.

Нет ли другой функции для комментирования, кроме "un / comment lines"? Например, создание заглушек комментариев и добавление /// после новой строки.

Кроме того, мне интересно, что нужно для отображения этих комментариев в функции IntelliSense в VS2010?

Ответы [ 2 ]

12 голосов
/ 05 октября 2010

Согласно документации MSDN , любые комментарии, использующие разделители // или /*, будут отображаться рядом с ассоциированным членом в списке участников IntelliSense.

Вы можете использовать doxygen'sВывод XML или документация XML , сгенерированная Visual Studio как ввод IntelliSense.

Документация /doc объясняет, как использовать документацию XML с IntelliSense:

Чтобы использовать сгенерированный файл .xml с IntelliSense, сделайте имя файла .xml таким же, как сборка, которую вы хотите поддерживать, и поместите файл .xml в тот же каталог, что и сборка.Когда на сборку ссылаются в проекте Visual Studio, также обнаруживается файл .xml.

AtomineerUtils - одна из лучших надстроек Visual Studio для doxygen / javadoc /Документация DocXML.Это не бесплатно, но ничего из списка вспомогательных инструментов doxygen не предназначено для Visual Studio 2010.

4 голосов
/ 01 ноября 2012

Лучшее, что я смог придумать самостоятельно, - это коллекция макросов. Я искал сайты, которые, возможно, собрали вместе несколько полезных макросов doxy для Visual Studio, но до сих пор были пусты. Но использование модели кода Visual Studio для автоматического заполнения документации может быть очень удобным. Вот макрос, который я сделал, чтобы создать документацию для функции, в которой в данный момент находится курсор:

Sub FunctionDoc()
    DTE.UndoContext.Open("Function Doc")
    Try
        Dim caretPosition As TextPoint = DTE.ActiveDocument.Selection.ActivePoint
        Dim element As CodeElement = _
            caretPosition.CodeElement(vsCMElement.vsCMElementFunction)
        If element.Kind <> vsCMElement.vsCMElementFunction Then
            MsgBox("That is not a function")
            Exit Sub
        End If
        Dim func As CodeFunction = element
        If func Is Nothing Then
            MsgBox("That is not a function")
            Exit Sub
        End If

        Dim ts As TextSelection = DTE.ActiveDocument.Selection
        ts.StartOfLine()
        ts.NewLine()
        ts.LineUp()
        Dim functionName As String = func.Name
        ts.Text = "//-----------------------------------------------------------------------------"
        ts.NewLine()
        ts.Text = "//  FUNCTION  "
        ts.Text = func.FullName
        ts.NewLine()
        ts.Text = "/// \brief    "
        Dim endline As Integer = ts.BottomPoint.Line
        Dim endoffset As Integer = ts.BottomPoint.LineCharOffset
        ts.NewLine()
        ts.Text = "///           "
        ts.NewLine()
        For Each param As CodeParameter In func.Parameters
            ts.Text = "/// \param    "
            ts.Text = param.Name
            ts.Text = ". "
            ts.NewLine()
        Next
        If func.Type.TypeKind <> vsCMTypeRef.vsCMTypeRefVoid Then
            ts.Text = "/// \return   "
            ts.Text = func.Type.AsFullName
            ts.Text = " "
            ts.NewLine()
        End If
        ts.Text = "//-----------------------------------------------------------------------------"
        ts.MoveToLineAndOffset(endline, endoffset)

    Finally
        DTE.UndoContext.Close()
    End Try
End Sub

Не стесняйтесь редактировать или повторно использовать этот макрос, и я приветствую любые критические замечания.

...