2017-08-20 2 views
5

Je souhaite essayer d'utiliser le Core Guidelines checker tool sur un projet C++ 11/14, sous VS2015.Désactivation sélective C++ Core Guide Checker pour les bibliothèques tierces

Dans mon code j'utilise de nombreuses librairies de Boost qui déclenchent beaucoup d'avertissement. Je ne suis pas concerné par ces avertissements, puisque Boost fait beaucoup de travail très intelligent et que les bibliothèques n'ont pas été écrites dans le but de se conformer aux lignes directrices, dont elles sont la plupart du temps antérieures.

Mais avec un tel flot d'avertissements je suis incapable de trouver les vrais problèmes (au moins selon l'outil) dans mon code.

Existe-t-il un moyen de supprimer tous les avertissements pour le code tiers? Peut-être qu'il y a un attribut avant et après #including en-têtes de boost?

J'ai lu this page à partir du blog de l'équipe Visual C++, mais j'ai été incapable de le trouver.

+0

Vous pouvez supprimer les avertissements en fonction de leur type, n'est-ce pas? Va taper par type. – Ripi2

+0

Mais je ne veux pas désactiver ces avertissements pour mon code, je veux seulement les supprimer pour Boost ... – Francesco

Répondre

1

Il existe une variable d'environnement non documentée, CAExcludePath, qui filtre les avertissements des fichiers de ce chemin. Je cours généralement avec% CAExcludePath% défini sur% Include%.

Vous pouvez également l'utiliser MSBuild, voir ici pour un exemple (avec un succès mitigé): Suppress warnings for external headers in VS2017 Code Analysis

MSVC travaille sur quelque chose de similaire aux en-têtes du système de GCC qui devrait être une solution plus complète à ce problème.

1

Actuellement, dans VS, la fonctionnalité permettant de supprimer les avertissements des bibliothèques tierces est encore expérimentale mais certainement à venir.

VS 2017 version 15.6 Aperçu 1 est livré avec une fonction permettant de supprimer les avertissements des bibliothèques tierces. Dans l'article suivant, ils utilisent des "en-têtes externes" comme terme pour désigner les en-têtes des bibliothèques tierces.

https://blogs.msdn.microsoft.com/vcblog/2017/12/13/broken-warnings-theory/

L'article ci-dessus dit essentiellement que

  • spécifier les en-têtes externes
  • spécifier le niveau d'avertissement pour les en-têtes externes

pour supprimer les avertissements d'eux. Par exemple, si nous avons des en-têtes externes dans le répertoire some_lib_dir et que nous voulons compiler notre code en my_prog.cpp qui dépend des en-têtes externes, la commande suivante devrait faire le travail.

cl.exe /experimental:external /external:I some_lib_dir /external:W0 /W4 my_prog.cpp

Notez que /experimental:external est nécessaire parce que cela est encore une fonctionnalité expérimentale, et les détails de cette fonction peut changer à l'avenir.

Quoi qu'il en soit, nous devons attendre la prochaine version de Visual Studio.