mikrocontroller.net

Forum: Projekte & Code Noizu - A GCC/Clang warnings formatter


Autor: Vincent H. (vinci)
Datum:

Bewertung
0 lesenswert
nicht 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:
make 2> log

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

Bzw. wahlweise in eine neue Datei hinein:
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:
-Wsign-conversion                                                 2403
-Wconversion                                                      324
-Wpedantic                                                        16
-Wunused                                                          7
-Wunused-parameter                                                6
-Wsign-compare                                                    4
-Wstrict-aliasing                                                 3
-Wattributes                                                      2
-Wshadow                                                          1
-Wunused-variable                                                 1

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

Das Projekt inklusive CMSIS + HAL Beispiel gibts hier:
https://gitlab.com/higaski/Noizu

: Bearbeitet durch User
Autor: asf44 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Vincent H. (vinci)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaub ein Großteil der oben augezählten Warnings stammt eher aus der 
CMSIS/DSP, aber ja, ganz unschuldig ist ST auch nicht.

Grad in externem Code nichts ändern zu müssen war einer der Gründe 
weshalb ich lieber den stderr Output geparsed hab. ;)

Autor: Testikus (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.