Estoy trabajando en un gran proyecto colaborativo de C++ que está desarrollado y se ejecuta en varios sabores de Linux, OS X y Windows. Compilamos en todas estas plataformas con GCC, Visual Studio C++ y el compilador Intel C++. A medida que más y más personas comienzan a desarrollar código para el proyecto, comenzamos a ver errores extraños en la compilación y en el tiempo de ejecución que son específicos de compiladores particulares en sistemas operativos particulares. Un ejemplo de esto es la inclusión implícita de encabezados que ciertos pares de OS/compiladores parecen encontrar para usted, sobrecargando accidentalmente una función de una clase base en una clase derivada.Hacer GCC y otros compiladores de C++ Muy estricto
Mi objetivo es hacer que la compilación en GCC sea más estricta y atrapar más errores en todas las plataformas para que no sigamos encontrándonos con estos problemas. Aquí está mi lista de banderas que estoy pensando en probar para GCC que he encontrado a través de Google y el hombre páginas CCG:
- -Wall
- -Wextra
- -Winit-auto
- de estilo fundido -Wold
- -Woverloaded virtual
- -Wuninitialized
- -Wmissing-declaraciones
- -Wini t-auto
- -ansi
- -pedantic
¿Cuáles son las otras banderas que usa la gente para hacer GCC (y menos importante el estudio visual C++ y el compilador de C de Intel ++) obedecen a una norma más estricta de la C++ ¿idioma? Sea específico acerca del compilador y la versión de la que está hablando, ya que algunos de ellos podrían no implementarse en todas las versiones de todos los compiladores.
Hay muchas herramientas comerciales disponibles: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B. Si desea invertir una herramienta comercial, normalmente puede obtener versiones de prueba/evaluación. –
Gracias. Es bueno saberlo. – KOkon