Noizu - A GCC/Clang warnings formatter

OP #5720504
Lesenswert?

Grüß euch

Ich hab heut ein kleines Python Tool namens "Noizu" geschrieben mit 
dessen Hilfe sich der stderr Output von GCC und Clang nach Pfaden und 
Dateinahmen filtern lässt. Das ist insbesondere dann hilfreich wenn man 
so Dinge wie die CMSIS/DSP Bibliothek einbindet, die allein weit über 
2000 Warnings generiert...

Um einen entsprechenden Output von seinem Compiler zu erhalten bietet es 
sich an stderr beim Compilieren in ein File umzulenken. Das funktioniert 
beispielsweise so:
1
make 2> log

Jenen Log kann man dann an Noizu schicken und nach Keywords filtern 
lassen. Im Fall von CMSIS also etwa:
1
python noizu.py log -e CMSIS/DSP

Bzw. wahlweise in eine neue Datei hinein:
1
python noizu.py log -e CMSIS/DSP -o output_log


Und hier noch ein vorher/nacher Vergleich um zu veranschaulichen wie 
viele Warnings man sich alleim im Fall CMSIS + STM32 HAL reinzieht:
1
-Wsign-conversion                                                 2403
2
-Wconversion                                                      324
3
-Wpedantic                                                        16
4
-Wunused                                                          7
5
-Wunused-parameter                                                6
6
-Wsign-compare                                                    4
7
-Wstrict-aliasing                                                 3
8
-Wattributes                                                      2
9
-Wshadow                                                          1
10
-Wunused-variable                                                 1

Gefiltered nach CMSIS und HAL. Jene Warnings stammen aus von mir 
eingefügtem Code:
1
-Wunused                                                          2
2
-Wunused-parameter                                                1
3
-Wsign-compare                                                    1
4
-Wstrict-aliasing                                                 1
5
-Wshadow                                                          1
6
-Wunused-variable                                                 1

Das Projekt inklusive CMSIS + HAL Beispiel gibts hier:
https://gitlab.com/higaski/Noizu
Gast #5720787
Lesenswert?

Hm könnte mal hilfreich sein. In dem Fall sollte ST aber mal ihre libs 
fixen.

Habe letztens die ASF4 auf Vordermann gebracht:
Mit -Wall -Wextra -Werror musste ich ~7 mal unused attribute hinzufügen.
Gast #5726859
Lesenswert?

Vincent H. schrieb:
> Ich hab heut ein kleines Python Tool namens "Noizu" geschrieben mit
> dessen Hilfe sich der stderr Output von GCC und Clang nach Pfaden und
> Dateinahmen filtern lässt.

Ist das nicht eigentlich Aufgabe der IDE?

Siehe z. B. Visual Studio: hier werden Warnungen und Fehler nach 
Error-Code, Beschreibung, Projekt, Datei, Zeile etc. sortier- und 
filterbar angezeigt.
#5727814
Lesenswert?

Vincent H. schrieb:
> Grüß euch
>
> Ich hab heut ein kleines Python Tool namens "Noizu" geschrieben mit
> dessen Hilfe sich der stderr Output von GCC und Clang nach Pfaden und
> Dateinahmen filtern lässt. Das ist insbesondere dann hilfreich wenn man
> so Dinge wie die CMSIS/DSP Bibliothek einbindet, die allein weit über
> 2000 Warnings generiert...

Dein Ansatz ist natürlich allgemeiner, wenn es jedoch nur um das 
Unterdrücken geht, so hätte ich die Option -isystem statt -I für die 
Inklusionspfade verwendet.
Oder mit diagnostics push/pop gearbeitet.
OP #5788154
Lesenswert?

Testikus schrieb:
> Ist das nicht eigentlich Aufgabe der IDE?
>
> Siehe z. B. Visual Studio: hier werden Warnungen und Fehler nach
> Error-Code, Beschreibung, Projekt, Datei, Zeile etc. sortier- und
> filterbar angezeigt.

Ich nutze Visual Studio nicht und nehme an, dass diese Funktion nur für 
MSVC zur Verfügung steht.


Wilhelm M. schrieb:
> Dein Ansatz ist natürlich allgemeiner, wenn es jedoch nur um das
> Unterdrücken geht, so hätte ich die Option -isystem statt -I für die
> Inklusionspfade verwendet.
> Oder mit diagnostics push/pop gearbeitet.

Push/pop heißt Sourcen angreifen. Und -isystem find ich für fremde 
Applikationsbibliotheken auch eher unschön.



Erfreulicherweise wird Noizu trotzdem recht bald wieder in die Pension 
geschickt, da GCC9 JSON output mitbringen wird:
https://developers.redhat.com/blog/2019/03/08/usability-improvements-in-gcc-9/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren