PVS-Studio не обрабатывает заголовочные файлы

Я попытался выполнить статический анализ кода в своем проекте, который в основном состоит из файлов .hpp, поскольку там все «шаблировано», но, к сожалению, я получаю информацию от PSV-Studio о том, что файлы заголовков не могут быть обработаны. Это кажется немного странным. В современном C++ шаблоны повсюду, и AFAIC они в основном размещаются в заголовочных файлах. Я что-то упускаю? Есть ли способ настроить PVS-Studio для анализа заголовочных файлов?


person smallB    schedule 04.11.2012    source источник
comment
Почему бы не #include добавить свой заголовок в файл .cpp и не проанализировать его?   -  person Bo Persson    schedule 04.11.2012
comment
@BoPersson привет, я пробовал, но получаю сообщение об ошибке: Невозможно начать анализ этого файла. Жалость. Со стороны разработчиков этого продукта кажется большим упущением не анализировать заголовочные файлы.   -  person smallB    schedule 04.11.2012
comment
Невозможно запустить указывает, что он хочет обработать файл, но не может его запустить. Возможно, из-за того, что вы что-то сделали не так.   -  person Öö Tiib    schedule 04.11.2012
comment
@ÖöTiib Очень трудно сказать, правильно ли вы говорите. Невозможность запуска может означать, что он просто не может начать анализ этого файла. В наши дни было бы неплохо иметь несколько осмысленных сообщений об ошибках. Может быть, я делаю что-то не так. Может быть, но AFAIC, если я делаю что-то не так, то это определенно что-то не так с интерфейсом этой программы, в том смысле, что она позволяет мне делать то, что я не должен, и не указывает правильный путь.   -  person smallB    schedule 04.11.2012
comment
@smallB вам бы понравилось, если бы в нем говорилось, что предварительная обработка файла с помощью внешнего препроцессора перед анализом не удалась, а журнал препроцессора - это какая-то ссылка? Неудивительно, что вы ненавидите программное обеспечение, которое скрывает весь диагностический вывод внешних инструментов, которые они используют, за такими двусмысленными сообщениями. Урок усвоен, никогда не пишите такое сами.   -  person Öö Tiib    schedule 04.11.2012
comment
@ ÖöTiib Я бы предпочел, чтобы мне сказали, ПОЧЕМУ этот файл нельзя предварительно обработать, то есть причину этого. Я никогда не говорил, что я что-то ненавижу.   -  person smallB    schedule 04.11.2012
comment
@smallB студия PVS, скорее всего, не способна анализировать журнал диагностики препроцессора, вместо этого она просто переводит ненулевой результат препроцессора в невозможность запуска.   -  person Öö Tiib    schedule 04.11.2012
comment
@smallB есть шанс, что ты знаешь, что делают препроцессоры? Это связано с #включая файлы заголовков в файлах cpp.   -  person Öö Tiib    schedule 04.11.2012
comment
@ÖöTiib, ты хоть слушаешь, что я говорю? в этом конкретном файле cpp нет директивы include. Содержимое берется из заголовочного файла и вставляется в файл cpp.   -  person smallB    schedule 04.11.2012


Ответы (1)


PVS-Studio поддерживает анализ "шаблонных" кодов, даже если они не инстанцированы.

Однако PVS-Studio требует, чтобы файл был предварительно обработан для его анализа, т.е. все #includes и макросы должны быть развернуты перед анализом. Для этого PVS-Studio нужен компилируемый файл, т.е. файл, который передается компилятору вместе с необходимыми флагами компилятора (defines, include и т.д.). Одного заголовочного файла недостаточно, так как PVS-Studio не будет иметь достаточно информации для его корректной преобработки.

«Невозможно начать анализ этого файла», скорее всего, является ошибкой V008, означающей, что препроцессор завершил работу с ненулевым кодом, что означает, что файл, который вы пытаетесь проанализировать, не компилируется. Обычно PVS-Studio также выводит в качестве следующего сообщения причину ошибки (stdErr от процесса препроцессора). Подробнее об этом можно прочитать здесь.

person Paul Eremeeff    schedule 28.06.2016