Вопросы и ответы по PVS-Studio (PVS-Studio FAQ)
- При проверке группы проектов или отдельного проекта C или C++ выдаётся сообщение "Files with C or C++ source code for analysis not found."
- Я получаю множество сообщений "V001. A code fragment from 'file' cannot be analyzed", инструмент совсем не работает.
- Почему иногда проверка в несколько потоков (настройка ThreadCount) работает медленнее, чем при одном потоке?
- Почему инструмент имеет только Windows версию? В чём сложность анализа текстовых файлов (с кодом), полученных от разных компиляторов?
- У меня в Visual Studio Express Edition после установки не появилось меню PVS-Studio. Почему?
При проверке группы проектов или отдельного проекта C или C++ выдаётся сообщение "Files with C or C++ source code for analysis not found."
Не проверяются проекты, выключенные в общей сборке через окно Configuration Manager среды Visual Studio.
Для корректного анализа C или C++ проектов с помощью статического анализатора PVS-Studio эти проекты должны быть компилируемы в Visual C++ и собираться без ошибок. Поэтому при проверке группы проектов или отдельного проекта PVS-Studio произведёт анализ только для проектов, включённых в общую сборку.

Не включённые в сборку проекты будут пропущены. Если ни один из имеющихся проектов не включён в сборку, либо если выбрана проверка одного не включённого в сборку проекта, будет выдано сообщение "Files with C or C++ source code for analysis not found" и анализ не будет запущен. Посмотреть, какие проекты включены, а какие выключены в общей сборке можно с помощью окна Configuration Manager для текущего решения Visual Studio.
Я получаю множество сообщений "V001. A code fragment from 'file' cannot be analyzed", инструмент совсем не работает.
Анализатор не всегда может полностью проанализировать файл с исходным кодом. Это не всегда происходит по вине PVS-Studio и подробнее с причинами можно познакомиться в документации V001. В независимости от причины выдачи сообщения V001, это сообщение не критично. Как правило, неполный разбор файла не несущественен с точки зрения анализа. PVS-Studio просто пропускает функцию/класс с ошибкой и продолжает анализ файла. Непроанализированным остается совсем небольшой участок кода.
Почему иногда проверка в несколько потоков (настройка ThreadCount) работает медленнее, чем при одном потоке?
Анализатор PVS-Studio весьма требователен к объему операттивной памяти. Вероятно, анализатор сильно свопится и из-за этого все замедляется. Расчет примерно такой - на каждый экземпляр анализатора требуется 1.5 гигабайта оперативной памяти. Поэтому, к примеру, конфигурация 4 ядра и 2 гигабайта может работать гораздо медленнее, чем система с 2 ядрами и 4 гигабайтами памяти.
Количество используемых при анализе ядер можно задать в настройках PVS-Studio (опция ThreadCount).
Почему инструмент имеет только Windows версию? В чём сложность анализа текстовых файлов (с кодом), полученных от разных компиляторов?
Технически перенести код PVS-Studio.exe на другую платформу можно, так как никаких Windows-specific функции там почти не используются.
Для того чтобы сделать PVS-Studio для другой операционной системы нужно уметь обеспечить на той платформе уровень качества не ниже, чем на Windows-платформе. Для обеспечения уровня качества PVS-Studio мы используем много различных типов тестов: статический анализ, юнит-тесты, функциональные тесты, тесты UI и так далее. Убедиться в том, что на другой платформе анализатор ведет себя точно также как и на Windows, можно только пройдя все эти тесты. Тестирование анализатора составляет около 30% от общей цены разработки.
Кроме того следует учитывать, что файлы с кодом, обрабатываемые компилятором Visual C++, содержат определенные специфичные для данного компилятора конструкции. И PVS-Studio их поддерживает. В других компиляторах (например, GCC) есть также специфичные конструкции, которые надо будет поддержать. Это незаметный, но очень большой объем работ. То, что ключевое слово '__restrict' используется в 10 000 раз реже, чем 'for' вовсе не означает, что его можно не поддерживать. Многие программисты и не подозревают о таких вещах как __w64, __noop, __if_exists, __int3264, __uuidof, __based, __LPREFIX и так далее и так далее.
Наконец используемые наборы заголовочных (include) файлов в разных системах также различаются. И если PVS-Studio работает с заголовочными файлами Visual C++, то это совершенно не значит, что также все будет работать с заголовочными файлами GCC.
Подведем итог. Разработать PVS-Studio для другой платформы можно, но это серьезная задача, которой мы заниматься не планируем. Если же клиенту интересно иметь PVS-Studio для альтернативной платформы, мы можем за его счет разработать такое решение.
У меня в Visual Studio Express Edition после установки не появилось меню PVS-Studio. Почему?
Никакая версия Visual Studio Express Edition не поддерживает подключаемые модули расширений – это ограничение данной редакции Visual Studio и PVS-Studio здесь ни при чём.