【发布时间】:2025-12-23 15:00:11
【问题描述】:
我看到在 cobertura-maven-plugin 中,我可以使用 excludes 和 ignores 配置我的工具。这两者有什么区别?
【问题讨论】:
标签: cobertura
我看到在 cobertura-maven-plugin 中,我可以使用 excludes 和 ignores 配置我的工具。这两者有什么区别?
【问题讨论】:
标签: cobertura
真的很抱歉,但重复可怕的文档并没有帮助。你引用了:
您可以通过传入“忽略”正则表达式来告诉 Cobertura 忽略某些类。忽略模式可以是任何有效的 perl 5 正则表达式。这将忽略对与忽略正则表达式匹配的任何方法的任何调用。在检测期间它不会跳过这些类。要从检测中排除类,请将它们从文件集中排除或使用下面的替代方法并指定 excludeClasses 模式。
这个不一致的段落开头声明“...通过传入'ignore'正则表达式来忽略某些类。”,然后是第二句话,“这将忽略对任何与忽略正则表达式匹配的方法的任何调用。 "
嗯,那是什么? “忽略”是否忽略类或方法?命令行参考似乎暗示 ignore 正在忽略基于 RegEx 匹配的 行 代码(我希望这是真的):
这些解释都不适用于 maven 插件中的
通过实验我发现
【讨论】:
忽略和排除的功能完全不同。排除将从 Cobertura 的扫描中删除文件。 Ignore 将删除一个类的所有用法对行覆盖率的贡献。
考虑以下代码sn-p:
public class Foo {
public void someMethod() {
Bar bar = new Bar();
}
}
如果您配置
有点令人困惑的是,如果您配置
如果你配置了
要真正做到这一点,让我们谈谈为什么要使用忽略。假设您不想在任何类的代码覆盖率扫描中显示某个对象(例如 Logger)。忽略允许您这样做。
【讨论】:
maven 插件不包含此配置选项的任何文档(但它们包含在文档中)。 ant cobertura 文档包含以下文档:
您可以通过传入“忽略”正则表达式来告诉 Cobertura 忽略某些类。忽略模式可以是任何有效的 perl 5 正则表达式。这将忽略对与忽略正则表达式匹配的任何方法的任何调用。在检测期间它不会跳过这些类。要从检测中排除类,请将它们从文件集中排除或使用下面的替代方法并指定 excludeClasses 模式。
另请参阅:https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference#cobertura-instrument-task
【讨论】: