CDash自定义动态分析

时间:2011-04-15 10:45:03

标签: cmake cdash

我正在尝试将自定义动态分析工具集成到CDash中。如KWStyle,CppCheck和Visual Leak Detector。

我发现我需要生成一个DynamicAnalysis.xml文件并将其从CTest脚本提交给CDash。

我想我知道如何将外部工具作为ctest脚本的一部分运行。

通过使用这些变量来改变ctest_memcheck()的工作方式 CTEST_MEMORYCHECK_COMMAND
CTEST_MEMORYCHECK_SUPPRESSIONS_FILE
CTEST_MEMORYCHECK_COMMAND_OPTIONS

或从execute_process()命令运行该工具。

但是我有点不确定要使用哪一个。

我认为我遇到的主要问题是,如何从自定义工具的输出中提取错误并将该信息包含在DynamicAnalysis.xml中以提交?

我看到的极端解决方案是我需要创建一个生成有效DynamicAnalysis.xml文件的程序。

但问题是我不知道XML文件中DefectList元素的语法。我没有找到谷歌的答案,甚至该文件的XML Schema都没有用。

编辑:

看着这个:
http://www.cdash.org/CDash/viewDynamicAnalysis.php?buildid=987149

引起我注意的是标签,特别是空标签。我不知道这些将来自DynamicAnalysis.xml文件。也许它跟踪任何曾出现的标签?我能以某种方式创建自己的自定义标签吗?

CDash会根据工具类型自动创建标签吗?这会阻止自定义缺陷类型吗?

我只是在这里猜测,所以问题是;我可以通过生成DynamicAnalysis.xml文件为我的自定义工具创建自定义标签。

我想到,与valgrind相比,来自CppCheck(静态代码分析)的不同错误数量是巨大的。我不确定我应该使用动态分析。也许自定义构建类型(连续/实验/夜间)可以更好地工作。像这样:
http://www.cdash.org/CDash/buildSummary.php?buildid=930174
我不知道如何做到这一点,我想它需要干涉CDash代码?

哪一种会更好用?

2 个答案:

答案 0 :(得分:1)

如果您正在使用valgrind,您只需将CTEST_MEMORYCHECK_COMMAND设置为valgrind的完整路径,当您调用ctest_memcheck时,ctest将从valgrind输出中为您生成DynamicAnalysis.xml文件。

理解DynamicAnalysis.xml文件中可能出现的值的最佳方法是分析CTest的源代码。

文件CMake / Source / CTest / cmCTestMemCheckHandler.cxx具有名为“cmCTestMemCheckResultLongStrings”的变量中的缺陷类型列表。在该文件中搜索对该变量的引用,以查看可能的值是什么以及它们如何用于生成“< Defect />” xml元素。

编辑(有关其他信息):

通过检查其源代码,您还可以轻松查看CDash期望的XML元素。具体来说,文件“CDash / xml_handlers / dynamic_analysis_handler.php”。

答案 1 :(得分:0)

从我到目前为止学到的是,对于在cmake脚本中进行的测试运行的工具,动态分析就是这样。

对于在整个程序上运行的工具,您需要自定义Build.xml。

我发现我可以使用FILES参数从ctest_submit命令提交这些文件。

我还发现您可以在Continuous,Nightly和其他方面添加自定义“构建名称”。

并且您可以将某些机器的构建设置为在这些机器下自动传输。

DynamicAnalysis下的自定义标签确实来自CDash中的某个地方,我不记得在哪里了。