2010-10-05 19 views
12

Tengo dificultades para usar Doxygen de manera eficiente con Visual Studio 2010 y C++.Uso de Doxygen con Visual Studio 2010

¿No hay otra función para comentar que "líneas de un comentario"? Por ejemplo, generar resúmenes de comentarios y agregar /// después de una nueva línea.

Además, me pregunto qué se necesita para mostrar esos comentarios dentro de la función IntelliSense en VS2010?

Respuesta

12

De acuerdo con MSDN Documentation, los comentarios que usan los delimitadores // o /* se mostrarán junto al miembro asociado en la lista de Miembros de IntelliSense.

Puede usar la salida XML de doxygen o el XML documentation generado por Visual Studio como entrada IntelliSense.

El /doc documentation se explica cómo utilizar la documentación XML con IntelliSense:

Para utilizar el archivo .xml generado con IntelliSense, hacen que el nombre de archivo del archivo .xml de la misma medida que el conjunto que desea apoyar y coloque el archivo .xml en el mismo directorio que el ensamblado. Cuando se hace referencia al ensamblado en el proyecto de Visual Studio, también se encuentra el archivo .xml.

AtomineerUtils es uno de los mejores complementos de Visual Studio para la documentación de doxygen/javadoc/DocXML. No es gratis, pero nada en la lista de doxygen helper tools está dirigido a Visual Studio 2010.

4

Lo mejor que he podido encontrar por mi cuenta ha sido una colección de macros. He buscado sitios web que pueden haber agregado algunas macros útiles de Visual Studio doxygen, pero hasta ahora han quedado vacías. Sin embargo, usar el modelo de código de Visual Studio para autocompletar la documentación puede ser realmente útil. Aquí es una macro que hice para crear documentación de la función que el cursor se encuentra actualmente en:

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 

dude en para corregir o volver a usar esta macro, y la bienvenida a cualquier críticas.

Cuestiones relacionadas