web-dev-qa-db-fra.com

Ignorer tous les avertissements dans un fichier spécifique à l'aide de LLVM / Clang

Il y a des fichiers dans mon projet iOS qui ont des avertissements, et je veux ignorer ces avertissements. Je ne veux pas désactiver les avertissements dans l'ensemble du projet (savoir comment faire), juste certains fichiers spécifiques. Alors, existe-t-il un moyen d'ignorer complètement tous les avertissements d'un fichier spécifique?

J'utilise LLVM 3.0 et Clang sur Xcode 4.2.

68
bobbypage

si vous utilisez simplement clang, vous devez utiliser la syntaxe pragma pour les sources que vous gérez (en supposant qu'il est impossible de supprimer l'avertissement en modifiant le programme de manière appropriée).

voici la syntaxe:

#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wmultichar"

char b = 'df'; // no warning.

#pragma clang diagnostic pop

s'il s'agit de programmes que vous ne pouvez pas modifier et que vous ne maintenez pas, vous devez spécifier les avertissements à désactiver pour le fichier, plutôt que tous. pour tout désactiver, vous pouvez ajouter l'argument par fichier -w. les sources changent et certains avertissements s'appliquent (ou ne s'appliquent pas) avec différents paramètres de génération. Les messages de clang peuvent vous dire quel indicateur équivaut à l'avertissement généré.

Pour utiliser Xcode pour modifier les drapeaux de construction d'un fichier:

  • sélectionner la cible
  • sélectionner la phase de construction
  • recherchez le fichier pour modifier les arguments dans la phase "Compiler les sources"
  • double-cliquez sur sa cellule "Compiler Flags" pour éditer
63
justin

J'ai hérité d'un projet qui contenait beaucoup de code 320, et cette base de code m'a lancé plusieurs avertissements et erreurs d'analyseur statique que je n'avais aucun intérêt à corriger car je supprimerai ce code du projet dans un proche avenir.

Vous pouvez désactiver les avertissements de l'analyseur statique pour un fichier spécifique en incluant l'indicateur de compilateur suivant:

-Xanalyzer -analyzer-disable-all-checks

Vous pouvez combiner cela avec -w pour désactiver également les avertissements pour ce fichier. Cela m'a permis d'aller de l'avant avec de nouveaux développements sans avoir à être harcelé par la trentaine d'avertissements générés par cette base de code.

En utilisant les instructions ci-dessus: Pour utiliser Xcode pour modifier les drapeaux de construction d'un fichier:

  1. sélectionner la cible
  2. sélectionner la phase de construction
  3. recherchez le fichier pour modifier les arguments dans la phase "Compiler les sources"
  4. double-cliquez sur sa cellule "Compiler Flags" pour éditer
  5. ajouter "-w -Xanalyzer -analyzer-disable-all-checks" pour supprimer les avertissements et les avertissements de bruit
92
kcharwood

Avec l'aide de la réponse de Justin, voici comment vous faites

1. Localisez le nom de l'avertissement.

Dans mon cas, son conversion

enter image description here

2. Ajouter des phases de construction d'indicateur de compilateur par fichier

Utilisez le filtre pour trouver le nom du fichier dans les sources de compilation, tapez -Wno-[error name] par exemple. -Wno-conversion

enter image description here

21
Robert

Vous pouvez sélectionner une cible spécifique -> Paramètres de construction, rechercher Interdire tous les avertissements et définir sur OUI. Cela désactivera les avertissements sur cette cible. Cela peut être utile si vous utilisez du code comme JSONKit avec des cocoapods, et que vous ne voulez pas voir comment le compilateur pleure à propos des avertissements :)

2
dormitkon