#c #visual-studio #static-code-analysis
#c #visual-studio #статический анализ кода
Вопрос:
Я пытаюсь использовать C Visual Studio /analyze
для выполнения статического анализа кода в моем проекте.
Основная проблема, с которой я сталкиваюсь, заключается в том, что подавляющее большинство предупреждений, которые я получаю, относятся к различным библиотекам, которые я включаю, таким как boost и protobuf, а не к моему коду.
Есть ли способ отфильтровать предупреждения по пути? (кроме копирования в текстовый файл и выполнения grep …)
Ответ №1:
Согласно Документам Microsoft, я предлагаю вам попробовать этот метод.
- Чтобы включить или отключить предупреждение об анализе кода
1. Создайте заголовочный файл, в котором перечислены все предупреждения анализа кода и их начальное состояние, как показано в следующем коде:
// WarningState.h
#pragma warning ( default : 6001 )
#pragma warning ( disable : 6011 )
// more warnings here
// end of file
2.Включить WarningState.h в заголовочном файле приложения. В данном случае, MyApplication.h представляет файл заголовка.
// MyApplication.h file
#include "WarningState.h"
// ...
// end of file
3.Включите MyApplication.файл h в файле исходного кода. В этом случае MyApplication.cpp представляет исходный файл.
// MyApplication.cpp file
#include "MyApplication.h"
4.To измените состояние предупреждения, используйте спецификатор предупреждения pragma в файле .cpp, как показано в следующем коде:
// MyApplication.cpp file
#include "MyApplication.h"
#pragma warning ( disable: 6001 )
#pragma warning ( default : 6001 )
- Чтобы отключить все предупреждения анализа кода для включенных сторонних файлов
Добавьте следующий код в свой заголовочный файл.
#include <codeanalysiswarnings.h>
#pragma warning( push )
#pragma warning ( disable : ALL_CODE_ANALYSIS_WARNINGS )
#include <third-party include files here>
#pragma warning( pop )
Комментарии:
1. Это действительно ужасное решение. Использование решений для анализа кода не должно зависеть от изменений в коде, чтобы заставить их работать должным образом
2. Честно говоря, я думаю, что копирование в текстовый файл и выполнение grep — лучший метод.