Краткое руководство. Анализ кода для C/C++

Качество приложения можно улучшить путем регулярного выполнения анализа кода C или C++. Анализ кода поможет найти распространенные проблемы и нарушения надлежащей практики программирования. И, он находит дефекты, которые трудно обнаружить путем тестирования. Его предупреждения отличаются от ошибок компилятора и предупреждений: он ищет определенные шаблоны кода, которые, как известно, вызывают проблемы. То есть код, который является допустимым, но по-прежнему может создавать проблемы для вас или для других пользователей, использующих код.

Настройка наборов правил для проекта

  1. В Обозреватель решений откройте контекстное меню для имени проекта и выберите пункт "Свойства".

  2. При необходимости в списках конфигурации и платформы выберите конфигурацию сборки и целевую платформу.

  3. Чтобы выполнить анализ кода при каждом построении проекта с помощью выбранной конфигурации, выберите поле "Включить анализ кода на сборке" проверка. Вы также можете выполнить анализ кода вручную, открыв меню "Анализ кода", а затем выбрав команду "Выполнить анализ кода" вProjectName или выполнить анализ кода в файле.

  4. Выберите набор правил, который вы хотите использовать или создать настраиваемый набор правил. Если используется LLVM/clang-cl, см. раздел "Использование Clang-Tidy" в Visual Studio для настройки параметров анализа Clang-Tidy.

Стандартные наборы правил C/C++

Visual Studio включает следующие стандартные наборы правил для машинного кода:

Набор правил Description
Арифметические правила проверки ядра C++ Эти правила применяют проверка, связанные с арифметическими операциями из основных рекомендаций C++.
Правила проверки границ основной версии C++ Эти правила применяют профиль Bounds основных рекомендаций C++ .
Правила класса проверки ядра C++ Эти правила применяют проверка, связанные с классами из основных рекомендаций C++.
Правила параллелизма для проверки ядра C++ Эти правила применяют проверка, связанные с параллелизмом из основных рекомендаций C++.
Правила const проверки ядра C++ Эти правила применяют проверка, связанные с константами, из основных рекомендаций C++.
Правила объявления основной проверки C++ Эти правила применяют проверка, связанные с объявлениями из основных рекомендаций C++.
Правила перечисления основной проверки C++ Эти правила применяют связанные с перечислением проверка из основных рекомендаций C++.
Экспериментальные правила проверки ядра C++ Эти правила собирают некоторые экспериментальные проверка. В конечном итоге мы ожидаем, что эти проверка будут перемещены в другие наборы правил или полностью удалены.
Правила функции проверки ядра C++ Эти правила применяют проверка, связанные с функциями из основных рекомендаций C++.
Правила GSL для проверки ядра C++ Эти правила применяют проверка, связанные с библиотекой поддержки рекомендаций из основных рекомендаций C++ .
Правила времени существования проверки ядра C++ Эти правила применяют профиль времени существования основных рекомендаций C++ .
Правила указателя владельца на C++ Core Эти правила применяют проверка управления ресурсами, связанные с owner<T> основными рекомендациями по C++ .
Правила необработанного указателя на C++ Core Эти правила применяют проверка управления ресурсами, связанные с необработанными указателями из основных рекомендаций C++.
Правила проверки ядра C++ Эти правила применяют подмножество проверка из основных рекомендаций C++ . Используйте этот набор правил, чтобы включить все правила проверки ядра C++ за исключением наборов правил перечисления и экспериментальных правил.
Правила общего указателя на C++ Core Эти правила применяют проверка управления ресурсами, связанные с типами с семантикой общего указателя из основных рекомендаций C++.
Правила STL для проверки ядра C++ Эти правила применяют проверка, связанные со стандартной библиотекой C++ из основных рекомендаций C++.
Правила стиля проверки ядра C++ Эти правила применяют проверка, связанные с использованием выражений и инструкций из основных рекомендаций C++.
Правила типа проверки ядра C++ Эти правила применяют профиль типа основных рекомендаций C++.
Правила уникального указателя на C++ Эти правила применяют проверка управления ресурсами, связанные с типами с уникальной семантикой указателя из основных рекомендаций C++.
Правила проверки параллелизма Эти правила применяют набор шаблонов параллелизма Win32 проверка в C++.
Правила параллелизма Добавляет правила параллелизма из основных рекомендаций C++ в правила проверки параллелизма.
Минимальные правила Майкрософт Эти правила сосредоточены на наиболее важных проблемах в машинном коде, включая потенциальные дыры безопасности и сбои приложений. Мы рекомендуем включить этот набор правил в любой настраиваемый набор правил, создаваемый для собственных проектов.
Рекомендуемые правила Microsoft Native Эти правила сосредоточены на наиболее важных и распространенных проблемах в машинном коде. К этим проблемам относятся потенциальные дыры безопасности и сбои приложений. Мы рекомендуем включить этот набор правил в любой настраиваемый набор правил, создаваемый для собственных проектов. Этот набор правил предназначен для работы с выпуском Visual Studio Professional и более поздней версии. Он включает все правила в правилах microsoft Native Minimum Rules.

