Empecé a trabajar en varios proyectos de C que están construyendo usando gcc
. Creo que esta elección se hizo por varias razones:
- Tuve que hacer una compilación cruzada para el brazo desde el principio (creo).
- El rendimiento es la primera y más importante especificación.
gcc
fue y sigue siendo la primera opción fácil.
No tengo ninguna razón para impugnar esa elección y no estoy en condiciones de hacerlo de todos modos.
La base de código de cualquier proyecto individual es relativamente pequeña. Cada proyecto se construye con un Makefile relativamente limpio (actualmente se está actualizando), gcc -Wall -Wextra
no se queja en absoluto y se realizan algunas pruebas mínimas. No se realiza un análisis estático automatizado ni se formatea el código y el código no es sintácticamente consistente, aunque es muy legible y parece pensado.
No quiero volver a formatear cada línea de código a la vez, tengo la intención de hacer lo que se describe en alguna parte alrededor de esta respuesta (especialmente porque el contexto realmente no es tan malo): refactorizar y reformatear tanto como sea posible al tratar cualquier tema, pero sigue tomando temas sin intenciones de estilo de código en mente. Desafortunadamente, no estoy en condiciones de imponer un estilo de código o verificaciones adicionales en las confirmaciones, pero siento que hay una sensación entre mis colegas de que debe respetar la convención de código existente al modificar un archivo (aunque conozco el estado actual del código no ocurrió mágicamente), y un deseo de escribir un buen código.
Esta es la primera vez que programo en C con tal estado mental, y estoy muy atraído por las diversas herramientas de análisis y formato de código que clang
ofrece.
La esencia de mi pregunta es así: ¿podría generar problemas para seguir las clang
sugerencias y utilizar clang
herramientas de formato y análisis al construir con gcc
? Por ejemplo, algunas advertencias podrían provenir de una representación interna gcc
que no se utiliza, o de un código de bytes clang
que intentaría generar que gcc
no lo haga.
¿Hay una buena manera de pasar automáticamente los gcc
parámetros de compilación (principalmente la arquitectura de destino y el nivel de optimización) para clang
que las sugerencias de advertencia tengan sentido?
Agregaré que estoy familiarizado gcc
y su informe de errores. Estoy interesado en obtener más advertencias y errores (relevantes), no solo mejor redactados y advertencias más comprensibles. Entonces, si no puedo confiar en las sugerencias adicionales que clang
pueden producir en función de su representación interna porque construyo gcc
al final del día, entonces no estoy realmente interesado en hacerlo.
Incluí mucho contexto, así que siéntase libre de hacer cualquier comentario o responder cualquier pregunta subyacente que no pueda plantear.