CDash Custom Динамический анализ

Я пытаюсь интегрировать пользовательские инструменты динамического анализа в CDash. Такие как KWStyle, CppCheck и Visual Leak Detector.

Я понял, что мне нужно сгенерировать файл DynamicAnalysis.xml и отправить его на CDash из скриптов CTest.

Я думаю, что знаю, как запустить внешний инструмент как часть скрипта ctest.

Либо с помощью этих переменных, чтобы изменить, как работает ctest_memcheck()
CTEST_MEMORYCHECK_COMMAND
CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
CTEST_MEMORYCHECK_COMMAND_OPTIONS

или запустив инструмент из команды execute_process().

Но я немного не уверен, какой из них использовать.

Основная проблема, как мне кажется, заключается в том, как извлечь ошибки из выходных данных пользовательского инструмента и включить эту информацию в файл DynamicAnalysis.xml для отправки?

Крайнее решение, которое я вижу, заключается в том, что мне нужно создать программу, которая генерирует действительный файл DynamicAnalysis.xml.

Но проблема в том, что я не знаю синтаксис элемента DefectList в файле XML. Я не нашел ответа от Google, и даже XML-схема для этого файла бесполезна.

РЕДАКТИРОВАТЬ:

Глядя на это:
http://www.cdash.org/CDash/viewDynamicAnalysis.php?buildid=987149

Что привлекает мое внимание, так это этикетки, особенно пустые. Я не вижу, как они могут быть получены из файла DynamicAnalysis.xml. Может быть, он отслеживает какие-либо ярлыки, которые когда-либо появлялись? Могу ли я как-нибудь создать свои собственные ярлыки?

Создает ли CDash метки автоматически, в зависимости от типа инструмента? Блокирует ли это пользовательские типы дефектов?

Я просто догадываюсь здесь, поэтому вопрос в том; Могу ли я создать собственные метки для своего инструмента, просто сгенерировав файл DynamicAnalysis.xml.

Мне пришло в голову, что количество различных ошибок в CppCheck (статический анализ кода) огромно по сравнению, например, с valgrind. Я не уверен, что мне следует использовать динамический анализ. Может быть, лучше подойдет пользовательский тип сборки (Непрерывный / Экспериментальный / Ночной). Как это:
http://www.cdash.org/CDash/buildSummary.php?buildid=930174
Я понятия не имею, как это сделать, я думаю, что это требует вмешательства CDash-кода?

Какой из них будет работать лучше?

2 ответа

Решение

Из того, что я до сих пор узнал, является то, что для инструмента, который работает на тестах, выполненных в скрипте cmake, динамический анализ - это вещь.

Для инструментов, которые работают во всей программе, вам необходим пользовательский Build.xml.

Я обнаружил, что я могу зафиксировать эти файлы из команды ctest_submit с помощью параметра FILES.

Я также узнал, что вы можете добавить собственные "имена сборок" в сторону Continuous, Nightly и других.

И что вы можете настроить автоматическую передачу сборок с определенных машин под них.

Пользовательские ярлыки в Dynamic Analysis пришли откуда-то из CDash, я не могу вспомнить, где больше.

Если вы используете valgrind, вы можете просто установить для CTEST_MEMORYCHECK_COMMAND полный путь к valgrind, и ctest сгенерирует для вас файл DynamicAnalysis.xml из вывода valgrind при вызове ctest_memcheck.

Лучший способ понять возможные значения, которые могут появиться в файле DynamicAnalysis.xml, - это проанализировать исходный код CTest.

Файл CMake/Source/CTest/cmCTestMemCheckHandler.cxx содержит список типов дефектов в переменной с именем "cmCTestMemCheckResultLongStrings". Найдите в этом файле ссылки на эту переменную, чтобы увидеть возможные значения и то, как они используются для создания элементовxml.

РЕДАКТИРОВАТЬ (для дополнительной информации):

Вы также можете легко увидеть, какие XML-элементы ожидает CDash, изучив его исходный код. В частности, файл "CDash/xml_handlers/dynamic_analysis_handler.php".

Другие вопросы по тегам