Сравнение статических анализаторов кода: CppCat, Cppcheck, PVS-Studio и Visual Studio

Популярное

Чтобы успешно пройти собеседование на должность менеджера продукта, вам нужно быть готовым к ряду вопросов
19 фев 2024
Стандартного формата собеседования для интрнет-маркетолога не существует. Процесс зависит от компании и интервьюера.
4 фев 2024
Чтобы освоить онлнай-маркетинг, необходимо приобрести знания и опыт в различных областях этой дисциплины. В этот набор навыков входят поисковый маркетинг, поисковая оптимизация (SEO), email-маркетинг, маркетинговая аналитика, маркетинг в социальных сетях, контент-маркетинг и многие другие.
16 янв 2024
Как и многие другие профессии, онлайн-маркетинг требует как основного набора сложных навыков (которые можно освоить относительно легко), так и более длинного списка карьерных качеств, на освоение которых могут уйти годы.
11 янв 2024
Цифровым маркетологам требуется обширный и разносторонний набор навыков цифрового маркетинга для разработки эффективных маркетинговых стратегий
10 янв 2024
Существует множество путей стать Digital-маркетологом. Хотя многие специалисты в этой области начинают свою карьеру с традиционных маркетинговых должностей, это не является обязательным правилом.
9 янв 2024
Digital-маркетологи занимаются использованием цифровых каналов для привлечения клиентов, увеличения узнаваемости бренда и продвижения товаров и услуг.
9 янв 2024
Современному маркетологу необходимо понимать, как использовать маркетинг роста и бренд-маркетинг в тандеме для достижения максимальной отдачи.
9 янв 2024
В последние годы область искусственного интеллекта сильно продвинулась вперед, и было разработано множество приложений, помогающих людям осваивать новые навыки.
6 апр 2023
Получение новых навыков имеет решающее значение для личного и профессионального роста.
4 апр 2023
Лучшие ресурсы для изучения Java для разработки игр зависят от стиля обучения и уровня опыта конкретного ученика.
2 апр 2023
В этой статье мы рассмотрим преимущества PBL и то, почему он становится важной частью образования.
31 мар 2023
Онлайн-курсы стали популярным способом повышения квалификации и расширения знаний, что в конечном итоге ведет к карьерному росту.
27 мар 2023
Обучение на протяжении всей жизни – это непрерывное стремление к получению знаний и развитию навыков на протяжении всей жизни. Он предлагает множество преимуществ, которые могут помочь людям полностью раскрыть свой потенциал и вести полноценную жизнь. Вот 12 основных преимуществ обучения на протяжении всей жизни
22 мар 2023
Баланс между работой, учебой и общественной жизнью может быть непростой задачей, но он необходим для поддержания психического и физического благополучия. Вот несколько советов по управлению своим временем и достижению здорового баланса
20 мар 2023
Технологии произвели революцию в том, как мы живем и учимся. В 21 веке технологии оказали глубокое влияние на образование, изменив способы доступа учащихся к информации, обучения и взаимодействия друг с другом. В этой статье мы рассмотрим 7 основных видов влияния технологий на образование и то, как они формируют будущее обучения.
18 мар 2023
В современном быстро меняющемся мире обладание необходимыми навыками является залогом успеха. Вот обзор наиболее важных навыков XXI века для учащихся и почему они так важны.
17 мар 2023
Обучение и память — это сложные процессы, в которых участвуют несколько частей мозга. Понимание того, как они работают, может помочь людям разработать более эффективные стратегии сохранения информации и улучшения функции памяти. Вот более пристальный взгляд на науку обучения и памяти
16 мар 2023
Чтобы стать продакт-менеджером, нет шаблонного пути. В Северной Америке менеджеры по продуктам имеют разный опыт работы, включая коммуникации, маркетинг и инженерию, и это лишь некоторые из них. Что общего у всех этих людей, так это то, что они овладели несколькими сложными навыками, включая исследование клиентов, способность определять рыночные возможности, а также моделирование продукта и составление дорожной карты, а также основные социальные навыки, необходимые менеджеру продукта, в том числе стратегические. мышление, лидерство, навыки общения и сотрудничества, и особенно эмпатия.
9 мар 2023
Учитывая чрезвычайно широкий спектр областей, в которых менеджеры по продукту участвуют или контролируют, вас не должно удивлять, что они должны быть знакомы с длинным списком цифровых инструментов. Многие из инструментов, на которые полагаются менеджеры по продуктам, практически повсеместно используются в современном офисе, в то время как другие более специфичны для процесса разработки или даже для самого управления продуктами и предназначены для помощи на определенных этапах процесса управления продуктами.
7 мар 2023

