2012-12-18 14 views
5

Ich baue ziemlich großen Code auf einer Maschine ohne eine IDE, aber mit Notepad ++.Kann Notepad ++ so konfiguriert werden, dass es Compiler-Fehlermeldungen erkennt und zum entsprechenden Ort springt?

Die Kompilierungsergebnisse werden in eine Datei umgeleitet, und manchmal gibt es Fehlermeldungen, die eine gut definierte Regex erfüllen.

Ich frage mich, ob NPP ein Plugin hat, das die Protokolldatei analysieren würde, die Fehler-/Warnmeldungen erkennen und mich zwischen den jeweiligen Fehler-/Warnstellen navigieren lassen könnte.

EDIT

Hier ein typisches Beispiel für die Ausgabe ist (hergestellt von make läuft MSVC cl.exe Compiler):

/cygdrive/c/vs2010/VC/Bin/cl -Zi -nologo -MD /D _STATIC_CPPLIB -FdC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/Win32SurfaceData.pdb -FmC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/Win32SurfaceData.map -W3 -DD3D_OVERLOADS -DUNICODE -D_UNICODE -DWIN32 -DIAL -D_LITTLE_ENDIAN -DWIN32 -D_X86_ -Dx86 -DWIN32_LEAN_AND_MEAN -I. -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders -I../../../src/windows/javavm/export -I../../../src/share/javavm/export -I../../../src/share/javavm/include -I../../../src/windows/javavm/include -I../../../src/share/native/common -I../../../src/windows/native/common -I../../../src/share/native/sun/awt -I../../../src/windows/native/sun/awt -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders/../../java/jvm -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj -I../../../src/share/native/common -I../../../src/windows/native/sun/windows -IC:/PROGRA~2/MICROS~1/Include -I../../../src/share/native/sun/awt/image/cvutils -I../../../src/share/native/sun/awt/image -I../../../src/share/native/sun/java2d/loops -I../../../src/share/native/sun/java2d -I../../../src/windows/native/sun/java2d -I../../../src/share/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/d3d -I../../../src/windows/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/windows -I../../../src/share/native/sun/font -I../../../src/share/native/sun/java2d/pipe -I../../../src/share/native/sun/dc/path -I../../../src/share/native/sun/dc/doe -I../../../src/share/native/sun/awt/debug -I../../../src/windows/native/sun/awt -I../../../src/share/native/sun/awt/medialib -DINTERNAL_BUILD -c -FoC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/Win32SurfaceData.obj ../../../src/windows/native/sun/awt/../java2d/windows/Win32SurfaceData.cpp 
Win32SurfaceData.cpp 
../../../src/windows/native/sun/awt/../java2d/windows/Win32SurfaceData.cpp(478) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc 
/cygdrive/c/vs2010/VC/Bin/cl -Zi -nologo -MD /D _STATIC_CPPLIB -FdC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WinBackBufferSurfaceData.pdb -FmC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WinBackBufferSurfaceData.map -W3 -DD3D_OVERLOADS -DUNICODE -D_UNICODE -DWIN32 -DIAL -D_LITTLE_ENDIAN -DWIN32 -D_X86_ -Dx86 -DWIN32_LEAN_AND_MEAN -I. -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders -I../../../src/windows/javavm/export -I../../../src/share/javavm/export -I../../../src/share/javavm/include -I../../../src/windows/javavm/include -I../../../src/share/native/common -I../../../src/windows/native/common -I../../../src/share/native/sun/awt -I../../../src/windows/native/sun/awt -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders/../../java/jvm -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj -I../../../src/share/native/common -I../../../src/windows/native/sun/windows -IC:/PROGRA~2/MICROS~1/Include -I../../../src/share/native/sun/awt/image/cvutils -I../../../src/share/native/sun/awt/image -I../../../src/share/native/sun/java2d/loops -I../../../src/share/native/sun/java2d -I../../../src/windows/native/sun/java2d -I../../../src/share/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/d3d -I../../../src/windows/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/windows -I../../../src/share/native/sun/font -I../../../src/share/native/sun/java2d/pipe -I../../../src/share/native/sun/dc/path -I../../../src/share/native/sun/dc/doe -I../../../src/share/native/sun/awt/debug -I../../../src/windows/native/sun/awt -I../../../src/share/native/sun/awt/medialib -DINTERNAL_BUILD -c -FoC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WinBackBufferSurfaceData.obj ../../../src/windows/native/sun/awt/../java2d/windows/WinBackBufferSurfaceData.cpp 
WinBackBufferSurfaceData.cpp 
/cygdrive/c/vs2010/VC/Bin/cl -Zi -nologo -MD /D _STATIC_CPPLIB -FdC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WBufferStrategy.pdb -FmC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WBufferStrategy.map -W3 -DD3D_OVERLOADS -DUNICODE -D_UNICODE -DWIN32 -DIAL -D_LITTLE_ENDIAN -DWIN32 -D_X86_ -Dx86 -DWIN32_LEAN_AND_MEAN -I. -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders -I../../../src/windows/javavm/export -I../../../src/share/javavm/export -I../../../src/share/javavm/include -I../../../src/windows/javavm/include -I../../../src/share/native/common -I../../../src/windows/native/common -I../../../src/share/native/sun/awt -I../../../src/windows/native/sun/awt -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders/../../java/jvm -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj -I../../../src/share/native/common -I../../../src/windows/native/sun/windows -IC:/PROGRA~2/MICROS~1/Include -I../../../src/share/native/sun/awt/image/cvutils -I../../../src/share/native/sun/awt/image -I../../../src/share/native/sun/java2d/loops -I../../../src/share/native/sun/java2d -I../../../src/windows/native/sun/java2d -I../../../src/share/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/d3d -I../../../src/windows/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/windows -I../../../src/share/native/sun/font -I../../../src/share/native/sun/java2d/pipe -I../../../src/share/native/sun/dc/path -I../../../src/share/native/sun/dc/doe -I../../../src/share/native/sun/awt/debug -I../../../src/windows/native/sun/awt -I../../../src/share/native/sun/awt/medialib -DINTERNAL_BUILD -c -FoC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WBufferStrategy.obj ../../../src/windows/native/sun/windows/WBufferStrategy.cpp 
WBufferStrategy.cpp 
/cygdrive/c/vs2010/VC/Bin/cl -Zi -nologo -MD /D _STATIC_CPPLIB -FdC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WPrinterJob.pdb -FmC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WPrinterJob.map -W3 -DD3D_OVERLOADS -DUNICODE -D_UNICODE -DWIN32 -DIAL -D_LITTLE_ENDIAN -DWIN32 -D_X86_ -Dx86 -DWIN32_LEAN_AND_MEAN -I. -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders -I../../../src/windows/javavm/export -I../../../src/share/javavm/export -I../../../src/share/javavm/include -I../../../src/windows/javavm/include -I../../../src/share/native/common -I../../../src/windows/native/common -I../../../src/share/native/sun/awt -I../../../src/windows/native/sun/awt -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/CClassHeaders/../../java/jvm -IC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj -I../../../src/share/native/common -I../../../src/windows/native/sun/windows -IC:/PROGRA~2/MICROS~1/Include -I../../../src/share/native/sun/awt/image/cvutils -I../../../src/share/native/sun/awt/image -I../../../src/share/native/sun/java2d/loops -I../../../src/share/native/sun/java2d -I../../../src/windows/native/sun/java2d -I../../../src/share/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/d3d -I../../../src/windows/native/sun/java2d/opengl -I../../../src/windows/native/sun/java2d/windows -I../../../src/share/native/sun/font -I../../../src/share/native/sun/java2d/pipe -I../../../src/share/native/sun/dc/path -I../../../src/share/native/sun/dc/doe -I../../../src/share/native/sun/awt/debug -I../../../src/windows/native/sun/awt -I../../../src/share/native/sun/awt/medialib -DINTERNAL_BUILD -c -FoC:/openjdk/OUTPUT~1/tmp/sun/sun.awt/awt/obj/WPrinterJob.obj ../../../src/windows/native/sun/windows/WPrinterJob.cpp 
WPrinterJob.cpp 
../../../src/windows/native/sun/windows/WPrinterJob.cpp(74) : warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc 
../../../src/windows/native/sun/windows/WPrinterJob.cpp(117) : error C2664: 'JNIEnv_::NewString' : cannot convert parameter 1 from 'LPWSTR' to 'const jchar *' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
../../../src/windows/native/sun/windows/WPrinterJob.cpp(142) : error C2664: 'JNIEnv_::NewString' : cannot convert parameter 1 from 'LPTSTR' to 'const jchar *' 
     Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 
