2010-08-09 10 views
5

Ich versuche, ein MSBuild-Projekt zu schreiben, das HTML-Dokumentation mit Doxygen generieren wird. Ich konnte nichts darüber im Netz finden außer einer example, die unvollständig scheint; Es analysiert keine Doxygen-Warnungen.MSBuild und IgnoreStandardErrorWarningFormat

Ich fand, dass MSBuild's Exec Task Parameter wie IgnoreStandardErrorWarningFormat und CustomWarningRegularExpression hat. Was ist das "Standard Error/Warning Format" und welche Art von REs sind in diesen Eigenschaften erlaubt?

Edit: ah, "Inside the Microsoft Build Engine" falsch beschreibt es als Eigenschaft in .NET 3.5, wo es für mich eigentlich von 4. Keine Verwendung ist ...

Antwort

11

der Standard msbuild Fehler/Warnung Format hier beschrieben wird: http://blogs.msdn.com/b/msbuild/archive/2006/11/03/msbuild-visual-studio-aware-error-messages-and-message-formats.aspx.

Auf den Punkt gebracht, ist das Format:

MSBuild erkennt Fehlermeldungen und Warnungen, die speziell von vielen Kommandozeilen-Tools formatiert wurden, die normalerweise auf die Konsole schreiben. Schauen Sie sich zum Beispiel die folgenden Fehlermeldungen an - sie sind alle korrekt formatiert, um MSBuild- und Visual Studio-freundlich zu sein.

Main.cs(17,20): warning CS0168: The variable 'foo' is declared but never used 
C:\dir1\foo.resx(2) : error BC30188: Declaration expected. 
cl : Command line warning D4024 : unrecognized source file type 'foo.cs', object file assumed 
error CS0006: Metadata file 'System.dll' could not be found. 

Diese Meldungen bestätigen spezielles Format, das unten gezeigt wird, und umfassen 5 Teile - die Reihenfolge dieser Teile sind wichtig und ändern sollten nicht:

Canonical Errors/Warnings

Herkunft (Erforderlich)

Ursprung kann leer sein. Falls vorhanden, ist der Ursprung normalerweise ein Werkzeugname, wie "cl" in einem der Beispiele. Es könnte aber auch ein Dateiname sein, wie "Main.cs" in einem anderen Beispiel. Wenn es sich um ein Dateiname ist, dann muss es einen absoluten oder einen relativen Dateinamen, gefolgt von einem optionalen klammerten Zeile/Spalte Informationen, die in einer der folgenden Formen annehmen:

(line) or (line-line) or (line-col) or (line,col-col) or (line,col,line,col) 

Unterkategorie (Optional)

Unterkategorie wird verwendet, um die Kategorie selbst weiter zu klassifizieren, und sollte nicht lokalisiert werden.

Kategorie (Erforderlich)

Kategorie muss entweder 'Fehler' oder 'Warnung' sein. Der Fall spielt keine Rolle. Wie der Ursprung darf die Kategorie nicht lokalisiert sein.

-Code (Erforderlich)

-Code identifiziert einen anwendungsspezifischen Fehlercode/Warncode. Der Code darf nicht lokalisiert sein und darf keine Leerzeichen enthalten.

Text (Optional)

Benutzerfreundliche Text, der den Fehler erklärt und muss lokalisiert werden, wenn Sie auf mehrere Schauplätze bieten.

2

ich docs nicht finden es gerade jetzt, aber ich denke, der Standardfehler Format etwas wie

.*(\d+(,\d+(,\d+,\d+)?)?)?: error .*:.* 
.*(\d+(,\d+(,\d+,\d+)?)?)?: warning .*:.* 

Beispiele ist:

c:\somefile.txt(10,20,10,30): error CMD1234: blarg 
c:\somefile.txt(10,20): error CMD1234: yadda yadda 
c:\somefile.txt: warning ARG5678: blah blah 
+0

Ich konnte es auch nicht finden. Jemand? – liori

2

Das Format ist vollständig im MSBuild-Quellcode here dokumentiert.

+0

Ah, die Gefahren der Open-Source-Software. Vielen Dank! – liori