XPath和Jenkins Plot插件

4
我正在尝试使用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命名空间。


如果您提供一个小版本的XML文档,回答会更容易。我首先怀疑XML包含默认命名空间。 - Dimitre Novatchev
@DimitreNovatchev - 感谢您的评论。我已经在问题中附加了一个经过消毒的XML示例块。 - SDC
1
SDC,似乎还有其他人得到了空结果,并且他们的问题也没有得到解答-- 可能的结论是该插件中的XPath支持存在问题。您可以通过邮件列表联系插件开发人员:http://wiki.hudson-ci.org/display/HUDSON/Mailing+List%2C+Mailing+List - Dimitre Novatchev
1
SDC,是的,从我所读到的来看,它们似乎没有完整的XPath引擎,并且仅支持有限类型的XPath表达式,其中谓词只是一个数字--例如:/*/changeSet/item[1]/node/text() - Dimitre Novatchev
@DimitreNovatchev - 感谢您抽出时间来帮助我。有趣的是了解到它只是一个有限的xpath引擎;我甚至无法找到这个信息(我的谷歌功夫今天可能不太好)。您能给我一个URL吗?(如果您将其作为答案与您之前的评论一起发布,我会将其标记为已接受)。 - SDC
SDC:我没有找到任何关于所提供的XPath支持的语句或描述。然而,我只发现了一些被称为成功的XPath表达式的例子,它们都是非常简单的形式,谓词中有一个数字。这是一个包含这种证据的URL:https://issues.jenkins-ci.org/browse/JENKINS-626 - Dimitre Novatchev
1个回答

6
我最终实现的工作是以下内容:
我生成了一个报告文件,其中包含以下数据:
<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样式表,将你的文件转换为另一个具有期望格式的文件。


1
你好。感谢您回答这个问题——我已经完全忘记了这个问题——自从我发布它以来已经有一段时间了。与此同时,我通过使用不同的Jenkins插件(Task Scanner 插件),解决了这个问题,该插件可以计算'Todo'标记并生成一个图表而不接触我的XML。简单多了;我真希望早点知道这个插件。 - SDC
1
Plot插件可以生成一些漂亮的图表,但配置起来很困难,而且可能会很无聊。如果没有一些样式表机制能够将您的数据转换为正确的XML格式,几乎是不可能的。 - Orabîg
尽管我最终使用了完全不同的解决方案,但我接受了您的答案,并感谢您抽出时间回答我的问题。 - SDC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接