2010-10-05 25 views
12

Ho difficoltà nell'utilizzo efficiente di Doxygen con Visual Studio 2010 e C++.Utilizzo di Doxygen con Visual Studio 2010

Non esiste altra funzione per il commento di "righe/un commento"? Ad esempio, la generazione di stub di commenti e l'aggiunta di /// dopo una nuova riga.

Inoltre, mi chiedo che cosa è necessario per visualizzare i commenti all'interno della funzionalità IntelliSense in VS2010?

risposta

12

In base allo MSDN Documentation, tutti i commenti che utilizzano i delimitatori // o /* verranno visualizzati accanto al membro associato nell'elenco Membri di IntelliSense.

È possibile utilizzare l'output XML di doxygen o lo XML documentation generato da Visual Studio come input IntelliSense.

Il /doc documentation spiega come utilizzare la documentazione XML con IntelliSense:

Per utilizzare il file XML generato con IntelliSense, fanno il nome del file del file XML lo stesso del montaggio che si desidera supportare e mettere il file .xml si trova nella stessa directory dell'assembly. Quando l'assembly viene referenziato nel progetto Visual Studio, viene trovato anche il file .xml.

AtomineerUtils è uno dei migliori componenti aggiuntivi di Visual Studio per la documentazione doxygen/javadoc/DocXML. Non è gratuito, ma nulla nella lista di doxygen helper tools è indirizzato a Visual Studio 2010.

4

Il meglio che ho potuto inventare da solo è stata una raccolta di macro. Ho cercato in giro per siti web che potrebbero aver aggregato alcuni utili macro di Visual Studio insieme, ma finora sono usciti vuoti. Ma usare il modello di codice di Visual Studio per compilare automaticamente la documentazione può essere davvero utile. Qui è una macro che ho fatto per creare la documentazione per la funzione che il cursore è attualmente 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 

Sentitevi liberi di modificare o riutilizzare questa macro, e accolgo con favore eventuali critiche.