Запуск анализа кода для драйверов

Анализ кода для драйверов предоставляет сведения о возможных дефектах в исходном коде. Анализ кода можно выполнять вручную, а также автоматически выполнять анализ кода при каждой сборке.

В этом разделе:

Запуск анализа кода

Выполнение анализа кода в исходном коде драйвера вручную

  1. В Visual Studio выберите файл проекта драйвера или решение, а также конфигурацию проекта и платформу для анализа.
  2. В меню Анализ или сборка выберите Команду Выполнить анализ кода в решении.

Выполнение анализа кода в исходном коде драйвера автоматически при каждой сборке

  1. В Visual Studio щелкните правой кнопкой мыши проект драйвера или решение в Обозреватель решений и выберите пункт Свойства.
  2. В диалоговом окне свойств проекта щелкните Анализ кода.
  3. На странице Анализ кода для C/C++ Properties (Анализ кода для C/C++ Properties) выберите конфигурацию проекта и платформу, которые требуется проанализировать (например, Windows 8 и Win32).
  4. Выберите Включить анализ кода для C/C++ в сборке.
  5. В разделе Набор правил выберите Microsoft Driver Recommended Rules (Рекомендуемые правила драйвера Майкрософт). Это набор правил по умолчанию для драйверов.
  6. В меню Сборка выберите пункт Сборка решения.

Просмотр результатов анализа кода

Если в исходном коде обнаружены возможные дефекты, в окне Результаты анализа кода отображается номер предупреждения анализа кода и номер строки в исходном файле, в котором возникает дефект.

Просмотр дефектов

  1. В окне Результаты анализа кода щелкните номер строки, и в окне Результаты анализа кода отобразится описание дефекта.

    В окне Код отображается исходный код и указывается место возникновения дефекта.

  2. Чтобы узнать больше о конкретном предупреждении, щелкните Предупреждение в окне Результаты анализа кода .

Просмотр файла журнала анализа кода, связанного со сборкой

  1. Перейдите в каталог конфигурации сборки и платформы (например, \\Windows7Release\\x64).
  2. Если вы используете рекомендуемые правила, файл журнала называется vc.\*codeanalysis.xml. Если вы создаете драйвер для Windows Server 2012, этот файл используется для создания журнала проверки драйвера.

Подавление отчета о дефектах

В некоторых случаях может потребоваться отключить отчет о конкретных предупреждающих сообщениях; Например, если предупреждение в основном является информационным и вы знаете причину ошибки.

Отключение предупреждающих сообщений

  1. Чтобы удалить экземпляр зарегистрированного дефекта, выберите номер строки и предупреждение в окне Результаты анализа кода .

  2. В развернутом описании предупреждения щелкните Действия>Подавить сообщение>В источнике.

    Директива pragma warning с описателем подавления подавляет предупреждение только для строки кода, которая сразу следует за оператором предупреждения #pragma.

    #pragma warning(suppress: 6014)
    

Изменение ограничений использования стека для предупреждения C6262 для драйверов в режиме ядра

В пользовательском режиме и коде в режиме ядра пространство стека ограничено, а сбой фиксации страницы стека вызывает исключение переполнения стека. Высокая загрузка стека особенно важна в режиме ядра, так как общее доступное пространство стека составляет всего 12 КБ. Код в режиме ядра должен активно ограничивать использование стека.

Средство анализа кода выдает предупреждение C6262 , если в функции локально используется более 1 КБ пространства стека. Если вы хотите исследовать функции, которые потенциально могут быть ресурсоемкими, можно настроить или уменьшить пороговое значение стека, используемое C6262. При снижении порогового значения стека средство анализа кода может обнаружить больше проблем. Затем можно решить проблемы с использованием стека. Например, можно снизить пороговое значение до 400 байт, чтобы узнать, используют ли другие функции ресурсы.

Настройка ограничения размера стека для C6262

  1. Откройте файл проекта Visual Studio (.vcxproj) для драйвера (или компонента) в режиме ядра в Блокноте или другом текстовом редакторе.
  2. Добавьте новую <группу ItemDefinitionGroup> для компилятора <ClCompile>.
  3. <Добавьте элемент PREfastAdditionalOptions> и задайте байты> stacksize<. Значение по умолчанию — stacksize1024.
     <ItemDefinitionGroup>
       <ClCompile>


      <!-- Change stack depth for C6262 from 1024 to 400 -->
      <PREfastAdditionalOptions>stacksize400</PREfastAdditionalOptions>

    </ClCompile>
  </ItemDefinitionGroup>
  1. Сохраните файл проекта. Запустите Visual Studio, загрузите обновленный проект драйвера и выполните анализ кода.

    Чтобы отменить изменения до 1 КБ по умолчанию, отмените изменения, внесенные в файл проекта, или измените значение размера стека на stacksize1024.

Предупреждения функции анализа кода для драйверов