Cobertura和跳过Jenkins中的Java日志记录(isLoggable)

Cobertura和跳过Jenkins中的Java日志记录(isLoggable),java,maven,logging,cobertura,java.util.logging,Java,Maven,Logging,Cobertura,Java.util.logging,我目前正在成为一名TDD黑客。作为其中的一部分,我觉得像Cobertura生成的代码覆盖率报告是一个必不可少的工具 但是,我的代码覆盖率有些过高,因为以下代码没有正确覆盖: if(logger.isLoggable(Level.INFO)) { logger.info("blah blah blah"); } 我正在Jenkins和Maven内部运行该报告(不知道这是否会成为问题?)isLoggable(Level.INFO)总是正确的(在我的例子中),因此它进入并记录。我希望能够跳过

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

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

if(logger.isLoggable(Level.INFO)) {
    logger.info("blah blah blah");
}
我正在Jenkins和Maven内部运行该报告(不知道这是否会成为问题?)
isLoggable(Level.INFO)
总是正确的(在我的例子中),因此它进入并记录。我希望能够跳过该部分,或者能够将
isLoggable(Level.XX)
设置为true和false

有什么想法、提示等吗?也许是我忽略了什么,一切都很感激!:)

[编辑] 似乎是Maven cobertura插件中的一个bug,应该在2.6中修复: 但是2.6还没有发布,所以我只能等待。。。
[/edit]

在插入类时,可以忽略某些方法/调用。报告是在这之后的一步

对于ant,这是这样做的(来自的示例)。Maven可能有相同的选项,但这取决于您使用的Maven插件:

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

...
您只需为要从检测中排除的包设置一个ignore regex,这样它们就不会显示在报告中

对于Maven,这应该是可行的:

<instrumentation>
    <ignores>
       <ignore>java.util.logging.*</ignore>
    </ignores>
</instrumentation>

java.util.logging*

在插入类时,可以忽略某些方法/调用。报告是在这之后的一步

对于ant,这是这样做的(来自的示例)。Maven可能有相同的选项,但这取决于您使用的Maven插件:

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

...
您只需为要从检测中排除的包设置一个ignore regex,这样它们就不会显示在报告中

对于Maven,这应该是可行的:

<instrumentation>
    <ignores>
       <ignore>java.util.logging.*</ignore>
    </ignores>
</instrumentation>

java.util.logging*

有一篇很好的文章详细解释了如何从cobertura instrumentation中排除日志调用。 在这里发布了一个类似的问题:


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

有一篇很好的文章详细解释了如何从cobertura instrumentation中排除日志调用。 在这里发布了一个类似的问题:


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

好主意,但我的代码无法通过审查:)好主意,但我的代码无法通过审查:)我正在使用maven()并尝试添加忽略,但没有任何效果,排除效果很好。有什么想法吗?此外,我正在使用java.util.logging(而不是log4j)。我知道,但我现在不打算更改它(除非这是我“修复”这个问题的唯一方法)。我知道ant方法是有效的,因此maven方法也应该有效,但我从来没有在maven中使用过它。。。但是它不起作用-如果我添加excludes,它将排除源文件(因此,检测部分工作,只是看起来忽略不起作用)…您在重试之前是否进行了清理?是的,我的conf已经存在。在做了大量的挖掘之后,我发现该插件的v2.2可以与ignore一起工作,但是f***其他所有东西-v2.3和new可以工作,但是f***与ignore一起工作:(我使用maven()并尝试添加一个ignore,但没有发生任何事情,排除可以工作。有什么想法吗?还有,我正在使用java.util.logging(不是log4j).我知道,但我现在不打算更改它(除非这是我唯一可以“修复”此问题的方法)。我将答案更改为java.util.logging。我知道ant方法可行,因此maven方法也应该可行,但我从未将其用于maven。这就是我所拥有的…但它不起作用-如果我添加它,它将排除源文件(因此插装部分可以工作,只是看起来忽略不起作用)…你在重试之前-清理了吗?是的,已经有了我的配置文件。在做了大量的挖掘之后,我发现插件的v2.2可以与忽略一起工作,但f***其他一切-v2.3和新的都可以,但f***与忽略一起工作:(我看过博客和问题,但它似乎没有跳过它们。我目前运行的是2.5.1版,但如果我回滚到2.2版(如在博客文章中),它会工作……可能是个bug?我看过博客和问题,但它似乎没有跳过它们。我当前运行的是2.5.1版,但如果我回滚到2.2版(如在博客文章中)它能用…也许是个虫子?