Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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