1

我目前正在成为一名 TDD 黑客。作为其中的一部分,我认为像 Cobertura 生成的代码覆盖率报告是必不可少的工具。

但是,我的代码覆盖率有些臃肿,因为以下代码没有被正确覆盖:

if(logger.isLoggable(Level.INFO)) {
    logger.info("blah blah blah");
}

我在 Jenkins 和 Maven 中运行报告(不知道这可能是个问题吗?)。isLoggable(Level.INFO)(在我的情况下)总是正确的,因此它进入并记录。我希望能够跳过该部分或能够设置isLoggable(Level.XX)为真和假。

任何想法,提示等?也许我忽略了一些东西,一切都非常感谢!:)

[编辑] 似乎是 Maven cobertura 插件中的一个错误,应该在 2.6 中修复:http: //jira.codehaus.org/browse/MCOBERTURA-52 但 2.6 尚未发布,所以我只需要等待... [/编辑]

4

2 回答 2

1

当您检测类时,您可以忽略某些方法/调用。报告是在那之后的一步。

使用 ant 可以这样完成(文档中的示例)。Maven 可能具有相同的选项,但这取决于您使用的 Maven 插件。:

<cobertura-instrument todir="${instrumented.dir}">
    <ignore regex="java.util.logging.*" />
    <fileset dir="${classes.dir}">
        ...
    </fileset>
</cobertura-instrument>

您只需为要从检测中排除的包设置一个忽略正则表达式,这样它们就不会显示在报告中。

使用 Maven 这应该可以工作:

<instrumentation>
    <ignores>
       <ignore>java.util.logging.*</ignore>
    </ignores>
</instrumentation>
于 2012-07-13T09:20:42.140 回答
0

有一篇不错的文章详细解释了如何从 cobertura 仪器中排除日志记录调用。 http://fahdshariff.blogspot.gr/2010/01/cobertura-ignore-logger-calls.html 和一个类似的问题在这里发布:Exclude methods from code coverage with Cobertura

我认为您可能会发现这两个链接都很有用

于 2012-07-13T12:02:28.290 回答