Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Зависит ли результат статического анали…

Зависит ли результат статического анализа кода от используемого компилятора?

17 Дек 2009

В очередном обсуждении статических анализаторов кода мы как обычно :) упомянули наш инструмент PVS-Studio. Один из участников дискуссии задал вопрос: "А зависит ли вообще результат работы анализатора кода от используемого компилятора?". Ответ на этот вопрос значительно более сложен, чем кажется на первый взгляд. Поэтому и появилась эта запись.

Среды разработки Visual Studio 2005 и 2008 более не поддерживаются. Вы можете ознакомиться со списком поддерживаемых сред разработки в разделе документации "Системные требования анализатора PVS-Studio".

Короткий вариант ответа такой. Статический анализатор кода - это инструмент, который полностью не зависит от компилятора, использует свои технологии для разбора кода и поиска проблем в нем. Но это ведь в теории, а что на практике?

Во-первых, разработчики статических анализаторов кода очень часто "любят" одни средства разработки и оставляют в стороне (конечно же не заслуженно) другие. Например, если инструмент ориентируется на Windows-платформу, то очевидно работать с GCC он, скорее всего, не будет. Да даже и в рамках Windows-платформы инструмент, ориентированный на продукцию Microsoft, вряд ли сходу заработает с продукцией Embarcadero (это продолжатели дела Borland). Ведь если говорить, к примеру, о языке Си++, то производители разных компиляторов всегда имеют некоторые несовместимые нюансы. Возможно дело в размере стандарта Си++, возможно - в нюансах маркетинговых войн. Тем не менее, это так.

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

В-третьих, даже использование статического анализатора с одним и тем же средством разработки (компилятором), но разных версий также имеет свои нюансы. Например, у нас есть тесты для PVS-Studio, это порядка 30 приложений (90 проектов) в исходных кодах. Полная проверка этого набора с помощью нашего инструмента занимает в Visual Studio 2005 полтора часа, а проверка в Visual Studio 2008 - два часа. Разница в 1.4 раза! Откуда берется эта разница? Ответ получить очень просто, если выполнить препроцессирование всех проверяемых файлов и посмотреть получившийся размер. Сейчас это 1278 файлов. Размер препроцессированных в Visual Studio 2005 файлов составляет 4850 Мбайт, а в Visual Studio 2008 - 6850 Мбайт. Разница как раз в те самые 1.4 раза. То есть при абсолютно идентичном пользовательском коде за счет разницы в заголовочных файлах отличие конечного кода, который обрабатывает анализатор, составляет 1.4 раза.

Так что получается, что от используемого компилятора очень зависит, что же проверяет анализатор кода.

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form