Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Включает анализ кода и параметры управления.
Синтаксис
Общие параметры анализа:
/analyze[-]
/analyze:only
/analyze:quiet
/analyze:max_pathsnumber
/analyze:stacksizenumber
/analyze:WX-
Параметры подключаемого модуля анализа:
/analyze:pluginplugin_dll
Параметры анализа внешних файлов:
/analyze:external-
/analyze:external:rulesetruleset_files
Параметры журнала анализа:
/analyze:autolog[-]
/analyze:autolog:extextension
/analyze:loglog_path
Параметры формата файла журнала:
/analyze:log:format:sarif
/analyze:log:format:xml
Параметры содержимого файла журнала:
/analyze:sarif:analyzedfiles[-]
/analyze:sarif:configuration[-]
/analyze:log:compilerwarnings
/analyze:log:includesuppressed
Параметры набора правил:
/analyze:rulesetruleset_file
Параметры набора правил:
/analyze:projectdirectoryproject_directory
/analyze:rulesetdirectoryruleset_directories
/analyze:rulesetruleset_files
Аргументы
Общие параметры анализа
/analyze[-]
Включает анализ кода. Используется /analyze- для явного отключения анализа. /analyze- — это поведение по умолчанию.
По умолчанию выходные данные анализа отправляются в консоль или окно вывода Visual Studio, как и другие сообщения об ошибках. Анализ кода также создает файл журнала с именем filename.nativecodeanalysis.xml, где filename имя проанализированного исходного файла.
/analyze:only
По умолчанию компилятор компилирует код для создания файлов объектов перед выполнением анализа кода. Параметр /analyze:only делает компилятор пропускать передачу создания кода и напрямую выполняет анализ кода. Ошибки компилятора по-прежнему препятствуют выполнению анализа кода. Однако компилятор не сообщит о других предупреждениях, которые он может найти во время передачи кода. Если программа не является бесплатной от предупреждений создания кода, результаты анализа могут быть ненадежными. Этот параметр рекомендуется использовать только в том случае, если код передает проверки синтаксиса создания кода без ошибок или предупреждений.
/analyze:quiet
Отключает выходные данные анализа в консоли или окне вывода Visual Studio.
/analyze:max_paths number
Параметр number задает максимальное количество путей кода для анализа. Анализ по умолчанию — 256 путей. Более крупные значения приводят к более тщательной проверке, но анализ может занять больше времени.
/analyze:stacksize number
Параметр number задает размер в байтах кадра стека, который создает предупреждение C6262. Размер кадра стека по умолчанию составляет 16 КБ.
/analyze:WX-
Сообщает компилятору не обрабатывать предупреждения анализа кода как ошибки, даже если /WX этот параметр используется. Дополнительные сведения см. в разделе /WX (уровень предупреждений).
Параметры подключаемого модуля анализа
/analyze:plugin plugin_dll
Включает указанный подключаемый модуль анализа кода dll для анализа кода.
Пробел между /analyze:plugin файлом plugin_dll и путь к файлу необязателен, если путь не требует двойных кавычки ("). Например, можно написать /analyze:plugin EspxEngine.dll. Однако если путь заключен в двойные кавычки, между файлом и путь к файлу не может быть пробелом /analyze:plugin . Вот пример: /analyze:plugin"c:\path\to\EspxEngine.dll".
Подсистема анализа кода использует подключаемые модули для поиска определенных категорий дефектов. Модуль анализа кода поставляется со встроенными подключаемыми модулями, которые обнаруживают различные дефекты. Чтобы использовать другой подключаемый модуль с подсистемой анализа кода, укажите его с помощью /analyze:plugin параметра.
Подключаемый модуль LocalEspC.dll реализует проверки, связанные с параллелизмом. Эти проверки вызывают предупреждения в диапазоне C261XX, например C26100 до C26167.
Чтобы загрузить LocalEspC.dll, используйте параметр /analyze:plugin LocalEspC.dllкомпилятора.
Некоторые подключаемые модули, например EspXEngine.dll, которые поставляется с Visual Studio, используют расширения, которые могут выполнять дальнейший анализ. Visual Studio включает эти расширения для EspXEngine: ConcurrencyCheck.dll, , CppCoreCheck.dllEnumIndex.dll, HResultCheck.dllи VariantClear.dll. Они проверяют наличие дефектов для проблем параллелизма, нарушений CppCoreGuidelines, неправильного использования значений enum в качестве индексов, HRESULT значений или VARIANT значений соответственно.
При сборке в командной строке можно использовать Esp.Extensions переменную среды для указания расширений EspXEngine. Например:
set Esp.Extensions=ConcurrencyCheck.dll;CppCoreCheck.dll;
Используйте точку с запятой (;) для разделителя расширений, как показано в примере. Конечная точка с запятой не нужна. Можно использовать абсолютный путь к файлу для расширения или указать относительный путь из каталога, содержащего EspXEngine.dll.
Подключаемый EspXEngine.dll модуль использует для ConcurrencyCheck.dll реализации проверок кода, связанных с параллелизмом. Эти проверки вызывают предупреждения в диапазоне C261XX, например C26100 до C26167.
Если вы создаете в окне командной строки разработчика, сначала задайте Esp.Extensions переменную среды, чтобы указать ConcurrencyCheck.dll расширение:
set Esp.Extensions=ConcurrencyCheck.dll
Затем используйте параметр /analyze:plugin EspXEngine.dll компилятора для использования подключаемого модуля EspXEngine.
Параметры анализа внешних файлов
Начиная с Visual Studio 2019 версии 16.10, можно указать различные правила анализа и поведение для внешних заголовков. /external:I/external:envИспользуйте параметры или /external:anglebrackets каталоги, чтобы указать каталоги как внешние каталоги. Все файлы, включенные с помощью #include внешнего каталога или его подкаталогов, считаются внешними заголовками. Дополнительные сведения см. в разделе /external (Внешние заголовки диагностика).
Анализ кода предоставляет следующие параметры для управления анализом внешних файлов:
/analyze:external-
Пропускает анализ внешних файлов заголовков. По умолчанию анализ кода анализирует внешние файлы заголовков так же, как и другие файлы. /analyze:external- При установке параметра анализ кода пропускает все файлы, указанные как внешние, кроме шаблонов из внешних файлов. Шаблоны, определенные во внешних заголовках, обрабатываются как не внешние с помощью /external:templates- параметра. Этот /external:Wn параметр не влияет на анализ кода. Например, анализ кода анализирует внешние файлы и сообщает о дефектах даже при /external:W0 указании.
/analyze:external:ruleset ruleset_files
Параметр ruleset_files задает один или несколько файлов с запятыми-разделителями правил, используемых для анализа внешних файлов. Дополнительные сведения о наборах правил см. в разделе "Параметры для наборов правил".
Существует переменная среды (CAExcludePath), которая предоставляет аналогичную, но проще возможность пропустить анализ файлов в каталогах, указанных в переменной среды. Если каталог указан как в параметре, так /external:* и в переменной CAExcludePath среды, он считается исключенным, и /analyze:external* параметры не будут применяться к нему.
Параметры журнала анализа
/analyze:autolog[-]
Этот флаг используется для включения создания файла журнала анализа для каждого из анализируемых исходных файлов. Файлы журналов теперь создаются по умолчанию, поэтому этот флаг в основном избыточный.
При использовании он изменяет расширение журнала по умолчанию вместо *.pftlog .xml. Используется /analyze:autolog- для отключения ведения журнала в файлы.
/analyze:autolog:ext extension
Переопределяет расширение журнала анализа по умолчанию и использует extension его. Если вы используете .sarif расширение, файл журнала использует формат SARIF вместо формата XML по умолчанию.
/analyze:log log_path
Задает путь log_path к файлу журнала вместо автоматически созданного пути к файлу журнала. log_path Если путь имеет конечную обратную косую черту и ссылается на существующий каталог, анализ кода создает все файлы журнала в указанном каталоге. log_path В противном случае указывает путь к файлу. Путь к файлу указывает компилятору объединить журналы для всех проанализированных исходных файлов в указанный файл журнала. Если путь к файлу .sarif имеет расширение, файл журнала использует формат SARIF вместо формата XML по умолчанию. Это поведение можно переопределить с помощью параметра /analyze:log:format:*.
Параметры формата файла журнала
Начиная с Visual Studio 2019 версии 16.9, можно указать различные параметры формата журнала для анализа кода.
/analyze:log:format:xml
Принудительно использует формат журнала XML, который не относится к используемому расширению файла.
/analyze:log:format:sarif
Принудительно использует формат журнала SARIF, который не относится к используемому расширению файла.
Параметры содержимого файла журнала
Начиная с Visual Studio 2019 версии 16.9, можно указать различные параметры содержимого журнала для анализа кода.
/analyze:sarif:analyzedfiles[-]
Добавляет записи артефактов файлов в файл журнала SARIF для проанализированных файлов, которые не выдают предупреждения. Этот параметр по умолчанию отключен. Артефакты исходного файла и файлов, которые выдавали результаты, всегда включаются.
/analyze:sarif:configuration[-]
Добавляет записи конфигурации правила, чтобы определить, как пользователь переопределяет конфигурацию правила по умолчанию (отключено по умолчанию).
/analyze:log:compilerwarnings
Добавляет все дефекты подсистемы анализа, а также все предупреждения компилятора в файл журнала анализа. По умолчанию предупреждения компилятора не включаются в файл журнала анализа. Дополнительные сведения о предупреждениях компилятора во время анализа кода см. в параметре /analyze:only .
/analyze:log:includesuppressed
Добавляет в файл журнала анализа как отключенные предупреждения, так и неподдержительные предупреждения. По умолчанию отключенные предупреждения не включаются в файл журнала анализа. Если для анализа указаны файлы набора правил, предупреждения, отключаемые файлами набора правил, не включаются в журнал даже при /analyze:log:includesuppressed указании.
Параметры набора правил
/analyze:projectdirectory project_directory
Указывает текущий каталог проекта. Если набор правил (или элемент, который он включает) является именем файла, компилятор сначала ищет файл под указанным project_directory. Если он не найден, он выполняет поиск по указанному параметру ruleset_directories /analyze:rulesetdirectory, если таковой есть. Если набор правил (или элемент, который он включает) является относительным путем, компилятор сначала ищет файл в каталоге проекта. Если набор правил не найден, он выглядит в текущем рабочем каталоге. Этот параметр доступен начиная с Visual Studio 2019 версии 16.9.
/analyze:rulesetdirectory ruleset_directories
Задает разделенный точкой с запятой список путей поиска набора правил. Если набор правил (или элемент, который он включает) является именем файла, компилятор сначала ищет файл под project_directory указанным /analyze:projectdirectory, если таковой имеется, за которым следует указанный ruleset_directories. Этот параметр доступен начиная с Visual Studio 2019 версии 16.9.
/analyze:ruleset ruleset_files
Указывает один или несколько файлов набора правил, используемых для анализа. Этот параметр может сделать анализ более эффективным; подсистема анализа пытается исключить средства проверки, не имеющие активных правил, указанных в файлах набора правил перед выполнением. В противном случае подсистема запускает все включенные средства проверки.
/analyze:ruleset ruleset_file
Задает файл набора правил, используемый для анализа. Этот параметр может сделать анализ более эффективным; подсистема анализа пытается исключить средства проверки, не имеющие активных правил, указанных в файле набора правил перед выполнением. В противном случае подсистема запускает все включенные средства проверки.
Файлы набора правил, которые отправляются с Помощью Visual Studio, находятся в %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.
В следующем примере настраиваемого набора правил обработчик анализа проверяет наличие C6001 и C26494 и сообщает о них как предупреждения.
Этот файл можно поместить в любое место, если в аргументе указан полный путь.
Этот файл можно поместить в любое место, если указать полный путь в аргументе или в каталогах, указанных в /analyze:projectdirectory параметрах или /analyze:rulesetdirectory параметрах.
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description="New rules to apply." ToolsVersion="15.0">
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6001" Action="Warning" />
<Rule Id="C26494" Action="Warning" />
</Rules>
</RuleSet>
По умолчанию расширение файла для файлов набора правил — *.rulesetэто расширение. Visual Studio использует расширение по умолчанию при просмотре файлов набора правил. Однако можно использовать любое расширение.
Дополнительные сведения о наборах правил см. в разделе "Использование наборов правил", чтобы указать правила C++ для выполнения.
Замечания
Дополнительные сведения см. в разделе "Анализ кода для предупреждений C/C++" и "Анализ кода для предупреждений C/C++".
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Выберите страницу общего свойства анализа кода> конфигурации.>
Измените одно или несколько свойств анализа кода.
Нажмите кнопку "ОК" или "Применить", чтобы сохранить изменения.
Чтобы задать параметры анализа внешних файлов в Visual Studio 2019 версии 16.10 и более поздних версий:
Откройте диалоговое окно Страницы свойств проекта.
Выберите страницу свойств>конфигурации C/C++>External Includes.
Задайте свойства.
Отключение анализа кода для внешних заголовков задает
/analyze:external-параметр.Набор правил анализа для внешних заголовков задает
/analyze:external:ruleset pathпараметр.
Нажмите кнопку "ОК" или "Применить", чтобы сохранить изменения.
Установка данного параметра компилятора программным способом
- См. раздел EnablePREfast.
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC