Cppcheck не расширяет макросы проекта Visual Studio

Чтобы автоматизировать анализ качества кода C++ в нашей компании, меня попросили интегрировать инструмент Cppcheck с нашим сервером SonarQube ( через плагин сообщества C++).

Для C++-части нашего основного продукта в Visual Studio у нас есть дюжина решений, почти по сотне проектов в каждом решении.

Мы используем стандартные унаследованные макросы страницы свойств, такие как $(SolutionDir) и $(ProjectDir), и определяем собственные пользовательские (определяемые пользователем ) и макросы (через Диспетчер свойств).

В настоящее время я пишу пакетные сценарии командной строки Windows для выполнения статического анализа кода отдельно для каждого решения. Идея состоит в том, чтобы запустить Cppcheck с таким параметром, как --project="solution_name.sln", а затем запустить сканер SonarQube для анализа сгенерированного вывода XML.

Но есть проблема. Кажется, что Cppcheck не распознает эти макросы $(SolutionDir) во время разрешения пути включения. (При запуске с параметром --check-config он жалуется на отсутствие включаемых файлов.)

К сожалению, оказалось, что я даже не могу предоставить дополнительные пути включения для решения, потому что параметры -I и --includes-file игнорируются при указании --project.

Как предполагается использовать Cppcheck с проектами Visual Studio в автоматизированной среде? Я говорю об интерфейсе командной строки (для использования на стороне сервера), а не об интерактивных плагинах (которые используются локально на машинах разработчиков).

Одним из возможных способов было бы создать сценарий Python для предварительной обработки сотен файлов проекта (*.vcxproj), заменив все эти макросы реальными путями (каждый раз после проверки из SVN и перед выполнением Cppcheck). Или есть правильный способ заставить Cppcheck распознавать макросы Visual Studio?


person heap underrun    schedule 31.10.2016    source источник
comment
Я создал для вас тикет в системе отслеживания ошибок Cppcheck trac.cppcheck.net/ticket/7791#ticket   -  person orbitcowboy    schedule 01.11.2016
comment
@orbitcowboy Спасибо за подачу официального билета!   -  person heap underrun    schedule 01.11.2016


Ответы (1)


Да, --project должен работать. Просто --project - это очень новая функция.

Я хотел бы иметь простое решение, чтобы я мог легко его воспроизвести. Не могли бы вы создать какое-нибудь простое решение с такой конфигурацией? никакого реального кода не требуется. Я думаю, что файла cpp только с #include, а затем с пустым заголовком может быть достаточно. Настройте его так, чтобы Visual Studio находила заголовок, а Cppcheck — нет.

Пожалуйста, прикрепите его к билету, созданному на сайте orbitcowboy.

person Daniel Marjamäki    schedule 06.11.2016
comment
Я прикрепил заархивированный пример к билету. - person heap underrun; 07.11.2016