Ich arbeite an einem großen gemeinschaftlichen C++ - Projekt, das sowohl entwickelt als auch auf verschiedenen Varianten von Linux, OS X und Windows ausgeführt wird. Wir kompilieren über diese Plattformen mit GCC, Visual Studio C++ und dem Intel C++ Compiler. Wenn mehr und mehr Leute anfangen, Code für das Projekt zu entwickeln, fangen wir an, seltsame Fehler bei der Kompilierung und Laufzeit zu bemerken, die spezifisch für bestimmte Compiler auf bestimmten Betriebssystemen sind. Ein Beispiel hierfür ist die implizite Einbeziehung von Headern, die bestimmte OS/Compiler-Paare für Sie zu finden scheinen, indem sie versehentlich eine Funktion aus einer Basisklasse in einer abgeleiteten Klasse überladen.Erstellen von GCC und anderen C++ - Compilern Sehr streng
Mein Ziel ist es, die Kompilierung in GCC strenger zu machen und mehr Fehler auf allen Plattformen zu erfassen, so dass wir nicht weiter auf diese Probleme stoßen. Hier ist meine Liste von Flags, die ich über das Ausprobieren für GCC denke, dass ich über Google und die GCC-man-Seiten gefunden habe:
- -Wall
- -Wextra
- -Winit-Selbst
- -Wold-style-Guss
- -Woverloaded-virtuelle
- -Wuninitialized
- -Wmissing-Erklärungen
- -Wini t-Selbst
- -ansi
- -pedantic
Was die anderen Flags sind, die Menschen benutzen GCC (und weniger wichtig Visual Studio C++ und die Intel C++ Compiler) gehorchen einen strengeren Standard der C zu machen ++ Sprache? Seien Sie konkret, über welchen Compiler und welche Version Sie sprechen, da einige davon möglicherweise nicht in allen Versionen aller Compiler implementiert sind.
Es gibt viele kommerzielle Tools zur Verfügung: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B. Wenn Sie ein kommerzielles Tool investieren möchten, können Sie normalerweise Test-/Evaluierungsversionen erhalten. –
Danke. Es ist gut zu wissen. – KOkon