Setzen Sie warn_unused_result auf alle Funktionen mit GCC

8

Ist es möglich, GCC zu sagen, dass es das Flag warn_unused_result für alle Funktionen verwenden soll, obwohl es nicht das entsprechende Attribut hat? Denn wenn ich vergessen kann, nach dem Rückgabewert zu suchen, kann ich auch vergessen, das GCC-spezifische Attribut hinzuzufügen.

Ich habe gesehen, dass es mit einigen anderen Compilern möglich ist.

    
PoltoS 11.11.2012, 18:55
quelle

3 Antworten

1

Nein, Sie können gcc nur anweisen, alle warn_unused_result Flags mit -Wno-unused-result zu ignorieren, aber die entsprechende -Wunused-result setzt nur den Standardwert (nur für Flags warnen). Kompilieren mit -Wall -Wextra -pedantic sollte eine Warnung ausgelöst haben, wenn es aktiviert werden kann, aber nicht, so kann es nicht.

Abgesehen davon, ich frage mich, warum Sie das wollen, ist es nicht ungewöhnlich, das Ergebnis von Funktionen zu ignorieren, und alle Bibliotheken werden wahrscheinlich Tonnen von Warnungen produzieren.

    
bitmask 11.11.2012, 19:08
quelle
0

Obwohl es mit GCC nicht möglich scheint, können Sie statische Analysatoren wie Coverity und Flusen verwenden, um diese zu erfassen.

    
Soorajchirag 19.07.2017 20:59
quelle
0

In elfs-clang-plugins (das ich selbst geschrieben habe, Open Source) gibt es ein clang plugin hilft.

Obwohl nicht für GCC, kann es immer noch nützlich sein, z.B. wenn Sie es zu Ihrem CI-Gatekeeping-Prozess hinzufügen können (falls Sie einen haben) oder einfach von Zeit zu Zeit manuell ausführen.

Das warn_unused_result-Plugin gibt eine Warnung für Funktionen aus, denen ein warn_unused_result-Attribut fehlt. Das Plugin berücksichtigt nur Funktionen, die in der aktuellen Kompilierungseinheit deklariert oder definiert sind. Externe Bibliotheken fügen also kein Rauschen hinzu. p>

Das Plugin akzeptiert ein optionales arg, --static-only, das nur vor statischen Funktionen warnt (denn wenn externe APIs geändert werden, ist das zu viel Arbeit).

Beispiel:

%Vor%

Compiler-Ausgabe:

%Vor%     
sinelaw 12.09.2017 14:28
quelle