CDash Custom Динамический анализ - PullRequest
2 голосов
/ 15 апреля 2011

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

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

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

1008 * Либо с помощью этих переменных, чтобы изменить как ctest_memcheck () работает
CTEST_MEMORYCHECK_COMMAND
CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
CTEST_MEMORYCHECK_COMMAND_OPTIONS 1013 * или запустив инструмент из команды 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 ]

1 голос
/ 15 апреля 2011

Если вы используете 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".

0 голосов
/ 09 мая 2011

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

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

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

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

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

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

...