G++: strengste Parameteroptionen



  • Im G++ gibt es ja hundert verschiedene Optionsmöglichkeiten. Ich würde gerne wissen, was ich einstellen muss, damit das Programm am strengsten ist und mir wirklich alle Warnungen anzeigt, die es gibt, und nur den korrektesten Code akzeptiert. Aber sagt mir jetzt nicht, ich solle dafür -Wall angeben, denn das ist Quatsch. -Wall liefert nämlich längst nicht alle Warnungen, zum Beispiel gibt es dazu noch -Wextra und ein paar Einzelwarnungen, die immer noch nicht abgedeckt sind und manuell angeführt werden müssen. Welche Optionen muss ich also angeben, damit alle Sachen, die angemeckert werden können, auch wirklich angemeckert werden?



  • Es gibt noch -pedantic und -Weffc++ . Aber ob das z.B. vor implizite Typumwandlungen warnt, weiss ich nicht.


  • Mod

    Die Frage wurde schönerweise gerade in einem anderen Thread überaus ausführlich beantwortet:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-256461.html

    abc.w schrieb:

    CXXFLAGS = -W
    CXXFLAGS += -Werror
    CXXFLAGS += -Wall
    CXXFLAGS += -Wextra
    CXXFLAGS += -Wabi
    CXXFLAGS += -Wreorder
    CXXFLAGS += -Weffc++
    CXXFLAGS += -Wold-style-cast
    CXXFLAGS += -Wsign-promo
    CXXFLAGS += -Wformat-nonliteral
    CXXFLAGS += -Wformat-security
    CXXFLAGS += -Wformat=2
    CXXFLAGS += -Winit-self
    CXXFLAGS += -Wuninitialized
    CXXFLAGS += -Wmissing-include-dirs
    CXXFLAGS += -Wswitch
    CXXFLAGS += -Wswitch-default
    CXXFLAGS += -Wswitch-enum
    CXXFLAGS += -Wunused-parameter
    CXXFLAGS += -Wunused
    CXXFLAGS += -Wunknown-pragmas
    CXXFLAGS += -Wstrict-overflow
    CXXFLAGS += -Wstrict-overflow=1
    CXXFLAGS += -Wstrict-overflow=2
    CXXFLAGS += -Wstrict-overflow=3
    CXXFLAGS += -Wstrict-overflow=4
    CXXFLAGS += -Wstrict-overflow=5
    CXXFLAGS += -Wfloat-equal
    CXXFLAGS += -Wundef
    CXXFLAGS += -Wshadow
    CXXFLAGS += -Wunsafe-loop-optimizations
    CXXFLAGS += -Wpointer-arith
    CXXFLAGS += -Wcast-qual
    CXXFLAGS += -Wcast-align
    CXXFLAGS += -Wwrite-strings
    CXXFLAGS += -Wconversion
    CXXFLAGS += -Wsign-conversion
    CXXFLAGS += -Wlogical-op
    CXXFLAGS += -Waggregate-return
    CXXFLAGS += -Wmissing-field-initializers
    CXXFLAGS += -Wpacked
    CXXFLAGS += -Wpadded
    CXXFLAGS += -Wredundant-decls
    CXXFLAGS += -Wvolatile-register-var
    CXXFLAGS += -Winvalid-pch
    CXXFLAGS += -Wnormalized=nfkc
    CXXFLAGS += -Wsequence-point
    


  • Mindestens sollte man -Wall -Wextra -pedantic-errors -std=c++0x benutzen.

    Bei den zusätzlichen Warnings kann ich immer einen Blick in Freundlichs SGE empfehlen:
    http://github.com/MrN/spacegameengine/blob/master/CMakeLists.txt

    Aber die Liste von abc.w ist auch nicht schlecht.

    http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Warning-Options.html#Warning-Options


Anmelden zum Antworten