Visual Studio включает следующие стандартные наборы правил для управляемого кода:

Набор правил Description
Правила правильности Microsoft Basic Эти правила сосредоточены на ошибках логики и распространенных ошибках, сделанных в использовании API платформы. Включите этот набор правил, чтобы развернуть список предупреждений, сообщаемых минимальными рекомендуемыми правилами.
Правила руководства по проектированию Microsoft Basic Эти правила сосредоточены на применении рекомендаций для упрощения понимания и использования кода. Включите этот набор правил, если проект содержит код библиотеки или если вы хотите применить рекомендации по легко поддерживаемому коду.
Правила расширенной правильности Майкрософт Эти правила расширяют базовые правила правильности, чтобы максимально увеличить сообщаемую логику и ошибки использования платформы. Дополнительное внимание уделяется конкретным сценариям, таким как взаимодействие COM и мобильные приложения. Рекомендуется включить этот набор правил, если один из этих сценариев применяется к проекту или найти дополнительные проблемы в проекте.
Правила расширенного проектирования Майкрософт Эти правила расширяют основные правила руководства по проектированию, чтобы максимально повысить удобство использования и удобство обслуживания. Дополнительное внимание уделяется рекомендациям по именованию. Рекомендуется включить этот набор правил, если проект включает код библиотеки или если вы хотите применить самые высокие стандарты для написания поддерживаемого кода.
Правила глобализации Майкрософт Эти правила сосредоточены на проблемах, которые препятствуют правильному отображению данных в приложении при использовании на разных языках, языковых стандартах и языках и региональных параметрах. Включите этот набор правил, если приложение локализовано и /или глобально.
Минимальные правила, управляемые Корпорацией Майкрософт Эти правила сосредоточены на наиболее важных проблемах в коде, для которых анализ кода является наиболее точным. Эти правила являются небольшим числом, и они предназначены только для запуска в ограниченных выпусках Visual Studio. Используйте набор minimumRecommendedRules.ruleset с другими выпусками Visual Studio.
Рекомендуемые правила, рекомендуемые корпорацией Майкрософт Эти правила сосредоточены на наиболее важных проблемах в коде. К этим проблемам относятся потенциальные дыры безопасности, сбои приложений и другие важные ошибки логики и проектирования. Мы рекомендуем включить этот набор правил в любой настраиваемый набор правил, создаваемый для проектов.
Минимальные правила Microsoft Mixed (C++ /CLR) Эти правила сосредоточены на наиболее важных проблемах в проектах C++, поддерживающих среду CLR. К этим проблемам относятся потенциальные дыры безопасности, сбои приложений и другие важные ошибки логики и проектирования. Мы рекомендуем включить этот набор правил в любой настраиваемый набор правил, создаваемый для проектов C++, поддерживающих среду CLR.
Рекомендуемые правила Microsoft Mixed (C++ /CLR) Эти правила сосредоточены на наиболее распространенных и критически важных проблемах в проектах C++, поддерживающих среду CLR. К этим проблемам относятся потенциальные дыры безопасности, сбои приложений и другие важные ошибки логики и проектирования. Этот набор правил предназначен для использования в выпуске Visual Studio Professional и более поздних версий.
Правила безопасности Майкрософт Этот набор правил содержит все правила безопасности Майкрософт. Включите этот набор правил, чтобы максимально увеличить количество потенциальных проблем безопасности, сообщаемых.

