Использование Doxygen с Visual Studio 2010

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

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

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

2 ответов


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

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

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

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

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


лучшее, что я смог придумать на свою коллекцию макросов. Я искал веб-сайты, которые, возможно, объединили некоторые полезные макросы Visual Studio doxygen вместе, но до сих пор ничего не нашли. Но использование модели кода 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

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