2010-10-05 26 views
12

Ich habe Schwierigkeiten, Doxygen mit Visual Studio 2010 und C++ effizient zu verwenden.Verwenden von Doxygen mit Visual Studio 2010

Gibt es keine andere Funktion zum Kommentieren als "un/comment lines"? Zum Beispiel das Erzeugen von Kommentar-Stubs und das Hinzufügen von /// nach einer neuen Zeile.

Ich frage mich auch, was benötigt wird, um diese Kommentare innerhalb der IntelliSense-Funktion in VS2010 anzuzeigen?

Antwort

12

Entsprechend der MSDN Documentation werden alle Kommentare, die // oder /* Trennzeichen verwenden, neben dem zugeordneten Element in der IntelliSense-Elementliste angezeigt.

Sie können die XML-Ausgabe von doxygen oder die von Visual Studio als IntelliSense-Eingabe generierte XML documentation verwenden.

Die /doc documentation wird erläutert, wie mit IntelliSense XML-Dokumentation verwenden:

Um die erzeugte XML-Datei mit IntelliSense zu verwenden, stellen Sie den Dateinamen des .xml die gleiche wie die Assembly-Datei, die Sie unterstützen möchten und legen Sie die .xml-Datei im selben Verzeichnis wie die Assembly. Wenn auf die Assembly im Visual Studio-Projekt verwiesen wird, wird auch die XML-Datei gefunden.

AtomineerUtils ist eines der besten Visual Studio-Add-Ins für doxygen/javadoc/DocXML-Dokumentation. Es ist nicht kostenlos, aber nichts auf der Liste von doxygen helper tools zielt auf Visual Studio 2010.

4

Das Beste, was ich in der Lage, auf eigene Faust zu kommen, war eine Sammlung von Makros. Ich habe mich nach Webseiten umgesehen, die vielleicht einige nützliche Visual Studio doxygen Makros zusammengetragen haben, aber bis jetzt sind sie leer ausgegangen. Die Verwendung des Visual Studio-Codemodells zum automatischen Ausfüllen der Dokumentation kann jedoch sehr nützlich sein. Hier ist ein Makro, das ich gemacht Dokumentation für die Funktion zu erstellen, die die Einfügemarke befindet sich derzeit in:

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 

Fühlen Sie sich frei zu bearbeiten oder das Makro wiederverwenden, und ich begrüße alle Kritik.