Maison > développement back-end > C++ > Quels sont les meilleurs indicateurs d'avertissement pour améliorer la qualité du code C, et quels avertissements doivent être pris en compte avec attention ou exclus ?

Quels sont les meilleurs indicateurs d'avertissement pour améliorer la qualité du code C, et quels avertissements doivent être pris en compte avec attention ou exclus ?

Linda Hamilton
Libérer: 2024-11-17 13:22:01
original
903 Les gens l'ont consulté

What are the best g   warning flags for enhancing C   code quality, and which warnings should be considered carefully or excluded?

Drapeaux d'avertissement détaillés et verbeux en C

Dans la même veine que C sous gcc, un ensemble complet d'indicateurs d'avertissement peut considérablement améliorer la qualité du code en C . Pour C , les indicateurs recommandés sont les suivants :

-pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused
Copier après la connexion

Avertissements douteux

Bien que la liste ci-dessus couvre les avertissements les plus utiles, certains avertissements douteux sont inclus :

  • Wno-unused : Cet avertissement indique des variables inutilisées, ce qui peut être utile pour identifier du code potentiellement inutile. Cependant, il peut générer des faux positifs et son utilité dépend du style de codage.
  • Wdisabled-optimization : Cet avertissement signale les sections de code qui ne peuvent pas être optimisées. Cela peut aider à identifier des améliorations potentielles du code, mais peut générer des faux positifs.
  • Wfloat-equal : Cet avertissement met en garde contre l'utilisation de comparaisons numériques exactes dans les opérations à virgule flottante, qui peuvent avoir des résultats incertains en raison de erreurs d'arrondi. Il se peut qu'il ne soit pas universellement applicable.
  • Wold-style-cast : Cet avertissement est déclenché par l'utilisation d'anciens styles de diffusion. Bien qu'il puisse aider à identifier des problèmes potentiels de portabilité, il peut également générer des faux positifs avec le code de la bibliothèque.
  • Wsign-conversion : Cet avertissement indique une conversion potentiellement dangereuse entre des entiers signés et non signés. Il est inclus pour des raisons de sécurité mais peut générer de nombreux faux positifs et nécessite une analyse minutieuse.
  • Wsign-promo : Semblable à Wsign-conversion, cet avertissement signale les promotions implicites d'entiers signés vers des types plus grands. Cela peut aider à identifier les problèmes de débordement potentiels.
  • Wswitch-default : Cet avertissement impose d'avoir une casse par défaut dans les instructions switch. Cela peut aider à garantir que tous les cas possibles sont traités, mais cela n'est pas toujours souhaitable.

Avertissements non inclus

Certains avertissements sont exclus de la liste par défaut pour diverses raisons :

  • Wabi : Non applicable dans les cas où la compatibilité binaire n'est pas un problème.
  • Waggregate-return : Non considéré comme une erreur, comme valeur de retour l'optimisation gère généralement tous les effets négatifs.
  • Wconversion : signale les conversions implicites, qui peut souvent être bénin.
  • Weffc : Peut générer trop d'avertissements lorsqu'il n'est pas initialisé tous les membres de données dans les listes d'initialisation.
  • Winline : Peut ne pas toujours utile pour l'optimisation des fonctions en ligne.
  • Winvalid-pch : Non applicable lorsque vous n'utilisez pas d'en-têtes précompilés.
  • Wmissing-format-attribute : Non utilisé lorsque vous ne travaillez pas avec les extensions GNU.
  • Wno-long-long : Peut ne pas être applicable pour C 0x et versions ultérieures versions.
  • Wpadded : Peut aider à optimiser la disposition des classes, mais n'est pas toujours pratique à maintenir.
  • Wstack-protector : Non utilisé sans utiliser -fstack-protector.
  • Wstrict-aliasing : Le niveau 3 est inclus dans -Wall mais peut ne pas être nécessaire.
  • Wswitch-enum : Non souhaitable pour toutes les instructions switch, car cela nécessite une gestion explicite des modifications d'énumération.
  • Wunsafe -loop-optimizations : Génère de nombreux avertissements parasites, effectuant une vérification manuelle nécessaire.
  • Wzero-as-null-pointer-constant : Un avertissement GCC-4.7 uniquement.

En comprenant les forces et les limites de ces avertissements , les développeurs peuvent les personnaliser pour les adapter au mieux à leurs pratiques de codage spécifiques et aux exigences du projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal