Использование Doxygen с Visual Studio 2010
У меня есть трудности с эффективностью использования Doxygen с Visual Studio 2010 и С++.
Нет ли другой функции для комментариев, чем "строки un/comment"? Например, создайте куски комментариев и добавьте ///
после новой строки.
Также интересно, что нужно для отображения этих комментариев в функции IntelliSense в VS2010?
Ответы
Ответ 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
Не стесняйтесь редактировать или повторно использовать этот макрос, и я приветствую любые критические замечания.