Чтобы включить каждое правило, выполните следующие действия.

Набор правил Description
Все правила Майкрософт Этот набор правил содержит все правила. Выполнение этого набора правил может привести к большому количеству предупреждений. Используйте этот набор правил, чтобы получить полное представление обо всех проблемах в коде. Это поможет вам решить, какие из более ориентированных наборов правил наиболее подходящи для запуска для ваших проектов.

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

На странице "Анализ кода" диалогового окна "Свойства проекта" можно настроить анализ кода для выполнения при каждом создании проекта. Кроме того, можно запустить анализ кода вручную.

Чтобы запустить анализ кода для решения, выполните следующие действия.

  • В меню "Сборка " выберите "Выполнить анализ кода" в решении.

Чтобы запустить анализ кода для проекта, выполните следующие действия.

  1. В Обозреватель решений выберите имя проекта.

  2. В меню "Сборка" выберите "Выполнить анализ кода" вимени проекта.

Чтобы выполнить анализ кода в файле, выполните следующую команду:

  1. В Обозреватель решений выберите имя файла.

  2. В меню "Сборка" выберите команду "Выполнить анализ кода" в файле или нажмите клавиши CTRL+SHIFT+ALT+F7.

    Будет выполнена компиляция проекта или решения и запуск анализа кода. Результаты отображаются в окне списка ошибок.

Анализ и устранение предупреждений функции анализа кода

В окне "Список ошибок" перечислены обнаруженные предупреждения анализа кода. Результаты отображаются в таблице. Если дополнительные сведения о конкретном предупреждении доступны, первый столбец содержит элемент управления расширением. Выберите его, чтобы развернуть дисплей для получения дополнительных сведений о проблеме. По возможности функция анализа кода выводит на экран номера строк и логику анализа, вызвавшие предупреждение.

Подробные сведения об предупреждении, включая возможные решения проблемы, выберите идентификатор предупреждения в столбце "Код", чтобы отобразить соответствующую статью справки в Интернете.

Дважды щелкните предупреждение, чтобы переместить курсор в строку кода, вызвавшей предупреждение в редакторе кода Visual Studio. Или нажмите клавишу ВВОД в выбранном предупреждении.

Поняв, в чем заключается проблема, можно разрешить ее в коде. Затем повторно запустите анализ кода, чтобы убедиться, что предупреждение больше не отображается в списке ошибок.

Создание рабочих элементов для предупреждений анализа кода

Для регистрации ошибок в журнале из среды Visual Studio можно использовать функцию отслеживания рабочих элементов. Чтобы использовать эту функцию, необходимо подключиться к экземпляру Azure DevOps Server (ранее — Team Foundation Server).

Создание рабочего элемента для одного или нескольких предупреждений кода C/C++

  1. В списке ошибок разверните и выберите предупреждения

  2. В контекстном меню предупреждений выберите "Создать рабочий элемент" и выберите тип рабочего элемента.

  3. Visual Studio создает один рабочий элемент для выбранных предупреждений и отображает рабочий элемент в окне документа интегрированной среды разработки.

  4. Добавьте дополнительные сведения и нажмите кнопку "Сохранить рабочий элемент".

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

Можно выполнять поиск в длинных списках предупреждений, а также фильтровать предупреждения в решениях, состоящих из нескольких проектов.

  • Чтобы отфильтровать предупреждения по названию или идентификатору предупреждения: введите ключевое слово в поле "Список ошибок поиска".

  • Для фильтрации предупреждений по серьезности: по умолчанию сообщения анализа кода назначаются серьезности предупреждения. Вы можете назначить серьезность одного или нескольких сообщений в качестве ошибки в пользовательском наборе правил. В столбце "Серьезность" списка ошибок выберите стрелку раскрывающегося списка, а затем значок фильтра. Выберите "Предупреждение" или "Ошибка", чтобы отобразить только сообщения, назначенные соответствующей серьезности. Выберите "Выбрать все ", чтобы отобразить все сообщения.

См. также