+0

Können Sie ein Segment der Ausgabe mit einem Fehler enthalten? - Ich kenne kein Plugin, aber mit der richtigen Regex können Sie eine "Suche in Dateien" machen und eine Liste aller Fehler und ihrer jeweiligen Standorte ausgeben lassen. – DeusAphor

Antwort

1

In Ordnung, was so wäre, das ich verwende „Finde in der Dateien " ...

In Ihrem aktuellen Beispiel habe ich einfach den Text als" Fehler "zu finden; Wenn Sie Warnungen hinzufügen möchten; ermöglichen regex und suchen „Fehler | Warnung“

Verzeichnis natürlich ist das Verzeichnis, in suchen ..

einen Filter verwenden Sie es nur auf Dateien mit X-Namen suchen berichten. Beispiel: "Compiler-output3844.txt" Sie verwenden würde "Compiler-Ausgabe * .txt"

Dies wird Ihnen so etwas so ...

Find in Files

+1

Das mache ich heute auch. Es ist nicht sehr praktisch im Vergleich zu Punkt und Klick, um es gelinde auszudrücken. – mark

6

Da Sie alle Ausgaben haben In einer Log-Datei gespeichert, was DeusAphor vorschlägt, würde ich auch machen. Eine andere Option wäre, dass der Compiler-Ausgang sich normal in die NppExec-Konsole richtet und dann NppExec setzt, um die beleidigte Quelldatei zu öffnen und zu der Zeile zu springen, die vom Compiler diktiert wird.

