XPath和Jenkins Plot插件

时间:2012-01-20 12:02:41

标签: xml xpath hudson plot jenkins

我正在尝试使用Jenkins的Plot插件生成我们代码中有多少“TODO”标记的图表。

我有一个XML文件作为构建的一部分生成,其中包含有关它们的数据(以及其他内容):每个TODO标记在XML中都有一行,如下所示:

<tag line="3" name="todo" description="Do something with this"/>

使用独立的xpath工具,我可以使用表达式//tag[@name='todo']来获取所有匹配的元素,或者使用count(//tag[@name='todo'])来获取它们的数量。

此计数是我想要绘制的值。但是我无法将任何数据存入Jenkins的图表中。

我已经创建了图并指定它是一个XML文件。 Jenkins然后问我结果是Nodeset,Node,String,Boolean还是Number。

我认为“Nodeset”适用于//tag[@name='todo'],而“Number”适用于count(//tag[@name='todo'])。但是我已经尝试了它们,而且它们都给了我一个空图,没有绘制数据。

最令人沮丧的是Jenkins没有给我任何关于问题的反馈意见;只是空图。构建日志中没有任何内容,或者我可以看到的任何其他内容。

任何人都可以帮我解决这个问题吗?我在任何地方都找不到任何例子。看起来它应该很简单,但它不会发生在我身上。

提前致谢。

[编辑]

根据评论中的要求提供更大的XML示例:

<?xml version="1.0" encoding="utf-8"?>
<project>
  <method>
    <docblock>
      <tag line="763" name="todo" description="This needs doing"/>
    </docblock>
  </method>
  <method>
    <docblock>
      <tag line="14" name="todo" description="This also needs doing"/>
    </docblock>
  </method>
</project>

(我已经删除了不相关的元素和属性,但这是基本结构)

据我所知,那里没有任何XML命名空间。

1 个答案:

答案 0 :(得分:5)

我最终取得的成就如下:

我生成一个包含以下数据的报告文件:

<report>
  <serie1>10</serie1>
  <serie2>20</serie2>
  <serie3>30</serie3>
</report>

然后我使用以下配置配置我的绘图:

 XPath Result type : Nodeset
 XPath Expression : /report/*

然后我得到了一个正确的我的基准图:系列名称取自元素名称(serie1,serie2 ......),值取自文本内容。 实际上,这是帮助块中解释的内容:

 (...)
 If a nodeset is selected, a point for each node that is selected will be plotted.
 The label of each point is the name of the element that was selected, the value is the text value. 

我不认为这个插件能够从XML属性中获取值。也许您应该考虑编写一个简单的XSLT样式表,它将您的文件转换为具有预期格式的另一个样式。