Сравнение статических анализаторов кода: CppCat, Cppcheck, PVS-Studio и Visual Studio

Время на прочтение статьи:
3 минут
Дата публикации: 20.12.2021

Авторы: Андрей Карпов, Евгений Рыжков, Павел Еремеев, Святослав Размыслов

Перевод статьи

Мы провели тщательное сравнение четырех анализаторов кода C / C ++: CppCat, Cppcheck, PVS-Studio и встроенный анализатор Visual Studio. Это серьезное, масштабное исследование, на которое мы потратили около 170 человеко-часов и которое, на наш взгляд, дает хорошее представление об общем состоянии дел в статическом анализе на сегодняшний день. К сожалению, мы больше не разрабатываем и не поддерживаем статический анализатор кода CppCat.

О сравнении

Для исследования мы отобрали более десяти тестовых проектов с открытым исходным кодом.

Каждый анализатор использовался с рекомендованными настройками уровней серьезности диагностических сообщений:

  • CppCat: вся диагностика включена (без уровней серьезности);
  • Cppcheck: ошибки и предупреждения;
  • PVS-Studio: 1-й и 2-й уровень общей диагностики;
  • Visual Studio: стандартные рекомендуемые правила Microsoft.

Мы внимательно изучили отчеты об анализе и выбрали те предупреждения, которые, казалось, указывают на настоящие ошибки или фрагменты кода, которые, по крайней мере, требуют тщательного изучения. Обобщенные результаты представлены в данной статье.

Подробно методика сравнения описана в статье: «Как мы сравнивали анализаторы кода: CppCat, Cppcheck, PVS-Studio и Visual Studio». В этой статье вы также найдете список тестовых проектов, список выбранных нами диагностических сообщений, примеры обнаруженных ошибок и так далее. Вы также узнаете из этой статьи, почему мы не предоставили информацию о количестве ложных срабатываний.

Результаты сравнения

Результаты сравнения анализаторов CppCat, Cppcheck, PVS-Studio и встроенного анализатора Visual Studio представлены в трех таблицах:

Таблица 1 - Количество обнаруженных подлинных ошибок (числовая форма)

 

Таблица 2 - Количество обнаруженных подлинных ошибок (процентная форма)

 

Таблица 3 - Время анализа (в минутах)

Время анализа

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

Как видите, Cppcheck - самый быстрый анализатор. Но обратите внимание, что в таблице показано общее время анализа. В некоторых проектах Cppcheck работал медленнее, чем другие анализаторы. Так что реальная скорость анализа, скорее, зависит от конкретного проекта.

CppCat на самом деле немного быстрее PVS-Studio, так как в нем меньше диагностических правил, которые нужно проверять. Но разница действительно незначительна (несколько десятков секунд), поэтому показывать ее в таблице мы сочли бессмысленной.

Диагностика

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

Как видно из таблицы, CppCat и PVS-Studio показали одинаковые результаты. Причина в том, что анализатор PVS-Studio с рекомендованными настройками использует тот же набор диагностик, что и CppCat.

Общее количество дефектов, обнаруженных анализаторами, составляет 742 для CppCat и PVS-Studio каждый; 193 для Cppcheck; 116 для Visual Studio.

Таким образом, CppCat и PVS-Studio выявляют в 4 раза больше ошибок, чем Cppcheck, и в 6 раз больше ошибок, чем встроенный анализатор Visual Studio.


Заключение

Анализаторы CppCat и PVS-Studio зарекомендовали себя лидерами по количеству выявленных истинных и потенциальных дефектов.


Ссылки

Evgeniy Ryzhkov, Andrey Karpov, Paul Eremeev, Svyatoslav Razmyslov. "How we compared code analyzers: CppCat, Cppcheck, PVS-Studio and Visual Studio".

Возврат к списку