2016-10-31 3 views
2

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

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

Мы используем стандарт унаследовали property page macros как $(SolutionDir) и $(ProjectDir), и определить наши собственные пользовательские (определяемые пользователем) макросы, а также (через Property Manager).

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

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

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

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

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

+1

Я создал билет на отслеживание ошибок Cppcheck для вас http://trac.cppcheck.net/ticket/7791#ticket – orbitcowboy

+1

@orbitcowboy Благодарим за подачу официального билета! –

ответ

3

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

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

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

+1

Я прикрепил к нему билет на молнию. –