Drapeaux d'avertissement détaillés et détaillés pour les compilations C avec g
Gcc fournit un ensemble complet d'indicateurs d'avertissement pour aider les développeurs à détecter les problèmes potentiels dans leur code. Pour activer des avertissements détaillés et détaillés en C , tenez compte des recommandations suivantes :
Avertissements essentiels :
- -pedantic : respectez les règles strictes Normes du langage C.
- -Wall : Activer toutes les normes communément acceptées warns.
- -Wextra : étendez la portée de l'avertissement au-delà de -Wall.
- -Wcast-align : détecte les projections de pointeurs mal alignées.
- -Wcast-qual : avertir des changements de type de pointeur qualificatifs.
- -Wctor-dtor-privacy : mettre en évidence les problèmes liés aux modificateurs d'accès aux constructeurs et aux destructeurs de classe.
- -Wdisabled-optimization : identifier le code qui peut être optimisé mais ne l'est pas.
- -Wformat=2 : améliore la gestion des spécificateurs de format pendant compilation.
- -Winit-self : empêcher les variables d'être réinitialisées sur elles-mêmes.
- -Wlogical-op : détecter les problèmes potentiels de priorité des opérateurs.
- -Wmissing-declarations : Avertir des déclarations manquantes de variables et fonctions.
- -Wmissing-include-dirs : mettre en surbrillance les répertoires d'inclusion manquants.
- -Wnosauf : encourager les mécanismes de gestion des exceptions.
- -Wold-style-cast : identifier la compatibilité potentielle du code problèmes.
- -Woverloaded-virtual : avertir des surcharges de méthodes virtuelles.
- -Wredundant-decls : signaler les déclarations redondantes.
- -Wshadow : empêche l'observation involontaire de variables.
- -Wsign-conversion : détecte les erreurs possibles de conversion de signe.
- -Wsign-promo : met en évidence les problèmes potentiels de promotion de signe.
- -Wstrict-null-sentinel : améliorez la sécurité du code en contrôlant la sentinelle nulle valeurs.
- -Wstrict-overflow=5 : limitez le niveau de dépassement d'entier à cinq avertissements.
- -Wswitch-default : assurez-vous que les valeurs sont complètes. gestion des instructions switch.
- -Wundef : avertir des variables non définies ou macros.
- -Wno-unused : exclut les avertissements de variables inutilisés pour mieux se concentrer sur les problèmes plus critiques.
Avertissements facultatifs mais douteux :
- -Wdisabled-optimization : peut indiquer un code sous-optimal, mais pas nécessairement un erreur.
- -Wfloat-equal : provoque potentiellement des faux positifs pour des comparaisons d'égalité sûres.
- -Wold-style-cast : peut avoir des faux positifs dans les bibliothèques tierces.
- -Wsign-conversion : nécessite une attention particulière aux types de données pour éviter erreurs.
- -Wsign-promo : considérations similaires à -Wsign-conversion.
- -Wswitch-default : applique la gestion explicite de l'instruction switch cas, mais peuvent être fastidieux.
Avertissements à exclure :
Ces les avertissements sont omis en raison de faux positifs potentiels ou d'une utilité limitée :
- -Wabi : nécessite une compilation de binaires provenant de diverses sources.
- -Waggregate- return : peut indiquer des conversions de types de données implicites.
- -Wconversion : peut générer des avertissements pour des erreurs inoffensives. conversions implicites.
- -Weffc : peut être encombré d'avertissements sans rapport.
- -Winline : peut ne pas être applicable dans tous les scénarios de méthodes en ligne.
- -Winvalid-pch : ne s'applique pas aux projets qui n'utilisent pas de fichiers précompilés headers.
- -Wmissing-format-attribute : Nécessite des extensions GNU peu utilisées.
- -Wpadded : Nécessite une optimisation manuelle des dispositions de classe.
- -Wstack-protector : nécessite des indicateurs de compilateur spécifiques pour la pile protection.
- -Wstrict-aliasing=3 : offre des avertissements supplémentaires limités par rapport aux niveaux inférieurs.
- -Wswitch-enum : trop restrictif et peut ne pas convenir à tous les cas d'utilisation.
- -Wunsafe-loop-optimizations : peut générer de faux avertissements dans certains scénarios.