Я запускаю cppcheck для своего кода в TeamCity и хочу сообщить об ошибках как о проблемах сборки. Поэтому я изменил формат вывода cppcheck на
"##teamcity[buildProblem\tdescription='{file}({line}):\t{severity}:\t{message}']"
Общая идея ок. Но проблема в том, что некоторые сообщения содержат символ ', и это вызывает ошибку при синтаксическом анализе вывода, потому что TeamCity требует экранирования апострофов. Например, вот выдержка из моего журнала сборки:
[17:20:05][Step 2/2] Checking ..\..\..\services_package\Services\FaultsManager\FaultsManager.c...
[17:20:14][Step 2/2] ##teamcity[buildProblem description='..\..\..\services_package\Services\FaultsManager\FaultsManager.c(83): style: The scope of the variable 'channelID' can be reduced.']
[17:20:15]
[Step 2/2] Property value not found
Valid property list format is (name( )*=( )*'escaped_value'( )*)* where escape symbol is "|"
[17:20:14][Step 2/2] ##teamcity[buildProblem description='..\..\..\services_package\Services\FaultsManager\CommonDef.h(32): warning: Redundant code: Found a statement that begins with numeric constant.']
О второй ошибке сообщается, а о первой нет. Я думаю, это потому, что первый содержит «идентификатор канала», и это сбивает синтаксический анализатор.
Как я могу заставить TeamCity красиво отображать сообщения об ошибках? Очевидно, я могу заставить его завершить сборку, если анализ не пройден, но я хочу, чтобы на странице обзора отображались значимые данные - количество ошибок, количество новых, список ошибок и т. д. (аналогично неудачным тестам).