2

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

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

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

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

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

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

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

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

但问题是我不知道 XML 文件中 DefectList 元素的语法。我没有找到谷歌的答案,甚至该文件的 XML 模式也无济于事。

编辑:

看这个:
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 代码?

哪一个会更好?

4

2 回答 2

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”。

于 2011-04-15T19:39:19.007 回答
0

从我目前了解到的情况来看,对于在 cmake 脚本中进行的测试运行的工具来说,动态分析就是重点。

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

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

我还发现您可以在 Continuous、Nightly 等旁边添加自定义“构建名称”。

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

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

于 2011-05-09T06:58:17.120 回答