Eu trabalho em um projeto C ++ que gera muitos bilhões de avisos. A maioria dos avisos apareceu depois que o código foi escrito:
- Inicialmente, o projeto usava o Visual C ++ 8, logo alternando para 9, mas há pouca diferença nos avisos gerados. Os avisos foram corrigidos ou silenciados, portanto não havia avisos.
- Em seguida, um destino de 64 bits foi adicionado. Ele gerou uma enorme quantidade de avisos, principalmente por causa do uso desleixado dos tipos (por exemplo,
unsigned
vs.size_t
). Ninguém se incomodou ou teve tempo para corrigi-los quando o código funcionava para esse fim. - Em seguida, foi adicionado suporte para outras plataformas usando o GCC (4.5 e 4.6, alguns 4.4 inicialmente). O GCC é muito mais exigente, por isso gerou muitos outros avisos. Mais uma vez ninguém se incomodou ou teve tempo para consertá-los. Isso foi complicado pelo fato de o GCC não ter um pragma para silenciar um aviso em particular parte do código até a versão 4.5 e, de acordo com a documentação, ainda não é o que se precisa.
- Nesse meio tempo, alguns avisos obsoletos apareceram.
Então agora temos um projeto que gera milhares de avisos. E não posso nem dizer de quantos lugares, já que até os .cpp
arquivos são compilados várias vezes por diferentes compiladores e os avisos nos cabeçalhos são impressos repetidamente.
Existe uma prática recomendada para limpar algo assim? Ou pelo menos alguma experiência positiva em lidar com isso?