Dies, indem zuerst das Muster der Fehlermeldungen zu bemerken erreicht emittieren dürfen, indem Sie Compiler, und öffnen Sie dann das Dialogfeld: Plugins-> NppExec-> Konsolenausgabefilter -> [Highlight] Registerkarte. Schnelle Beispiele der Variablen, die vom Plug-in erkannt werden, werden auf dieser Registerkarte angezeigt.

Für mingw32 GCC zum Beispiel erscheinen Fehlermeldungen auf dem Ausgabekonsole mit dem folgenden Muster:

FILE: LINE: some_other_num: Fehler Typ: error_desription

Auf der Registerkarte [Hervorhebung] des Dialogfelds können Sie es daher mit einer Platzhalter-Syntax in das erste Textfeld einfügen, wie im folgenden Bild gezeigt (siehe obere Zeile):

enter image description here

(Sie müssen% FILE% mit% ABSFILE%, abhängig von Ihrem Compiler und/oder Windows-Version ersetzen)

Sie nicht das Häkchen zu ermöglichen vergessen vor dem Textfeld (Sie können auch einige Farb- und/oder Textstile aus den Optionen definieren, die neben dem Textfeld angezeigt werden).

Bevor Sie den NppExec-Dialog schließen, gehen Sie zu seiner [Ersetzen] -Registerkarte und aktivieren Sie die Option oben: "Enable Filter Filters" aktivieren.

Schließlich schließen Sie den NppExec Dialog mit OK und stellen Sie sicher, dass der Menüeintrag * Plugins-> NppExec-> Konsolenausgabefilter sind geprüft. Wenn nicht, überprüfen Sie es.

Wenn alles gut gegangen ist, sollten Sie jetzt in der Lage sein Nachricht an Doppelklick auf jeden Fehler auf NppExec der Ausgabekonsole angezeigt, es die relative Datei öffnen zu müssen und den Cursor auf die angegebene Zeile bewegt.

Eine andere Option wäre die Installation eines alternativen Terminals an der Windows-Eingabeaufforderung, wie zum Beispiel MSYS, das entweder eingebettet oder als eigenständiger Download von mingw tool-chain kommt.

Es erfordert jedoch Vertrautheit mit den Unix-ähnlichen Shell-Dienstprogrammen und umfasst auch das Schreiben eigener Np ++ - oder NppExec-Skripts. This post kann als Ausgangspunkt nützlich sein, obwohl es Cygwin (eine Unix-Schichtumgebung auf dem obersten Windows) behandelt.

+0

+1 für diese Antwort. Ich benutze Notepad ++ "Je suis Charlie-Ausgabe" "Build-Zeit: Jan 10 2015 -17: 20.21" und ich muss nicht aktivieren "Filter ersetzen" in der "Ersetzen" -Tab. Daher wird "Konsolenausgangsfilter ..." nicht aktiviert, da es aktiviert ist, wenn die Option "Filterwechsel aktivieren" aktiviert ist. – miracle173

+0

Der schwierige Teil für mich war, den Inhalt einer Logdatei in die NppExec-Konsolenausgabe zu bekommen. Schließlich habe ich herausgefunden, dass ich es tun könnte, indem ich "cat " von der NppExec-Konsole aus führe. (Ich hätte erwartet, dass "type" funktioniert, wenn ich sehe, dass ich auf einer Windows-Maschine bin, aber das tat es nicht.) – Alan

Verwandte Themen