Чтобы автоматизировать анализ качества кода 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?